传感器

攻防世界 Misc高手进阶区 3分题 传感器1

一、曼彻斯特以及差分曼彻斯特

曼彻斯特与差分曼彻斯特
曼彻斯特:从低到高是0 从高到底是1
差分曼彻斯特:没变化就是0 有变化就是1

二、思路:

给了加密后的0x8893CA58
明文:3EAAAAA56A69AA55A95995A569AA95565556(不懂为什么要去掉3E)

要判断究竟用的是那种曼彻斯特算法

好的

从明文到密文怎么变换的呢?

1.将明文去掉3E 变成16进制的一段,16进制转十进制,十进制转二进制0101的格式

import re

hex1 = 'AAAAA56A69AA556A965A5999596AA95656'
bin1 = bin(int(hex1,16))[2:]
print ('ID:',bin1)
1010101010101010101001010110101001101001101010100101010101101010100101100101101001011001100110010101100101101010101010010101011001010110

2.有了二进制的编码形式,就可以往差分曼彻斯特靠了 2个2个取值,用两种方法判断,

s1 = ''
s = re.findall('.{2}',bin1)
cc = '01'
for i in s:
    if i == cc:
        s1 += '0'
    else:
        s1 += '1'
print ('曼切斯特解码:',s1)



s2 = ''    
for i in s:
   if i == cc:
      s2 += '0'
   else:
      s2 += '1'
   cc = i  # 差分加上cc = i
 
print ('差分曼切斯特解码:',s2)

差分曼彻斯特真的是点睛之笔,CC=I,上一次的二进制储存在cc中,看是否发生了变化

曼切斯特解码: 11111111110001110110111100000111100100110010101000100111111000010001
差分曼切斯特解码: 10000000001001001101100010000100010110101011111100110100000100011001

3.曼彻斯特算法会形成两行新的二进制编码
新的编码可以再次由二进制-十进制-十六进制 变成字符串

s3 = ''
s4 = re.findall('.{4}',s2)
print ('每一个hex分隔:',s4)
for i in s4:
   s3 += str(hex(int(i,2))).replace('0x','')
print ('ID:',s3)

s3 = ''
s4 = re.findall('.{4}',s1)
print ('每一个hex分隔:',s4)
for i in s4:
   s3 += str(hex(int(i,2))).replace('0x','')
print ('ID2:',s3)

每一个hex分隔: ['1000', '0000', '0010', '0100', '1101', '1000', '1000', '0100', '0101', '1010', '1011', '1111', '0011', '0100', '0001', '0001', '1001']
ID: 8024d8845abf34119

去掉0x是点睛之笔,好像去掉str也可以,,,

4.对比下题目给的加密后的
我们就可以知道,究竟用的那种曼彻斯特方法以及究竟截取的哪部分了

总结

1.将明文去掉3E 变成16进制的一段,16进制转十进制,十进制转二进制0101的格式
2.有了二进制的编码形式,就可以往差分曼彻斯特靠了 2个2个取值,用两种方法判断,
3.曼彻斯特算法会形成两行新的二进制编码,新的编码可以再次由二进制-十进制-十六进制 变成字符串
4.对比下题目给的加密后的
我们就可以知道,究竟用的那种曼彻斯特方法以及究竟截取的哪部分了

十六进制—十进制—二进制

曼彻斯特,二级制变成0.5倍并按规律重新改写,使得一段字符串变成了一段新的意义的字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值