JS逆向第一学-MD5

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

自学一下爬虫JS逆向,做个小笔记。本文涉及到MD5算法

一、MD5算法

MD5是一种将整个文件当作一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要的加密算法。

特性:

1.不可逆:没有系统有办法知道md5原来的文字是什么

2.高度离散性:无规律可循,不可预测

3.压缩性:任意长度的数据,算出的md5长度固定

4.弱碰撞性:已知原数据和其他md5的值,想找到一个具有相同md5值的数据很困难

用途:

密码加密存储:服务端记录密码的MD5,再次MD5比较验证即可判断密码合法性

数字签名:公开程序文件MD5码,可以通过验证MD5来判断是否被恶意修改

文件完整性验证:下载文件时,服务器返回信息中包含md5,可再次md5,比较验证md5判断是否完整有无丢包

文件上传:对比上传文件md5是否在服务器中存在

二、xx翻译JS逆向

1.引入库

代码如下(示例):

import requests
import random
import time
from hashlib import md5

2.准备请求头

headers = {
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Connection': 'keep-alive',
    'Content-Length': '241',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Cookie': 'OUTFOX_SEARCH_USER_ID=2141756205@10.108.160.105; OUTFOX_SEARCH_USER_ID_NCOO=1880497134.1129446; ___rl__test__cookies=1659941291109',
    'Host': 'fanyi.youdao.com',
    'Origin': 'https://fanyi.youdao.com',
    'Referer': 'https://fanyi.youdao.com/',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36',
    'X-Requested-With': 'XMLHttpRequest'
}

3.执行代码

代码如下(示例)(该处用的jupyterIDE):

word = input('请输入要翻译的单词')
lts =  str(int(time.time()*1000))
salt = lts + str(random.randint(0,9))
#sign: n.md5("fanyideskweb" + e + i + "Ygy_4c=r#e#4EX^NUGUc5")
str_ = "fanyideskweb" + word + salt + "Ygy_4c=r#e#4EX^NUGUc5"

md = md5()
md.update(str_.encode())
sign = md.hexdigest()

data = {
'i': word,
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': salt,
'sign': sign,
'lts': lts,
'bv': '50b61ff102560ebc7bb0148b22d7715c',
'doctype': 'json',
'version': '2.1',
'keyfrom': 'fanyi.web',
'action': 'FY_BY_CLICKBUTTION'
}

html = requests.post(url="https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule",
        data=data,headers=headers)

htmljson = html.json()

print(htmljson)
效果如下

三、步骤

1.对比找出差异

右击检查,再次操作刷新,找出差异,即为我们需要处理的字段

2.找处理字段

源码中搜索"sign",得出它们的加密方式,为 md5

其中,e 未知,通过打断点得知e为我们所输入的单词。

 3.python写出MD5算法

from hashlib import md5

str = string
md = md5()
md.update(str.encode())
result_md5 = md.hexdigest()


总结

第一次简单js逆向练习,涉及md5算法,还是萌新,欢迎大佬们指正!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值