python实现的登录和操作开心网脚本分享,python写简单的注册登录

来源:未知 浏览 84次 时间 2021-06-10 23:45

SNS什么的我是一直无爱的这次蛋疼写了个登录开心网(kaixin001)并向所有好友发送站内消息的脚本。

开心网在登录的时候做了一些处理并不传原始密码404页面并不传原始密码从js分析到的结果是:登录时会生成一个随机的key然后用这个key和原始密码进行xxtea加密把加密后的结果再进行sha1加密。之后post这个key以及加密后的密码进行登录验证。

python实现的登录和操作开心网脚本分享

#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实现的登录和操作开心网脚本分享

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