Created
August 25, 2012 05:17
-
-
Save yanunon/3461150 to your computer and use it in GitHub Desktop.
login campus network
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
#-*- coding: utf-8 -*- | |
import urllib | |
import urllib2 | |
def safe_add(x, y): | |
lsw=(x&0xFFFF)+(y&0xFFFF) | |
msw=(x>>16)+(y>>16)+(lsw>>16) | |
return lshift(msw, 16)|(lsw&0xFFFF) | |
def int32(x): | |
x = 0xffffffff & x | |
if x > 0x7fffffff : | |
return - ( ~(x - 1) & 0xffffffff ) | |
else : return x | |
def rshift(val, n): return val>>n if val >= 0 else (val+0x100000000)>>n | |
def lshift(val, n): | |
if val < 0: | |
val = -val | |
rst = val << n | |
rst = rst & 0xffffffff | |
rst = -rst | |
else: | |
rst = val << n | |
rst = rst & 0xffffffff | |
return rst | |
def rol(num, cnt): | |
return lshift(num, cnt)|rshift(num,32-cnt) | |
def cmn(q,a,b,x,s,t): | |
return safe_add(rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b) | |
def ff(a,b,c,d,x,s,t): | |
return cmn((b&c)|((~b)&d),a,b,x,s,t) | |
def gg(a,b,c,d,x,s,t): | |
return cmn((b&d)|(c&(~d)),a,b,x,s,t) | |
def hh(a,b,c,d,x,s,t): | |
return cmn(b^c^d,a,b,x,s,t) | |
def ii(a,b,c,d,x,s,t): | |
return cmn(c^(b|(~d)),a,b,x,s,t) | |
def coreMD5(x): | |
a=1732584193 | |
b=-271733879 | |
c=-1732584194 | |
d=271733878 | |
for i in range(0, len(x), 16): | |
olda=a | |
oldb=b | |
oldc=c | |
oldd=d | |
a=ff(a,b,c,d,x[i+0],7,-680876936) | |
d=ff(d,a,b,c,x[i+1],12,-389564586) | |
c=ff(c,d,a,b,x[i+2],17,606105819) | |
b=ff(b,c,d,a,x[i+3],22,-1044525330) | |
a=ff(a,b,c,d,x[i+4],7,-176418897) | |
d=ff(d,a,b,c,x[i+5],12,1200080426) | |
c=ff(c,d,a,b,x[i+6],17,-1473231341) | |
b=ff(b,c,d,a,x[i+7],22,-45705983) | |
a=ff(a,b,c,d,x[i+8],7,1770035416) | |
d=ff(d,a,b,c,x[i+9],12,-1958414417) | |
c=ff(c,d,a,b,x[i+10],17,-42063) | |
b=ff(b,c,d,a,x[i+11],22,-1990404162) | |
a=ff(a,b,c,d,x[i+12],7,1804603682) | |
d=ff(d,a,b,c,x[i+13],12,-40341101) | |
c=ff(c,d,a,b,x[i+14],17,-1502002290) | |
b=ff(b,c,d,a,x[i+15],22,1236535329) | |
a=gg(a,b,c,d,x[i+1],5,-165796510) | |
d=gg(d,a,b,c,x[i+6],9,-1069501632) | |
c=gg(c,d,a,b,x[i+11],14,643717713) | |
b=gg(b,c,d,a,x[i+0],20,-373897302) | |
a=gg(a,b,c,d,x[i+5],5,-701558691) | |
d=gg(d,a,b,c,x[i+10],9,38016083) | |
c=gg(c,d,a,b,x[i+15],14,-660478335) | |
b=gg(b,c,d,a,x[i+4],20,-405537848) | |
a=gg(a,b,c,d,x[i+9],5,568446438) | |
d=gg(d,a,b,c,x[i+14],9,-1019803690) | |
c=gg(c,d,a,b,x[i+3],14,-187363961) | |
b=gg(b,c,d,a,x[i+8],20,1163531501) | |
a=gg(a,b,c,d,x[i+13],5,-1444681467) | |
d=gg(d,a,b,c,x[i+2],9,-51403784) | |
c=gg(c,d,a,b,x[i+7],14,1735328473) | |
b=gg(b,c,d,a,x[i+12],20,-1926607734) | |
a=hh(a,b,c,d,x[i+5],4,-378558) | |
d=hh(d,a,b,c,x[i+8],11,-2022574463) | |
c=hh(c,d,a,b,x[i+11],16,1839030562) | |
b=hh(b,c,d,a,x[i+14],23,-35309556) | |
a=hh(a,b,c,d,x[i+1],4,-1530992060) | |
d=hh(d,a,b,c,x[i+4],11,1272893353) | |
c=hh(c,d,a,b,x[i+7],16,-155497632) | |
b=hh(b,c,d,a,x[i+10],23,-1094730640) | |
a=hh(a,b,c,d,x[i+13],4,681279174) | |
d=hh(d,a,b,c,x[i+0],11,-358537222) | |
c=hh(c,d,a,b,x[i+3],16,-722521979) | |
b=hh(b,c,d,a,x[i+6],23,76029189) | |
a=hh(a,b,c,d,x[i+9],4,-640364487) | |
d=hh(d,a,b,c,x[i+12],11,-421815835) | |
c=hh(c,d,a,b,x[i+15],16,530742520) | |
b=hh(b,c,d,a,x[i+2],23,-995338651) | |
a=ii(a,b,c,d,x[i+0],6,-198630844) | |
d=ii(d,a,b,c,x[i+7],10,1126891415) | |
c=ii(c,d,a,b,x[i+14],15,-1416354905) | |
b=ii(b,c,d,a,x[i+5],21,-57434055) | |
a=ii(a,b,c,d,x[i+12],6,1700485571) | |
d=ii(d,a,b,c,x[i+3],10,-1894986606) | |
c=ii(c,d,a,b,x[i+10],15,-1051523) | |
b=ii(b,c,d,a,x[i+1],21,-2054922799) | |
a=ii(a,b,c,d,x[i+8],6,1873313359) | |
d=ii(d,a,b,c,x[i+15],10,-30611744) | |
c=ii(c,d,a,b,x[i+6],15,-1560198380) | |
b=ii(b,c,d,a,x[i+13],21,1309151649) | |
a=ii(a,b,c,d,x[i+4],6,-145523070) | |
d=ii(d,a,b,c,x[i+11],10,-1120210379) | |
c=ii(c,d,a,b,x[i+2],15,718787259) | |
b=ii(b,c,d,a,x[i+9],21,-343485551) | |
a=safe_add(a,olda) | |
b=safe_add(b,oldb) | |
c=safe_add(c,oldc) | |
d=safe_add(d,oldd) | |
return [a,b,c,d] | |
def binl2hex(binarray): | |
hex_tab="0123456789abcdef" | |
str_s="" | |
for i in range(len(binarray) * 4): | |
str_s+=hex_tab[(binarray[i>>2] >>((i%4)*8+4))&0xF] + hex_tab[(binarray[i>>2] >>((i%4)*8))&0xF] | |
return str_s | |
def binl2b64(binarray): | |
tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" | |
str_s="" | |
for i in range(0, len(binarray)*32, 6): | |
str_s += tab[((binarray[i>>5] <<(i%32))&0x3F)|((binarray[i>>5+1] >>(32-i%32))&0x3F)] | |
return str_s | |
def str2binl(str_s): | |
nblk=((len(str_s)+8)>>6)+1 #number of 16-word blocks | |
blks=[0 for i in range(nblk * 16)] | |
for i in range(len(str_s)): | |
blks[i>>2]|=(ord(str_s[i])&0xFF) <<((i%4) * 8) | |
i=len(str_s) | |
blks[i>>2]|=0x80 <<((i%4) * 8) | |
blks[nblk*16-2]=len(str_s) * 8 | |
return blks | |
def strw2binl(str_s): | |
nblk=((len(str_s)+4)>>5)+1 | |
blks=[0 for i in range(nblk * 16)] | |
for i in range(len(str_s)): | |
blks[i>>1]|=ord(str_s[i]) <<((i%2) * 16) | |
i=len(str_s) | |
blks[i>>1]|=0x80 <<((i%2) * 16) | |
blks[nblk*16-2]=len(str_s) * 16 | |
return blks | |
def hexMD5(str_s): | |
return binl2hex(coreMD5( str2binl(str_s))) | |
def hexMD5w(str_s): | |
return binl2hex(coreMD5(strw2binl(str_s))) | |
def b64MD5(str_s): | |
return binl2b64(coreMD5( str2binl(str_s))) | |
def b64MD5w(str_s): | |
return binl2b64(coreMD5(strw2binl(str_s))) | |
def calcMD5(str_s): | |
return binl2hex(coreMD5( str2binl(str_s))) | |
def xproc1(str_s): | |
EChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" | |
#c1,c2,c3; | |
length=len(str_s) | |
i=0 | |
out = "" | |
c1 = 0 | |
c2 = 0 | |
c3 = 0 | |
while i<length: | |
c1=ord(str_s[i])&0xff | |
i += 1 | |
if i==length: | |
out+=EChars[c1>>2] | |
out+=EChars[(c1&0x3)<<4] | |
out+= "==" | |
break | |
c2=ord(str_s[i]) | |
i += 1 | |
if i==length: | |
out+=EChars[c1>>2] | |
out+=EChars[((c1&0x3)<<4)|((c2&0xF0)>>4)] | |
out+=EChars[(c2&0xF)<<2] | |
out+="=" | |
break | |
c3=ord(str_s[i]) | |
i += 1 | |
out+=EChars[c1>>2]; | |
out+=EChars[((c1&0x3)<<4)|((c2&0xF0)>>4)] | |
out+=EChars[((c2&0xF)<<2)|((c3&0xC0)>>6)] | |
out+=EChars[c3&0x3F] | |
return out | |
#ps=1;pid='1';calg='12345678'; | |
def mkparams(uid, passwd): | |
ps = 1 | |
pid = '1' | |
calg='12345678' | |
upass = '' | |
R2 = 0 | |
if ps == 0: | |
upass = xproc1(passwd) | |
else: | |
tmpchar = pid + passwd + calg | |
upass = calcMD5(tmpchar) + calg + pid | |
R2 =1 | |
params = { | |
'DDDDD': uid, | |
'upass': upass, | |
'R1': 0, | |
'R2': R2, | |
'para': '00', | |
'0MKKey': '123456' | |
} | |
return params | |
def do_login(uid, passwd): | |
params = mkparams(uid, passwd) | |
url = 'http://10.3.8.211' | |
data = urllib.urlencode(params) | |
req = urllib2.Request(url, data) | |
resp = urllib2.urlopen(req) | |
page = resp.read() | |
if page.find('You have successfully logged into our system.') > -1: | |
print 'successed' | |
else: | |
print 'failed' | |
if __name__ == '__main__': | |
do_login('ID', 'PASSWORD') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment