当前位置: 首页 > article >正文

常见加密算法

1.哈希算法(md5/sha)

 简单的哈希加密操作:

from hashlib import md5, sha1, sha256, sha512
# obj = md5()
# obj = sha256()
obj = sha512()
text = '123456'.encode('utf-8')
# print(text)

obj.update(text)
encrypt_text = obj.hexdigest()  # 转换为16进制的数据
print(encrypt_text, len(encrypt_text))
const CryptoJs = require('crypto-js')

//hook MD5
var md5_backup = CryptoJs.MD5  
CryptoJs.MD5 = function(s){  
    console.log('MD5 HOOK --> 加密前的数据: ', s)  
    return md5_backup(s)  
}  

s = '123456'  
encrypt_s = CryptoJs.MD5(s).toString()
console.log(encrypt_s)

2.哈希算法(Base64)

# Base64 编码和解码
import base64
# 字符串编码和解码  ascii, utf-8 , gbk
s = '中文'.encode('utf-8')  # b--> byte 节 \x 十六进制
s1 = '中文'.encode('gbk')
s2 = 'abc'.encode()

s_64 = base64.b64encode(s)
s_64_decode = base64.b64decode(s_64)

print(s, s_64, s_64_decode.decode())
s = '123456'  
s_64 = btoa(s)  
s_64_decode = atob(s_64)  
console.log(s_64, s_64_decode)

 3.哈希算法案例实战

实战网址:红人点集

import requests
import json


headers = {
    "sec-ch-ua-platform": "\"Windows\"",
    "Referer;": "",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
    "Accept": "application/json, text/plain, */*",
    "sec-ch-ua": "\"Google Chrome\";v=\"129\", \"Not=A?Brand\";v=\"8\", \"Chromium\";v=\"129\"",
    "Content-Type": "application/json",
    "sec-ch-ua-mobile": "?0"
}
url = "https://user.hrdjyun.com/wechat/phonePwdLogin"
data = {
    "phoneNum": "18345276431",
    "pwd": "e10adc3949ba59abbe56e057f20f883e",
    "t": 1729427324536,
    "tenant": 1,
    "sig": "5fbc660dd7227a86d4141c34e5618a17"
}
data = json.dumps(data, separators=(',', ':'))
response = requests.post(url, headers=headers, data=data)

print(response.text)
print(response.json())

异步调试这里发现已经加密:

 调栈继续走,下一个断点进行多个函数产生:

 

得到js代码:

 缺少什么部分代码就从原文中扣出来,右键debug运行:

到此password加密方式就写出来了,接下来就是password传参给g["a"](P(S(e))),找到缺失的函数补全:

 最后使用python进行调用实现:

 4.对称加密

# pycryptodome
# AES, DES, 3DES..
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64


# key = b'0123456789abcdef'  # byte
# iv = b'0123456789abcdef'
# CBC, iv 偏移量
# ECB,不需要iv
# plain_text = '这是原始数据'.encode()


def aes_encrypt(key, iv, plain_text):
    cipher = AES.new(key=key, mode=AES.MODE_CBC, iv=iv)
    plain_text_pad = pad(plain_text, AES.block_size)
    cipher_text = cipher.encrypt(plain_text_pad)
    cipher_text_b64 = base64.b64encode(cipher_text).decode()
    return cipher_text_b64


def aes_decrypt(key, iv, cipher_text_b64):
    cipher_text = base64.b64decode(cipher_text_b64)
    cipher = AES.new(key=key, mode=AES.MODE_CBC, iv=iv)
    plain_text_unpad = cipher.decrypt(cipher_text)
    plain_text_ = unpad(plain_text_unpad, AES.block_size)
    return plain_text.decode()


if __name__ == '__main__':
    key = b'0123456789abcdef'  # byte
    iv = b'0123456789abcdef'
    plain_text = '这是原始数据'.encode()
    cipher_text_b64 = aes_encrypt(key, iv, plain_text)

    decrpt_text = aes_decrypt(key, iv, cipher_text_b64)
    print(decrpt_text)

发现这样学习太枯燥了,而且也不需要这样学,直接实战吧!!!

上实战:采招网-专业的招投标信息搜索引擎

定位解密入口函数位置,之前博客已经写过了,这里我们换一种方法,通过猴子直接帮助我们断点:

断住之后往前跟栈:

解密函数已经找到了:

使用JavaScript代码实现解密(key,iv): 

const CryptoJS = require('crypto-js')

key = {
    "words": [
        863652730,
        2036741733,
        1164342596,
        1782662963
    ],
    "sigBytes": 16
}

iv = {
    "words": [
        1719227713,
        1314533489,
        1397643880,
        1749959510
    ],
    "sigBytes": 16
}
get_data = function (str) {
    var nContent = CryptoJS.AES.decrypt(str, key, {
        iv: iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.ZeroPadding
    })
    if (nContent && nContent != null) {
        // try {
        var constr = CryptoJS.enc.Utf8.stringify(nContent)
        if (constr != "") {
            var data = JSON.parse(constr);
            return data;
        } else
            return null;
        // }
        // catch (err) {
        //     return null;
        // }

    } else
        return null;
}

// str = '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'
//
// console.log(get_data(str)['other2']['listData'])

 也可以使用python调用实现:

import requests
import execjs
with open('采集网.js','r',encoding='utf-8') as f:
    js_code = f.read()
headers = {
    "accept": "text/plain, */*; q=0.01",
    "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
    "cache-control": "no-cache",
    "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
    "origin": "https://search.bidcenter.com.cn",
    "pragma": "no-cache",
    "priority": "u=1, i",
    "referer": "https://search.bidcenter.com.cn/",
    "sec-ch-ua": "\"Google Chrome\";v=\"129\", \"Not=A?Brand\";v=\"8\", \"Chromium\";v=\"129\"",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "\"Windows\"",
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-site",
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
}
url = "https://interface.bidcenter.com.cn/search/GetSearchProHandler.ashx"
data = {
    "from": "6137",
    "guid": "1acf57c7-5403-489f-87dc-ebb3ec8ff97f",
    "location": "6138",
    "token": "",
    "next_token": "",
    "keywords": "%E5%85%AC%E5%85%B1%E8%B5%84%E6%BA%90%E4%BA%A4%E6%98%93",
    "diqu": "3,3",
    "mod": "0",
    "page": "2"
}
response = requests.post(url, headers=headers, data=data)
plain_text = execjs.compile(js_code).call('get_data',response.text)

 

import json
import pprint

import requests
import execjs

from Crypto.Cipher import AES
import base64

def aes_decrypt(cipher_text_b64):
    key = '3zKzyf6eEfDjAG3'.encode()
    iv = 'fyUANZ0qSNZhhNCV'.encode()
    cipher_text = base64.b64decode(cipher_text_b64)
    cipher = AES.new(key=key, mode=AES.MODE_CBC, iv=iv)
    plain_text = cipher.decrypt(cipher_text).decode().rstrip('\0')
    return plain_text
# with open('采集网.js','r',encoding='utf-8') as f:
#     js_code = f.read()
headers = {
    "accept": "text/plain, */*; q=0.01",
    "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
    "cache-control": "no-cache",
    "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
    "origin": "https://search.bidcenter.com.cn",
    "pragma": "no-cache",
    "priority": "u=1, i",
    "referer": "https://search.bidcenter.com.cn/",
    "sec-ch-ua": "\"Google Chrome\";v=\"129\", \"Not=A?Brand\";v=\"8\", \"Chromium\";v=\"129\"",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "\"Windows\"",
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-site",
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
}
url = "https://interface.bidcenter.com.cn/search/GetSearchProHandler.ashx"
data = {
    "from": "6137",
    "guid": "1acf57c7-5403-489f-87dc-ebb3ec8ff97f",
    "location": "6138",
    "token": "",
    "next_token": "",
    "keywords": "%E5%85%AC%E5%85%B1%E8%B5%84%E6%BA%90%E4%BA%A4%E6%98%93",
    "diqu": "3,3",
    "mod": "0",
    "page": "2"
}
response = requests.post(url, headers=headers, data=data)
# plain_text = execjs.compile(js_code).call('get_data',response.text)
plain_text = aes_decrypt(response.text)
plain_text_dict = json.loads(plain_text)
pprint.pprint(plain_text_dict)

原本:

 解密之后: 

 


http://www.kler.cn/news/359614.html

相关文章:

  • .net framework 3.5sp1组件如何启动?
  • 口电气设备:认证这道坎,如何跨越才能通全球?
  • 漏洞挖掘JS构造新手向
  • 植物大战僵尸杂交版游戏分享
  • 极简版Java敏感词检测SDK
  • 预置持久化应用或者常驻应用会导致自升级不了android:persistent=”true”属性
  • openKylin系统SSH服务配置结合cpolar轻松实现开放麒麟远程连接
  • flutter assets配置加载本地图片报错
  • 提高团队执行力的五大策略
  • Ansible for Windows hosts(ansible.windows 模块介绍)
  • HiveOnSpark环境下,Spark 挂了问题排查思路
  • linux:NAPI
  • AnaTraf | 深入探讨DNS流量分析:保障网络稳定性的关键
  • 从零学习大模型(一)-----GPT3(上)
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发二 : 18.04ubuntu安装,linux 下build ffmpeg 4.3 源码 并测试
  • C++与C语言的排序算法对比(插入,希尔,归并)
  • 2022年4月自考《数据库系统原理》04735试题
  • AI 自学 Lesson2 - 回归(Regression)
  • 想要加密电脑文件?2024年必备的8款企业文件加密软件推荐!
  • 4. Node.js Path模块