Winnyのハッシュからキャッシュファイル名を割り出す

   1 BASE = 0x9D01505E14672A9A5EC6DC742C840D8F
   2 
   3 import sys
   4 import re
   5 
   6 def main():
   7 
   8     rehex = re.compile('^[0-9a-f]+$', re.I)
   9     if len(sys.argv) < 2:
  10         print >>sys.stderr, 'usage: %s hash...' % sys.argv[0]
  11         return
  12     for hash in sys.argv[1:]:
  13         if not rehex.match(hash):
  14             print >>sys.stderr, 'error: invalid argument:', hash
  15             continue
  16         print '%' + hex(eval('0x' + hash) ^ BASE)[2:-1].lower()
  17 
  18 if __name__ == '__main__':
  19     main()

Python/オレオレPythonTips (last edited 2006-02-28 01:43:25 by OreOre)