极验4滑块 微步xx网站

微步xx登录 极验4滑块分享

1.分析发包

目标网址(base64):aHR0cHM6Ly9wYXNzcG9ydC50aHJlYXRib29rLmNuL2xvZ2luP3NlcnZpY2U9eCZjYWxsYmFja1VSTD1odHRwczovL3gudGhyZWF0Ym9vay5jb20vdjUvbm9kZS9kYjNmYWU3ZDJkZDE0YmYwLzg5NjNjNzBmMmI3MTAxOWI/cmVkaXJlY3RVUkw9aHR0cHMlM0ElMkYlMkZ4LnRocmVhdGJvb2suY29tJTJGdjUlMkZkb21haW4lMkZkdS50ZXN0amouY29t

首先观察滑块的发包流程:

load数据包

有个load 是 最开始加载的验证码文件

其中的参数有这些 我们可以定死他 没啥可说的 challenge 实际上是一个uuid

2

我们再看其中返回的数据预览中有:

bg: 是我们的背景图片url

slice: 是我们的滑块的图片url

下面这些我们在 入参计算w的时候 需要使用到

  1. payload:
  2. pow_detail:
  3. process_token:

1

verify数据包

verify数据包 是我们 滑动滑块发送的数据包 最主要的是w的生成 其他的部分可以固定 ,部分是上一步load的返回值而来的

当然w参数是加密生成的。

携带的参数如下

callback: geetest_1709121487735
captcha_id: 66c1b4d0e33195fd0331baeb26f25999
client_type: web
lot_number: 09a9cbb7d5ea44629d144b25a1e27ab5
payload: _b-sD20eax9oEJvmoMxvFIlWwstsfUliHhIXFQozmuCmfjHnrPeNMyWVx0VOqk3Qh86KiiACQ9xtkrEdo7OsubSvp-fqGaU7vd5P6f-UYOGg8y3hkVAprYzmlCIJlyzAGoufT3SEvO6cV7IvmDTj3QpVik0Kw6-QatL-tabGd8jHHESr-g28ooftfBwmMMuFZ6jUM6PNWzWemsCaKFfuSCqlHM_UdHGYweM0WaYwXd52Vd_0ywC-bcvN8Ow3sIYNKnv825FaDtG-UqLpd-UuYvtkJ-wqW5AGveW3REU7kAcOVvqgOBBlP3scCSAxRn-gRgqHFs9TUrwNX5WVA-K0-lZrNVeI7PaGnUD2aS4sY0Yq9yBmKYyQWY3Rmsvs0UGi5QP9OIhnKmpEW77immO3M3R8X7vX49T4kY5oYzaCt2VS-HMGl9WXxkh0j9VNjdLmNwpDk9Q2dc-3xeYHbJdcyyJczafP0t5KV-ibWHBzsAW4vUjk08rTtsXjEX-N-89vAicPyJGuOwMM-tS1UpNGtpKmm2GErzA-YgQgaWvMPTRPuQFJ7TZACkW9CWGR3IE0eK2KfriOzOksZLc9rPl_cDa6hyzG2VhEKn0tXgBDMASSg894FEUNuzYgH0GsOlm2C7F4SyKDLgOwPuTb6CwzbmAt1iViowvQRTP4Apj720L74bolsRkZADF3WJYNIrHkuNy-HyG3pUf5F-Rm_HS-RP7eJYlYf_dcBGf_CLzXWsi5V3lSpMNoI9SCB1uN5w9zVQay-sJZtr82e6l6Dk24GnCMbNuIDjuuhqkKri7DFgMjS0Ssvvykx15IbEnpD2Uejaylz5qThMKXX3VzJhVNNkmGI9rbXciEmhAkIccj1zg=
process_token: 04cdbd304a986513394f2cbe27be168697bef744d6383dd3bac8be0c48629b59
payload_protocol: 1
pt: 1
w: f8bccc8290e232ef1d7c6fe451095fd325df137caac77d2b864fcbb81e593e9d6fae7f18bfb707ae27fef4f43f78624a0fe1619bbca0ee4902bca8e965f22aa40b9b864d00689b66483b4896c8d08ac770eb68654b3f5fcefa6ebea23fd926fc6812ae4b8a9b00a9185a6d58fcac21e5fa75e8d3db276bcf42329ae5104ade4113590910c22ff51d3c6a500456112eef2ed5a4ea5776d90c32a5449b07e96d4270babcaa2f6a3e79f3ebcc61fd89d46c24dabe1ccf6c1b7a69a156ff2a0bb2972d975d20d447124db3f652982fa66da878dc14ea546e87b5a174b1746fc064cc76cb942bb1ac25d4c98686838250c1583ba709ea67ce6318c8be253835c8ae78826017d5c15ba0c624702715a4d26dcc30726a0585807a5e7afcae6e9a856f1aead7e37cfa5a154cc31819ec3e57be7a1318abadaeb34b38bf965bd1c801a5dcb5fd4380027efba037510e7aeebff92df5d8504a51490d389c3e743be92e77780dabee8fddbb5fa7a7bfb5451298a3f11eea7d7afe049114cefb8b0aadfe820b6f53c3b02121324a24911ab9aac2f6ab2a864080c88041ffba7463960079a45298329dd3e138bd87b5a3c2729415a79e7a3b86f3105e2c8e0e996eb2fe754085997edbfadce94c15d4a38cf27626e01d2fdee283d4cb3a3ec2499537eec73781acedfdd2d1f16748f80e580dcd0e80830bb03b5d079ff92db93c2281df8fa5a9d7d8b052310f1994c34923f3a1fe5875100709b18084cd49b51897e9c1d98293a205d94fc64805978d142fb85ef78d4969ac77c8822eb080f99a859187aa79b7

如果成功会返回:

3

result中的seccess 结果

2.w的如何生成的?

在verify 的启动器中下断点

4

我们逐步跟调用栈

5

至此我们的 w的生成找到了是 i

而i 是由这断代码生成的

var i = (0,
                                m[$_BIBCb(42)])(f[$_BIBDw(42)][$_BIBDw(593)](e), n)
//f[$_BIBDw(42)][$_BIBDw(593)](e) 等价于JSON.stringify(e)

参数 e 是: setLeft 是滑块的距离, passtime 是通过的时间,userresponse

8

其余的 lot_number 是load文件返回的

“pow_msg”:

“pow_sign”: 现在这两个 pow 还不知道是什么 userresponse 和 setLeft passtime 现在 也没找到生成的位置

{
    "setLeft": 18,
    "passtime": 84,
    "userresponse": 42.558810274898605,
    "device_id": "",
    "lot_number": "143288d4e28f43b8aebfd6d2631898a7",
    "pow_msg": "1|0|md5|2024-02-28T20:20:14.274025+08:00|66c1b4d0e33195fd0331baeb26f25999|143288d4e28f43b8aebfd6d2631898a7||f6d3f00cca4ed25f",
    "pow_sign": "6fefb89a77255efa47e6c331aad77f94",
    "geetest": "captcha",
    "lang": "zh",
    "ep": "123",
    "biht": "1426265548",
    "bvOU": "pIFQ",
    "em": {
        "ph": 0,
        "cp": 0,
        "ek": "11",
        "wd": 1,
        "nt": 0,
        "si": 0,
        "sc": 0
    }
}

参数n:是一堆方法

接着跟栈 我们跟到pow 两个参数的生成位置了:

6

那么先看一下吧生成的算法吧:我们发现他是从s中取出来的 ,所以我们跟他那个括号的数字 598

7

a[ B G C I n ( 497 ) ] [ _BGCIn(497)][ BGCIn(497)][_BGCHW(519)] = o, powMsg
a[ B G C H W ( 497 ) ] [ _BGCHW(497)][ BGCHW(497)][_BGCIn(598)] = u powSign

由图所以 r = (0,d[ B G C H W ( 42 ) ] ) ( n , i , s [ _BGCHW(42)])(n, i, s[ BGCHW(42)])(n,i,s[_BGCIn(506)], s[ B G C I n ( 579 ) ] , s [ _BGCIn(579)], s[ BGCIn(579)],s[_BGCIn(504)], s[$_BGCHW(523)], $_BGCIn(67))

这个是我们的关键 手动解混淆后 /r = (0, d[$_BGCHA(34)])(lotNumber, captchaId, ‘md5’, ‘1’, 0, ‘2024-02-27T23:25:26.128006+08:00’, ‘’)

再回过头来看 load中的 返回值 这不就对上了嘛。

​ pow_detail: {version: “1”, bits: 0, datetime: “2024-02-28T20:17:19.283620+08:00”, hashfunc: “md5”}

所以我们解决掉这个 (0,d[$_BGCHW(42)]) 就ok了嘛

3.webpack解决 pow等加密

因为 加密函数 是由,d[$_BGCHW(42)]) 所以我们搜d = 发现他使用webpack对其进行加载了

9

webpack全扣代码:

进来后i是webpack的加载器:

10

11

本地运行成功:

12

4.webpack得到w参数计算

"w": i

var i = (0,
                  m[$_BIBCb(42)])(f[$_BIBDw(42)][$_BIBDw(593)](e), n)


m = n(31) 这边可以直接webpack直接导出即可

我自己是进入 m[$_BIBCb(42) ]这个里面分析了一遍

function i(e, t) {
  var s = t.options;
  // if (!s.pt || "0" === s.pt) return c.default.urlsafe_encode(e);
  var n = '2e96d12843135752'; //定死随机数
  var i = new d.$_Hi(["1", "2"]); //数组  r的原型...
  var r = {
    "1": {
      "symmetrical": h.default,
      "asymmetric": new p.default()
    },
    "2": {
      "symmetrical": new l.default({
        "key": n,
        "mode": 'cbc',
        "iv": '0000000000000000'
      }),
      "asymmetric": f.default
    }
  };//  加密
  if (i.$_CCr(s.pt)) {
    var o = true;
    var a = 1;

     //rsa加密
    var _ = r[a].asymmetric.encrypt(n);

    while (o && (!_ || 256 !== _.length)) {
      n = '2e96d12843135752';
      _ = new p.default().encrypt(n);
    }

    //   aes加密
    var u = r[a].symmetrical.encrypt(e, n);
    return (0, d.arrayToHex)(u) + _;
  }
}

最后 这个是生成w的主要函数

function m_default(e) {
  var n = '2e96d12843135752'; //定死随机数
  var encrypt_data = window.fan(33).default.encrypt(e,n)
  // console.log(window.fan(0).arrayToHex(encrypt_data))
  // arrayToHex

  var p = window.fan(34)
  var asymmetric = new p.default()
  var _ = asymmetric.encrypt(n);
  // console.log(_)

    return window.fan(0).arrayToHex(encrypt_data) + _;
}

5.图片识别 图腾api识别 没打广告哈

网址:https://www.tutengocr.com/

识别坑点需要减掉大约 13 左右像素:(可能有10几个px的误差)

juli = int(get_distanX()['data']) - 13
print(juli)

6.最后附上成功图!

13

ypt_data) + _;
}


## 5.图片识别 图腾api识别 没打广告哈

网址:https://www.tutengocr.com/


识别坑点需要减掉大约 13 左右像素:(可能有10几个px的误差)

juli = int(get_distanX()[‘data’]) - 13
print(juli)


## 6.最后附上成功图!

[外链图片转存中...(img-hkpuyshm-1709126307529)]

## 
  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
微步卷积是一种新型卷积算法,采用了微观核心对卷积算法进行优化,能够提高图像识别等任务的准确性。在PyTorch中,可以通过使用nn.Conv2d函数来实现微步卷积。以下是一个简单的例子: ``` import torch import torch.nn as nn class MicroConv2d(nn.Module): def __init__(self, in_channels, out_channels, kernel_size, stride=1, padding=0, groups=1, bias=True): super().__init__() self.kernel_size = kernel_size self.stride = stride self.padding = padding self.groups = groups self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=self.kernel_size, stride=self.stride, padding=self.padding, groups=self.groups, bias=bias) def forward(self, x): x = nn.functional.unfold(x, kernel_size=self.kernel_size, stride=self.stride, padding=self.padding) batch_size, _, L = x.shape w = torch.randn(self.groups, L, self.conv.out_channels // self.groups, device=x.device) w = torch.softmax(w, dim=1) x = x.permute(0, 2, 1) x = x.view(batch_size * L, self.groups, 1) w = w.view(self.groups, 1, self.conv.out_channels // self.groups) out = torch.matmul(x, w) out = out.view(batch_size, L, self.conv.out_channels).contiguous() return out ``` 在这个例子中,MicroConv2d继承了nn.Module,并实现了__init__和forward两个函数。在__init__函数中,我们定义了卷积核大小(kernel_size)、步长(stride)、填充(padding)、卷积组数(groups)和是否使用偏置(bias)等参数,同时使用nn.Conv2d函数来定义实际的卷积层。在forward函数中,我们首先使用functional.unfold函数将输入张量变成一个二维矩阵,然后使用随机权重w对输入进行卷积操作,最后将结果reshape成卷积层的输出形状。在卷积操作中,我们使用了softmax函数对随机生成的权重进行了归一化处理,以提高模型的稳定性。 使用该类进行微步卷积操作的示例代码如下: ``` import torch import torch.nn as nn x = torch.randn(1, 3, 32, 32) conv = MicroConv2d(3, 64, kernel_size=3, stride=1, padding=1, groups=8) out = conv(x) ``` 在这个例子中,我们随机生成了一张3通道、32x32大小的图片作为输入,然后使用MicroConv2d函数定义了一个微步卷积层,并输入我们生成的图片进行卷积操作。最终,out张量的形状为1x64x32x32,表示输出了64个通道,每个通道的大小为32x32。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值