![]() |
|
Message-ID: <4C88CB8F.1030909@16systems.com> Date: Thu, 09 Sep 2010 07:57:03 -0400 From: Brad Tilley <brad@...ystems.com> To: john-users@...ts.openwall.com Subject: Re: patch of JtR's netscreen.py script, now version 2.01 Robert Harris wrote: > Brad, > > That seems to work both in python 2.6 and python 3.1.2.3. > > I didn't know about the sys.version_info command. > > I kept on getting errors on "m = hashlib.md5(s).digest()", I learned > something new with "m = hashlib.md5(s.encode('latin_1')).digest()" > > Do you want to create the patch, or shall I? > > -Robert Harris I'm not sure how you guys patch so it may be better if you do it. Here's a unified diff (many of may changes are taste related and are irrelevant to the problem you were working on): --- netscreen.py 2010-02-28 16:17:12.000000000 -0500 +++ netscreen_rbt.py 2010-09-07 13:02:20.914433390 -0400 @@ -1,37 +1,50 @@ # netscreen.py # Generate passwords in netscreen format. -# -import md5 import sys def net(user, password): - b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" - middle = "Administration Tools" - s = "%s:%s:%s" % (user, middle, password) - m = md5.new(s).digest() - - narray = [] - for i in range(8): - n1 = ord(m[2*i]) - n2 = ord(m[2*i+1]) - narray.append( (n1<<8 & 0xff00) | (n2 & 0xff) ) - - res = "" - for i in narray: - p1 = i >> 12 & 0xf - p2 = i >> 6 & 0x3f - p3 = i & 0x3f - res = res + b64[p1] + b64[p2] + b64[p3] - - for c, n in zip("nrcstn", [0, 6, 12, 17, 23, 29]): - res = res[:n] + c + res[n:] - return res + + b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" + middle = "Administration Tools" + s = "%s:%s:%s" % (user, middle, password) + + # For versions of Python 2.5 and older + if sys.version_info[0] == 2 and sys.version_info[1] < 6: + import md5 + m = md5.new(s).digest() + else: + import hashlib + m = hashlib.md5(s.encode('latin_1')).digest() + + narray = [] + for i in range(8): + if sys.version_info[0] == 2: + n1 = ord(m[2*i]) + n2 = ord(m[2*i+1]) + narray.append( (n1<<8 & 0xff00) | (n2 & 0xff) ) + + if sys.version_info[0] == 3: + n1 = ord(chr(m[2*i])) + n2 = ord(chr(m[2*i+1])) + narray.append( (n1<<8 & 0xff00) | (n2 & 0xff) ) + + res = "" + for i in narray: + p1 = i >> 12 & 0xf + p2 = i >> 6 & 0x3f + p3 = i & 0x3f + res = res + b64[p1] + b64[p2] + b64[p3] + + for c, n in zip("nrcstn", [0, 6, 12, 17, 23, 29]): + res = res[:n] + c + res[n:] + return res if __name__ == '__main__': - user = sys.argv[1] - password = sys.argv[2] + + user = sys.argv[1] + password = sys.argv[2] - ciphertext = net(user,password) - print "%s:%s$%s" % (user,user,ciphertext) + ciphertext = net(user,password) + print(("%s:%s$%s" % (user,user,ciphertext)))
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.