漫画网站破解-2

网站破解-2

破解图片加密的在前面,网站破解-1

破解继续

在上次的图片中,出现了数据加密。

数据加密的过程肯定是在js中完成,既然是js完成,那么代码一定是在本地。

这里的经验是,不建议在xhr上直接下断点,大部分会直接进入到实现的基本方法里面,找的非常不方便。

更建议的操作是,直接搜索请求的接口字符串。

如图这样,就很容易找到实现方法,这个代码一看就是vue的样子。做过vue开发的同学应该都知道,为了减少代码的冗余,基本都是会把实现的方法独立出来,需要的时候直接拿来就用。

跟着代码中的,this.$httpRequest。,F9继续进入。

跟着o.Encrypt继续,

这代码猜也能猜出了个大概,用的是AES加密,加密模式是ECB,加密之后base64再过一下。

如图我截图里很明显,其中的o,也就是AES加密中的密钥,key就在截图里。我自己在这里绕了好久,o不是默认参数传进来的,我用了最笨的方法,通过chrome的调试一个个组字符串,结果验证了之后还是错的,最后不经意间,看到了最后的代码。

加密解密验证

最后,以网站的源数据和加密之后的数据为样本,找deepseek问了一个php的AES加密案例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
// AES ECB 模式加密示例

// 待加密的原始数据
$data = <<<EOF
{"timeStamp":1745742724695}
EOF;

// 密钥(AES-128-ECB需要16字节密钥,AES-256-ECB需要32字节)
$key = "56+0x4d8=8c56fd5"; // 16字节密钥适用于AES-128
// 加密方法
$method = 'AES-128-ECB';

// 执行加密
$encrypted = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA);
// 将加密结果转换为Base64编码以便于传输或存储
$encryptedBase64 = base64_encode($encrypted);

echo "加密后的数据(Base64): " . $encryptedBase64 . PHP_EOL;

$encryptedBase64 = "oiN2i1tZsaCcX3z7F7o7rq4rTArJwD8fV9lUjcJ/0MM=";

// 解密过程
$decrypted = openssl_decrypt(base64_decode($encryptedBase64), $method, $key, OPENSSL_RAW_DATA);

echo "解密后的数据: " . $decrypted . PHP_EOL;

// 注意事项:
// 1. ECB模式不安全,建议使用CBC等更安全的模式。
// 2. 密钥长度必须符合所选方法要求(AES-128:16字节,AES-256:32字节)。
// 3. 实际应用中应使用安全的随机密钥,避免硬编码。
?>

最后交叉验证了一下,加密解密匹配。

总结

肯定有人会觉得如此就是莫名其妙,为了这么一个功能,莫名增加了好多代码,关键这些数据也没有必要进行如此复杂的处理。

但是这个功能有一个特别厉害的用途,那就是防墙。

就比如机场网站,一个少不掉的问题,那就是被墙,因为大部分的翻墙网站都是套的开源代码,那么其中通信的数据大同小异,只要墙发现了特征码,就很容易把网站给识别出来。

但是,如果网站的数据是AES这种加密,只要每次请求带上timestamp,那么每次的请求都是不一样的,而返回的请求每次也是不一样的。

这就必然没有特征码,没有特征码,墙还怎么禁。