Python爬虫进阶必备 | 某镜像网站分析 - 教程随你出,学会算我输
16lz
2021-04-05
抓包分析与加密定位
先来看看加密的内容密文【图1-1】
图1-1
看过前面文章的朋友就会说,这个和 Base64 的加密结果很像,有猜想就直接搞起呗。【图1-2】
图1-2
解密的结果是一串乱码,说明不是 Base64 ,继续找找有没有别的点可以分析。
我们可以看到这里所有的加密字符串都是 autourl 数组的一个元素,那我们搜索 autourl 试试。【图1-3】
图1-3
只有两个搜索结果,和现有的内容比较相像的是第二个结果,我们跟进去继续搜索【图1-4】,可以看到有 4 个相关项,我们可以都打上断点,也可以参考咸鱼图中断点的位置,重新加载页面即可进入断点了。
图1-4
加密分析与加密代码扣取
我们简单分析下,当断点在 58 行时,url 的值还是密文的。【图2-1】
图2-1
当代码运行至 59 行的时候 url 的值已经解析为明文了。图2-2
图2-2
所以我们可以定位加密的位置为 strdecode 这个方法。( 看方法名也很清楚了 )
所以接下来我们把这个方法相关的代码扣出来。
function strdecode(string) { string = base64decode(string); key = Gword+'ok '; len = key.length; code = ''; for (i = 0; i < string.length; i++) { var k = i % len; code += String.fromCharCode(string.charCodeAt(i) ^ key.charCodeAt(k)) } return base64decode(code)}var base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 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, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);function base64decode(str) { var c1, c2, c3, c4; var i, len, out; len = str.length; i = 0; out = ""; while (i < len) { do { c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff] } while (i < len && c1 == -1); if (c1 == -1) break; do { c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff] } while (i < len && c2 == -1); if (c2 == -1) break; out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4)); do { c3 = str.charCodeAt(i++) & 0xff; if (c3 == 61) return out; c3 = base64DecodeChars[c3] } while (i < len && c3 == -1); if (c3 == -1) break; out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2)); do { c4 = str.charCodeAt(i++) & 0xff; if (c4 == 61) return out; c4 = base64DecodeChars[c4] } while (i < len && c4 == -1); if (c4 == -1) break; out += String.fromCharCode(((c3 & 0x03) << 6) | c4) } return out}function run(autourl) { for (var i = 1; i < autourl.length; i++) { url = autourl[i]; Gword = ' link@scmor.com' if(Gword!='') url = strdecode(url); var st = url.indexOf("//",1); var _domain = url.substring(st+1, url.length) ; var et = _domain.indexOf("/",1); surl = url.substring(0,et+st+2) ; console.log(surl) }}function geturl(){ autourl = ["QSQ7XggEHBUhXDxYLwIFHwh4ZRkwXFI0Pw4jGj5ZXlI=" , "QSQ7XggIPlUhFktUOl0GGwpodgUlA1I5KRpYBRBHW1I=" , "QSQ7XggIPlUhFksaBzg7FQpodRkKXFI2KVEVAz5AMRkOLFMd" , "QSQ7XggIPlUhFktALhZYHA93bhwwNgQ1ETQ4GREcLQAPXRNIQwtUUw==" , "QSQ7XggIPlUhFktEOl0gGjESWAILXFM1FyRUGD4dLQUMKFJTeTQgUw==" , "QSQ7XggIPlUhFksdB1wOGg9nTAQLABsyPw5cAz4dLQUMKFJTeTQgUw==" , "QSQ7XggIPlUhFksdB1wOGiRkYlgNOT06Eis4GiscWhshXCVKQStQHTIYOl4=" , "QSQ7XggIPlUhFktALwEdGwp4ahULXSErKTRcGT5DLRkPPFJaeV4BGAkHNRo=" , "QSQ7XggEHBUhXUdGBwZYAAp4ZhQlAyU2ETBYBRBHWl8JXABW" , "QSQ7XggIPlUhFktALwE/XQlzFRYwXAcsEQ4jAz5ZXlI=" , "QSQ7XggIPlUhFktALwEdGwp4ahULXSErKTRcGT5DLRkPPFMd" , "QSQ7XggIPlUhFktALwJcGTF4TF0IPV4qEQpVUg==" , "QSQ7XggIPlUhFktAAV1UAQlndVkmLV4oFg07Fih2BwM0ASVQRCs/FCctRg8JLEoT" , "QSQ7XggIPlUhFksdOTgkGg53ZhoKKQc1KRpYXBN5Vxk=" , "QSQ7XggIPlUhFktEAigrFg9obgQKKQA1KVE/AShpWgUOFl5WQwEKGA==" , "QSQ7XggIPlUhFksdB1wOGjESRB0MJgQ1FyRUGD5ZXlI="]; run(autourl)}geturl()
这个代码就比较简单,缺啥补啥即可。
下面是运行后的解密结果:
唠嗑
有读者后台私信我说,过往案例太简单了,有没有点有难度的案例拿出来讲讲,比如X程,X宝,X数之类的。
emmmmm...
没有,我也不会。
之后也许会有,但是谁知道呢。
更多相关文章
- Python爬虫进阶必备 | 关于某电商网站的加密请求头 if-none-matc
- Python爬虫进阶必备 | 关于某汽车交易网加密 Cookie 的分析
- Python也有pdb
- Python 爬虫进阶必备 | 某k12注册加密参数分析
- Python 爬虫进阶必备 | 某壁纸网站请求头参数与用户指纹 sign 加
- Python 爬虫进阶必备 | 某工业超市加密 header 参数分析
- 阿凡提EGGNETWORK恒价通证+加密社交催生新玩法 EFTalk
- rsync断点续传
- 过去三十年, RCT, DID, RDD, LE, ML, DSGE等方法的“高光时刻”