Skip to content

Instantly share code, notes, and snippets.

@yanunon
Created August 25, 2012 05:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save yanunon/3461150 to your computer and use it in GitHub Desktop.
Save yanunon/3461150 to your computer and use it in GitHub Desktop.
login campus network
#!/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