Advertisement
JohnHopkins

python /etc/kcpassword xor encode

Mar 16th, 2013
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.86 KB | None | 0 0
  1. # Python port of encoding routing found here:
  2. #  http://www.brock-family.org/gavin/perl/kcpassword.html
  3. def kcpassword_xor(passwd):
  4.         ### The magic 11 bytes - these are just repeated
  5.         # 0x7D 0x89 0x52 0x23 0xD2 0xBC 0xDD 0xEA 0xA3 0xB9 0x1F
  6.         key = [125,137,82,35,210,188,221,234,163,185,31]
  7.         key_len = len(key)
  8.                      
  9.         passwd = [ord(x) for x in list(passwd)]
  10.         # pad passwd length out to an even multiple of key length
  11.         r = len(passwd) % key_len
  12.         if (r > 0):  
  13.             passwd = passwd + [0] * (key_len - r)
  14.  
  15.         for n in range(0, len(passwd), len(key)):
  16.            ki = 0
  17.            for j in range(n, min(n+len(key), len(passwd))):
  18.                passwd[j] = passwd[j] ^ key[ki]
  19.                ki += 1
  20.  
  21.         passwd = [chr(x) for x in passwd]
  22.         return "".join(passwd)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement