From 23fc28d0113df56c1dc4b75267ccd023446454c2 Mon Sep 17 00:00:00 2001 From: hugy <504650082@qq.com> Date: Sat, 8 Jul 2023 17:13:38 +0800 Subject: [PATCH] =?UTF-8?q?doc:=20=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- python/decrpt.py | 51 --------------------------- python/http_server.py | 26 ++++++++++++++ python/readme.md | 10 ++++++ tool/injector/ConsoleApplication.exe | Bin 0 -> 129024 bytes tool/injector/readme.md | 13 +++++++ 5 files changed, 49 insertions(+), 51 deletions(-) delete mode 100644 python/decrpt.py create mode 100644 python/http_server.py create mode 100644 python/readme.md create mode 100644 tool/injector/ConsoleApplication.exe diff --git a/python/decrpt.py b/python/decrpt.py deleted file mode 100644 index d1802a2..0000000 --- a/python/decrpt.py +++ /dev/null @@ -1,51 +0,0 @@ -import ctypes -import hashlib -import hmac - -# pip install pycryptodome -from Crypto.Cipher import AES - - -def decrypt(password, input_file, out_file): - password = bytes.fromhex(password.replace(' ', '')) - with open(input_file, 'rb') as (f): - blist = f.read() - print(len(blist)) - salt = blist[:16] - key = hashlib.pbkdf2_hmac('sha1', password, salt, DEFAULT_ITER, KEY_SIZE) - first = blist[16:DEFAULT_PAGESIZE] - mac_salt = bytes([x ^ 58 for x in salt]) - mac_key = hashlib.pbkdf2_hmac('sha1', key, mac_salt, 2, KEY_SIZE) - hash_mac = hmac.new(mac_key, digestmod='sha1') - hash_mac.update(first[:-32]) - hash_mac.update(bytes(ctypes.c_int(1))) - if hash_mac.digest() == first[-32:-12]: - print('decrypt success') - else: - print('password error') - return - blist = [blist[i:i + DEFAULT_PAGESIZE] for i in range(DEFAULT_PAGESIZE, len(blist), DEFAULT_PAGESIZE)] - with open(out_file, 'wb') as (f): - f.write(SQLITE_FILE_HEADER) - t = AES.new(key, AES.MODE_CBC, first[-48:-32]) - f.write(t.decrypt(first[:-48])) - f.write(first[-48:]) - for i in blist: - t = AES.new(key, AES.MODE_CBC, i[-48:-32]) - f.write(t.decrypt(i[:-48])) - f.write(i[-48:]) - - -def main(): - password = '565735E30E474DA09250CB5AA047E3940FFA1C6F767C4263B13ABB512933DA49' - input_file = 'C:/var/Applet.db' - out_file = 'c:/var/out/Applet.db' - decrypt(password, input_file, out_file) - - -if __name__ == '__main__': - SQLITE_FILE_HEADER = bytes('SQLite format 3', encoding='ASCII') + bytes(1) - KEY_SIZE = 32 - DEFAULT_PAGESIZE = 4096 - DEFAULT_ITER = 64000 - main() diff --git a/python/http_server.py b/python/http_server.py new file mode 100644 index 0000000..98c154c --- /dev/null +++ b/python/http_server.py @@ -0,0 +1,26 @@ +from fastapi import FastAPI, Request + + +app = FastAPI() + +# pip install fastapi +# run command :uvicorn test:app --reload +# 127.0.0.1:8000/api + +@app.post("/api") +def create_item(request: Request): + print("recv msg") + return {"code": 0, "msg": "success"} + + +@app.middleware("http") +async def TestCustomMiddleware(request: Request, call_next): + the_headers = request.headers + the_body = await request.json() + + print(the_headers) + print(the_body) + + response = await call_next(request) + + return response \ No newline at end of file diff --git a/python/readme.md b/python/readme.md new file mode 100644 index 0000000..bf344d2 --- /dev/null +++ b/python/readme.md @@ -0,0 +1,10 @@ +### 常用的一些工具 + + +client.py : 快速测试dll的http接口。 + +decrpt.py : 微信数据库解密工具。password 为dll个人信息里返回的dbkey。 + +http_server.py : 一个简单的http server,用来接收hook的消息。 + +tcpserver.py: 一个简单的tcp server,用来接收hook的消息。 \ No newline at end of file diff --git a/tool/injector/ConsoleApplication.exe b/tool/injector/ConsoleApplication.exe new file mode 100644 index 0000000000000000000000000000000000000000..617f596d13ce04bf1fa45526d9006cadd82e8bc2 GIT binary patch literal 129024 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%0DMA0kS8J5s=0R@Zc@|ic2if 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