>>> map (ord, base64.decodestring("AzRdHXdb5Xu5PFK1FQhWlRjdDSM=")) [3, 52, 93, 29, 119, 91, 229, 123, 185, 60, 82, 181, 21, 8, 86, 149, 24, 221, 13, 35] >>> password = map (ord, base64.decodestring("AzRdHXdb5Xu5PFK1FQhWlRjdDSM=")) >>> >>> j = password[0] >>> k = password[1] >>> >>> i1 = (password[3] ^ j) << 8 & 0xFF00 | (password[2] ^ k) & 0xFF >>> i1 = i1 & 0xFFFF >>> i1 = i1 - 7777 >>> >>> unmangled_passwd = password[4:4+i1] >>> >>> for n in xrange(i1): ... if (n % 2 != 0): ... i = k ... else: ... i = j ... print unmangled_passwd[n], i, unmangled_passwd[n] ^ i ... unmangled_passwd[n] = unmangled_passwd[n] ^ i ... m = i & 0x1 ... i = i >> 1 ... ... if m != 0: ... i = i | 0x80 ... else: ... i = i & 0x7F ... ... if n % 2 != 0: ... k = i ... else: ... j = i ... 119 3 116 91 52 111 229 129 100 123 26 97 185 192 121 60 13 49 82 96 50 181 134 51 >>> unmangled_passwd [116, 111, 100, 97, 121, 49, 50, 51] >>> map (chr, unmangled_passwd) ['t', 'o', 'd', 'a', 'y', '1', '2', '3'] >>>