[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 # shop-js encrypted message decoder in Python 2 # Copyright John Hanna (c) 2002 under the terms of the GPL 3 # see http://shop-js.sf.net for details and latest version 4 5 debug=0 6 7 import privateKey 8 import sys 9 10 def rc4(key, string): 11 """Return string rc4 (de/en)crypted with RC4.""" 12 s,i,j,klen=range(256),0,0,len(key) 13 for i in range(256): 14 j=(ord(key[i%klen])+s[i]+j)%256 15 s[i],s[j]=s[j],s[i] 16 for i in range(256): 17 j=(ord(key[i%klen])+s[i]+j)%256 18 s[i],s[j]=s[j],s[i] 19 r='' 20 for i in range(len(string)): 21 i2=i % 256 22 j=(s[i2]+j)%256 23 s[i2],s[j]=s[j],s[i2] 24 r+=chr(ord(string[i])^s[(s[i2]+s[j])%256]) 25 return r 26 27 def inverse(x, n): 28 """Return the mod n inverse of x.""" 29 y, a, b = n, 1, 0 30 while y>0: 31 x, (q, y) = y, divmod(x, y) 32 a, b = b, a - b*q 33 if a < 0: 34 a = a + n 35 assert x==1, "No inverse, GCD is %d" % x 36 return a 37 38 39 def crt_RSA(m, d, p, q): 40 """ Compute m**d mod p*q for RSA private key operations.""" 41 xp = pow(m % p, d%(p-1), p) 42 xq = pow(m % q, d%(q-1), q) 43 t = ((xq - xp) * inverse(p, q)) % q 44 if t < 0: 45 t = t + q 46 return t * p + xp 47 48 49 b64s='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"' 50 def base64ToText(text): 51 r,m,a,c='',0,0,0 52 for i in text[:]: 53 c=b64s.find(i) 54 if(c >= 0) : 55 if(m): 56 r += chr((c << (8-m))& 255 | a) 57 a = c >> m 58 m+=2 59 if(m==8):m=0 60 return r 61 62 def t2b(s): 63 r=0L 64 m=1L 65 for i in s[:]: 66 r+=m*ord(i) 67 m*=256L 68 return r 69 70 def b2t(b): 71 r='' 72 while(b): 73 r+=chr(b % 256) 74 b>>=8 75 return r 76 77 def fix(a): 78 r=0L 79 s=0 80 for i in a[:]: 81 r|=long(i) << s 82 s+=28 83 return r 84 85 def rsaDecode(key, text): 86 """ decode the text based on the given rsa key. """ 87 # separate the session key from the text 88 text=base64ToText(text) 89 sessionKeyLength=ord(text[0]) 90 sessionKeyEncryptedText=text[1:sessionKeyLength+1] 91 text=text[sessionKeyLength+1:] 92 sessionKeyEncrypted=t2b(sessionKeyEncryptedText) 93 94 # un-rsa the session key 95 sessionkey=crt_RSA(sessionKeyEncrypted,fix(key[0]),fix(key[1]),fix(key[2])) 96 #sessionkey=crt_RSA(sessionKeyEncrypted,fix(d),fix(p),fix(q)) 97 sessionkey=b2t(sessionkey) 98 99 text=rc4(sessionkey,text) 100 return text 101 102 if debug: 103 message=rsaDecode(privateKey.value, sys.argv[1]) 104 print "Debug :" 105 print message 106 107 else: 108 print rsaDecode(privateKey.value, sys.argv[1]) 109
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |