cipher='5555555595555A65556AA696AA6666666955' def iee(cipher): tmp='' for i in range(len(cipher)): a=bin(eval('0x'+cipher[i]))[2:].zfill(4) #补齐四位方便取1和3位 tmp=tmp+a[1]+a[3] #加上1和3位,就是应用了802.3的規則,或者定义一个字典替换也可以 print(tmp) plain=[hex(int(tmp[i:i+8][::-1],2))[2:] for i in range(0,len(tmp),8)] print(''.join(plain).upper())
iee(cipher)
# tmp="111111111111111101111111110010111111100000100110000010101010101010011111" # flag="" # for i in range(0,len(tmp),8): # # plain=hex(int(tmp[i:i+8][::-1],2))[2:] # # print(''.join(plain).upper()) # flag+=((hex(int(tmp[i:i+8][::-1],2)))[2:]) # print(flag.upper())
def bintohex(s1): s2 = '' s1 = re.findall('.{4}',s1) print ('每一个hex分隔:',s1) for i in s1: s2 += str(hex(int(i,2))).replace('0x','') print ('ID:',s2) def diffmqst(s): s1 = '' s = re.findall('.{2}',s) cc = '01' for i in s: if i == cc: s1 += '0' else: s1 += '1' cc = i # 差分加上cc = i print ('差分曼切斯特解码:',s1) bintohex(s1) if __name__ == '__main__': bin1 = bin(int(hex1,16))[2:] diffmqst(bin1)
s = '' for i in xrange(len(str1)/2): ch = str1[i*2 : i*2+2] b = bin(int(ch, 16))[2:] b = '0' * (8-len(b)) + b s += b
print 's:'+s
r = '' #因为此处除了前六位都是10和01,很明显是曼彻斯特,因而把前六位去掉即可看到正确的结果 s = s[6:] print 's:'+s for i in xrange(len(s)/2-1): c = s[i*2+1 : i*2+3] if c == '11' or c=='00': r += '1' else: r += '0'
print "r:"+r
ret ='' for i in xrange(len(r)/8): c = r[i*8 : i*8+8] print str(r[i*8 : i*8+8]) + ' ' + c ret += hex(int(c, 2 ))[2:].upper()
print ret
左边去掉5个字符,右边去掉4个字符
1 2 3 4 5 6 7 8 9 10
str="10000000001001001101100010000100010110101011111100110100000100011001" a=0 flag="" for i in range(0,len(str)/4): # print(str[0+(i*4):4+(i*4)]) # a+=1 flag+=hex(int(str[0+(i*4):4+(i*4)],2))[2:] # print(hex(int(str[0+(i*4):4+(i*4)],2))[2:]) # print(str[4:8]) print(flag)