f0={}
f0["DDDDD"] = f1['DDDD']
f0["upass"] = calcMD5(pid + f1['upass'] + calg) + calg + pid;
f0["R1"] = ss
f0["R2"] = 1
f0["para"] = 00
f0["0MKKey"] = 123456
其中 ss、pid、calg都是常量,f1['DDDD']、f1['upass']分别是用户输入的用户名和密码字符串
关键在于calcMD5的算法。
从函数名和函数本身来看,这个函数是MD5的一种实现。然而对js代码进行移植的过程中出现了一些问题:js和python的移位操作表现不同。
既然整个f0['upass']字段除了用户输入的密码以外,其它都是常量,完全可以用js计算出f0['upass'],python中只要保存这个字符串就行了。
检查cookies发现整个网页没有使用cookies。
登录后跳转到登出页面,分析登出页面发现,登出只需要访问某个特定的网页就行了。
于是整个思路很简单,pos登录服务器实现登录,get指定网页登出。实现代码如下:
import sys
from urllib import urlencode
from urllib2 import urlopen
username = "s10********"
upass = "6696a3***********************************"
LOGIN = "http://202.1**.***.***/"
LOGOUT = "http://202.1**.***.***/F.htm"
def post(url, data=None):
if data:
data = urlencode(data)
response = urlopen(url, data)
return response.read()
def login():
data={}
data["DDDDD"] = username
data["upass"] = upass
data["R1"] = 0
data["R2"] = 1
data["para"] = 00
data["0MKKey"] = 123456
post(LOGIN, data)
pass
def logout():
post(LOGOUT)
def main(argv):
if argv[0] in ('login','in','i'):
login()
elif argv[0] in ('logout','out','o'):
logout()
pass
pass
if __name__ == '__main__':
main(sys.argv[1:]);
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉