fork download
  1. import struct
  2.  
  3. b26chars = "eocapgvqrynhmlsubixdftwzjk"
  4.  
  5. _ekeys = (69, 75, 89, 91)
  6. _dkeys = (141, 99, 233, 211)
  7.  
  8. def _encrypt(n):
  9. packed = struct.pack(">L", n)
  10. encrypted = ''.join(chr((_ekeys[i] * ord(c)) % 256) for i, c in enumerate(packed))
  11. return struct.unpack(">L", encrypted)[0]
  12.  
  13. def _decrypt(n):
  14. packed = struct.pack(">L", n)
  15. decrypted = ''.join(chr((_dkeys[i] * ord(c)) % 256) for i, c in enumerate(packed))
  16. return struct.unpack(">L", decrypted)[0]
  17.  
  18. def b26(k):
  19. n = _encrypt(k)
  20. res = []
  21. while n > 0:
  22. n, m = divmod(n, 26)
  23. res.append(b26chars[m])
  24. if not res:
  25. return b26chars[0]
  26. res.reverse()
  27. return ''.join(res)
  28.  
  29. def unb26(s):
  30. n = 0
  31. for i, c in enumerate(s[::-1].lower()):
  32. n += b26chars.index(c)*26**i
  33. try:
  34. return _decrypt(n)
  35. except:
  36. return 0
  37.  
  38. def find(s, predicate, count = 1):
  39. n = unb26(s)
  40. i = 0
  41. while True:
  42. i = i + 1
  43. if (i & 65535) == 0:
  44. print 'i =', i
  45. id = b26(n + i)
  46. if predicate(id):
  47. print id, n + i, i
  48. count = count - 1
  49. if count == 0:
  50. break
  51.  
  52. def gets(s, count = 10):
  53. find(s, lambda x: (x[2] == x[3] and (x[3] == x[4] or x[1] == x[2])) or (x[0] == x[1] and x[1] == x[2]), count)
  54.  
  55. gets('igqsk', 30)
  56.  
  57. find('igqsk', lambda x: x.find('girl') != -1)
Success #stdin #stdout 3.71s 8968KB
stdin
Standard input is empty
stdout
ippps 392962 423
ipppr 392976 437
ipppk 392979 440
ipppc 392990 451
ipppd 392993 454
ipppl 393007 468
ipppq 393021 482
ipppj 393024 485
ipppo 393035 496
ipppx 393038 499
ipppm 393052 513
ipppv 393066 527
ipppz 393069 530
ipppe 393080 541
ipppi 393083 544
ippph 393097 558
ipppg 393111 572
ipppw 393114 575
ipppb 393128 589
ipppn 393142 603
ipppp 393156 617
ipppt 393159 620
ipppu 393173 634
ipppy 393187 648
ipppa 393201 662
ipppf 393204 665
oottta 401411 8872
ootttf 401414 8875
oottts 401428 8889
ootttr 401442 8903
i = 65536
i = 131072
i = 196608
i = 262144
orgirl 672203 279664