レジストリのDigital Product ID の書式について。
WindowsにあるDigital Product IDをデコードした
Base24という符号形式らしい。
#!/usr/bin/env python # --*-- coding: utf8-- ## (Python2.4用) #def any(iterable): # for element in iterable: # if element: # return True # return False def base_convert(nl, ibase, obase): o = [] while any(nl): c = 0 for i in xrange(len(nl)): c = c * ibase + nl[i] nl[i],c = divmod(c,obase) o.append(c) o.reverse() return o ## 1557(13) == 3114(10) print base_convert([1,5,5,7], 13, 10) ## 65535(10) == FFFF(16) print base_convert([6,5,5,3,5], 10, 16) pkeystr = "\xA8\x61\xD6\xF5\xC4\xD9\x5E\x7C\x0F\x78\x8D\xBD\xFB\x02\x00" base24digit = "BCDFGHJKMPQRTVWXY2346789" pkeynum = base_convert([ord(c) for c in reversed(pkeystr)], 256, 24) ## 桁数が足りない場合0を左に詰める if len(pkeynum) < 25: pkeynum = [0]*(25-len(pkeynum)) + pkeynum ## 5桁ごとにハイフンを入れて表示 pkey = [base24digit[x] for x in pkeynum] for i in (20,15,10,5): pkey.insert(i,"-") print "".join(pkey)