来源:未知
浏览 84次
时间 2021-06-10 23:45
SNS什么的我是一直无爱的这次蛋疼写了个登录开心网(kaixin001)并向所有好友发送站内消息的脚本。
开心网在登录的时候做了一些处理并不传原始密码404页面并不传原始密码从js分析到的结果是:登录时会生成一个随机的key然后用这个key和原始密码进行xxtea加密把加密后的结果再进行sha1加密。之后post这个key以及加密后的密码进行登录验证。
![python实现的登录和操作开心网脚本分享](https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2924483280,3695312045&fm=26&gp=0.jpg)
#coding: utf-8"""开心网操作脚本Author: piglei2007@gmail.comVersion: 1.0"""import reimport urllibimport urllib2import randomimport hashlibimport binasciiimport cookielibimport simplejsonfrom xxtea import encryptLOGIN_URL = "http://www.kaixin001.com/login/login_api.php"LOGIN_KEY_URL = "http://www.kaixin001.com/"FRIEND_LIST_URL = "http://www.kaixin001.com/interface/suggestfriend.php"MESSAGE_SEND_URL = "http://www.kaixin001.com/msg/post.php"LOGIN_KEY_RE = re.compile(r"new\sEnLogin\('(.*)'")class LoginError(Exception): """ 登录失败抛出异常 """class Kaixin001User(object): """ 操作kaixin001江西seo把加密后的结果再进行sha1加密。之后post这个key以及加密后的密码进行登录验证。
以下是很简陋的脚本内容:
![python实现的登录和操作开心网脚本分享](https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1036126246,3940262319&fm=26&gp=0.jpg)
import struct _DELTA = 0x9E3779B9 def _long2str(v, w): n = (len(v) - 1) 2 if w:
m = v[-1]
if (m n - 3) or (m n): return ''
n = m s = struct.pack('%iL' % len(v), *v) return s[0:n] if w else s def _str2long(s, w): n = len(s) m = (4 - (n 3) 3) + n s = s.ljust(m, "\0") v = list(struct.unpack('%iL' % (m 2), s)) if w: v.append(n) return v def encrypt(str, key): if str == '': return str v = _str2long(str, True) k = _str2long(key.ljust(16, "\0"), False) n = len(v) - 1 z = v[n] y = v[0] sum = 0 q = 6 + 52 // (n + 1) while q 0:
sum = (sum + _DELTA) 0xffffffff
e = sum 2 3
for p in xrange(n):
y = v[p + 1]
v[p] = (v[p] + ((z 5 ^ y 2) + (y 3 ^ z 4) ^ (sum ^ y) + (k[p 3 ^ e] ^ z))) 0xffffffff
z = v[p]
y = v[0]
v[n] = (v[n] + ((z 5 ^ y 2) + (y 3 ^ z 4) ^ (sum ^ y) + (k[n 3 ^ e] ^ z))) 0xffffffff
z = v[n]
q -= 1 return _long2str(v, False) def decrypt(str, key): if str == '': return str v = _str2long(str, False) k = _str2long(key.ljust(16, "\0"), False) n = len(v) - 1 z = v[n] y = v[0] q = 6 + 52 // (n + 1) sum = (q * _DELTA) 0xffffffff while (sum != 0):
e = sum 2 3
for p in xrange(n, 0, -1):
z = v[p - 1]
v[p] = (v[p] - ((z 5 ^ y 2) + (y 3 ^ z 4) ^ (sum ^ y) + (k[p 3 ^ e] ^ z))) 0xffffffff
y = v[p]
z = v[n]
v[0] = (v[0] - ((z 5 ^ y 2) + (y 3 ^ z 4) ^ (sum ^ y) + (k[0 3 ^ e] ^ z))) 0xffffffff
y = v[0]
sum = (sum - _DELTA) 0xffffffff return _long2str(v, True) if __name__ == "__main__": print decrypt(encrypt('Hello XXTEA!', '16bytelongstring'), '16bytelongstring') 标签:
登录loginsumkey