import urllib.request, ssl, paramiko, json, base64, bcrypt, socket from cryptography.hazmat.primitives.serialization import load_der_public_key from cryptography.hazmat.primitives.asymmetric import padding BASE="http://sso.yunhaixingtong.com"; HOST="sso.yunhaixingtong.com"; PORT=80 ctx=ssl.create_default_context(); ctx.check_hostname=False; ctx.verify_mode=ssl.CERT_NONE PLAIN="SsoTest@2026" h=bcrypt.hashpw(PLAIN.encode(), bcrypt.gensalt(rounds=10)).decode() if h.startswith("$2b$"): h=h.replace("$2b$","$2a$",1) print("hash self-check (python):", bcrypt.checkpw(PLAIN.encode(), h.encode())) ssh=paramiko.SSHClient(); ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect("192.168.10.157", port=22, username="yunhai", password="123456", timeout=20) def run(c): i,o,e=ssh.exec_command(c); return o.read().decode('utf-8','ignore')+("ERR:"+e.read().decode('utf-8','ignore') if e.read() else "") PWD="CVf^x$sW*b6CGHxh"; USER="ssotest_tmp" run(f"docker exec mysql8 mysql -uroot -p'{PWD}' bsch_userbase -e \"DELETE FROM sys_user WHERE username='{USER}'; INSERT INTO sys_user(username,create_time,create_user,password,disabled,expired) VALUES('{USER}',NOW(),0,'{h}',0,0);\" 2>&1") pub=json.loads(urllib.request.urlopen(urllib.request.Request(BASE+"/api/public-key"),timeout=20,context=ctx).read().decode())["data"]["publicKey"] rsa_pub=load_der_public_key(base64.b64decode(pub)) def rsa_enc(s): return base64.b64encode(rsa_pub.encrypt(s.encode(), padding.PKCS1v15())).decode() body=f"loginname={rsa_enc(USER)}&pwd={rsa_enc(PLAIN)}" req="POST /api/login HTTP/1.1\r\nHost: %s\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: %d\r\nConnection: close\r\n\r\n%s"%(HOST,len(body),body) s=socket.create_connection((HOST,PORT),timeout=20); s.sendall(req.encode()) data=b"" while True: c=s.recv(4096) if not c: break data+=c s.close() print("\nRESPONSE HEAD:\n", data.decode('utf-8','ignore').split("\r\n\r\n",1)[0][:600]) # fetch logs mentioning ssotest_tmp print("\n=== CAS logs (ssotest_tmp) ===") logs=run("docker logs --tail 60 cas-sso 2>&1 | grep -i 'ssotest_tmp\\|尝试登录\\|密码错误\\|Padding\\|Decryption\\|Illegal' | tail -20") print(logs if logs.strip() else "(no matching lines)") run(f"docker exec mysql8 mysql -uroot -p'{PWD}' bsch_userbase -e \"DELETE FROM sys_user WHERE username='{USER}';\" 2>&1") ssh.close()