Create wc_new.py

This commit is contained in:
sxkm 2025-04-09 22:14:12 +08:00 committed by GitHub
parent 60aa776f7c
commit d0cf86991d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

83
wc_new.py Normal file
View File

@ -0,0 +1,83 @@
"""
name:望潮
author:食翔狂魔
version:1.0
desc:每天0.16
date:2025-04-09 21:40:02
log:登录算法,密码使用的是RSA加密算法,采用PKCS#1 v1.5的填充方式,找到公钥即可;请求签名算法为SHA-256
notice:先写个登录算法和签名算法今天累了慢慢研究
"""
from base64 import b64encode, b64decode
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
import requests
import uuid
import hashlib
import time
tokens = [
{
"phone":"18888888888",
"pwd":"km88888",
"remark":"狂魔1"
}
]
def getXsignHeaders(token):
strUuid = str(uuid.uuid4())
xtime = int(time.time() * 1000)
data = f"/api/zbtxz/login&&67f67c2e3f293a31f196cf50&&{strUuid}&&{xtime}&&FR*r!isE5W&&64"
hash_object = hashlib.sha256(data.encode('utf-8'))
signature_hex = hash_object.hexdigest()
headers = {
'X-SESSION-ID': "67f67c2e3f293a31f196cf50",
'X-REQUEST-ID': strUuid,
'X-TIMESTAMP': str(xtime),
'X-SIGNATURE': signature_hex,
'X-TENANT-ID': "64"
}
return headers
def getJmp(pwd):
pk = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD6XO7e9YeAOs+cFqwa7ETJ+WXizPqQeXv68i5vqw9pFREsrqiBTRcg7wB0RIp3rJkDpaeVJLsZqYm5TW7FWx/iOiXFc+zCPvaKZric2dXCw27EvlH5rq+zwIPDAJHGAfnn1nmQH7wR3PCatEIb8pz5GFlTHMlluw4ZYmnOwg+thwIDAQAB"
pk2 = RSA.import_key(b64decode(pk))
cipher = PKCS1_v1_5.new(pk2)
pwdtext = cipher.encrypt(pwd.encode('utf-8'))
eb = b64encode(pwdtext).decode('utf-8')
return eb
def login2(token):
url = "https://vapp.taizhou.com.cn/api/zbtxz/login"
payload = {
'check_token': "",
'code': token["code"],
'token': "",
'type': "-1",
'union_id': ""
}
response = requests.post(url, data=payload, headers=getXsignHeaders(token))
res = response.json()
if res['code'] == 0:
print(f"{token['remark']}】登录成功, sessionId:{res['data']['session']['id']},device_id:{res['data']['session']['device_id']}")
token["sessionId"] = res['data']['session']['id']
token["device_id"] = res['data']['session']['device_id']
else:
print(f"{token['remark']}】登录失败,{response.text}.")
def login(token):
url = "https://passport.tmuyun.com/web/oauth/credential_auth"
payload = {
'client_id': "10019",
'password': getJmp(token["pwd"]),
'phone_number': token["phone"]
}
response = requests.post(url, data=payload)
res = response.json()
if res['code'] == 0:
print(f"{token['remark']}】获取登录code成功, code:{res['data']['authorization_code']['code']}")
token["code"] = res['data']['authorization_code']['code']
login2(token)
else:
print(f"{token['remark']}】获取登录code失败,{response.text}.")
if __name__ == "__main__":
for token in tokens:
login(token)