Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

爬虫研究分析-请求包含验证参数 #3

Open
ggymm opened this issue Aug 11, 2021 · 1 comment
Open

爬虫研究分析-请求包含验证参数 #3

ggymm opened this issue Aug 11, 2021 · 1 comment
Labels
爬虫 爬虫技术学习和研究

Comments

@ggymm
Copy link
Owner

ggymm commented Aug 11, 2021

爬虫-请求包含验证参数

目标网站

某修改运动步数网站

目的

使用接口发送请求或者自动化

(暂不清楚)

分析网络请求

打开Network视图

找到请求修改步数接口

image

请求包含sing字段,应该是用作验证请求是否合法

定位加密方法

首先定位到发送请求的JS文件

image_1

点击左下角大括号,格式化JS文件

image_2

定位到加密方法

image_3

解析加密方法

稍微格式化一下加密方法

_0x4dd058[_0x3122('0xb1')](
  md5,
  _0x4dd058[_0x3122('0xf3')](
    _0x4dd058[_0x3122('0x37')](
      String(_0x4dd058[_0x3122('0x94')](_0x4dd058[_0x3122('0x3e')](parseInt, _0x136350, '10'), 0x16)) +
      _0x4dd058[_0x3122('0xb1')](String, _0x3f5e81) +
      String(_0x5c2e93),
      _0x4dd058[_0x3122('0x77')](String, _0x4dd058[_0x3122('0x64')](_0x5ea5ce, 0x3e8))
    ),
    _0x4dd058['Eygbd']
  )
)

经过分析,首先要确认如下变量

_0x3122('0xb1')
_0x3122('0xf3')
...

在console执行命令

image_4

发现结果都是字符串,那么猜测_0x4dd058应该是一个object,根据这里的key取对应的方法

同样在console中执行_0x4dd058,结果为未定义

全局检索_0x4dd058 = 寻找在何处进行定义

image_5

继续检索_0x260d9f =

image_6

至此,已经非常清晰了,再看一遍加密方法

_0x4dd058[_0x3122('0xb1')](
  md5,
  _0x4dd058[_0x3122('0xf3')](
    _0x4dd058[_0x3122('0x37')](
      String(_0x4dd058[_0x3122('0x94')](_0x4dd058[_0x3122('0x3e')](parseInt, _0x136350, '10'), 0x16)) +
      _0x4dd058[_0x3122('0xb1')](String, _0x3f5e81) +
      String(_0x5c2e93),
      _0x4dd058[_0x3122('0x77')](String, _0x4dd058[_0x3122('0x64')](_0x5ea5ce, 0x3e8))
    ),
    _0x4dd058['Eygbd']
  )
)

将_0x4dd058替换为_0x260d9f进行检索即可得到每一层的方法逻辑

例如

从最外层方法_0x4dd058[_0x3122('0xb1')]替换为_0x260d9f[_0x3122('0xb1')]。得到方法逻辑如图

image_7

据此,替换每一层方法,得到化简后的加密方法如下

const account = "账号"
const password = "密码"
const step = "步数"
const time = Date["parse"](new Date())
md5(String(parseInt(account, 10) + 0x16) + String(password) + String(step) + String(time / 0x3e8) + "422")

测试

输入如下信息后发送请求

账号:18888888888

密码:18888888888

步数:999999

查看Network面板得到

时间戳:1628655276

sing:5eba2de213710d18d51e22db732b0674

构造加密函数

md5(String(parseInt("18888888888", 10) + 0x16) + String("18888888888") + String("999999") + String(1628655276000 / 0x3e8) + "422")

在浏览器console面板中计算结果和sing字段结果一致

image_8

结束

@ggymm ggymm added the 爬虫 爬虫技术学习和研究 label Aug 11, 2021
@ggymm
Copy link
Owner Author

ggymm commented Aug 25, 2021

2021-08-25 发现加密方式改了,不过换汤不换药

md5(String(parseInt("18888888888", 10) + 666) + String('18888888888') + String('999999') + String(1629894577) + '123')

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
爬虫 爬虫技术学习和研究
Projects
None yet
Development

No branches or pull requests

1 participant