windows-ce – 确定Windows CE可执行文件使用的16位CRC /校验和
我需要对由
Windows CE可执行文件实现的CRC /校验和算法进行逆向工程.作为提议协议,它没有说明CRC /校验和算法.但是,有控制台接口报告正确/计算的校验和,如果消息协议正确,我可以使用随机位构造自己的消息:
我观察到了, >更改消息中的单个位会完全更改校验和字节. 我应用了常见的XOR,LRC,附加校验和算法,常见的CRC多项式(Standerd,CCITT,X-modem)并经历了[CRC逆向工程论文] [2],但不幸的是我不能超过推导多项式,因为消息类型是固定的,所以无法创建单个1位消息. 我的问题: >是否有任何CRC /校验和算法属性,我可以测试消息,以确定算法是校验和还是基于多项式的CRC?
尝试
CRC RevEng.对您的数据进行一些快速尝试没有结果,但我并没有非常努力.考虑不仅要尝试所有十个消息字节,还要考虑最后八个和最后六个.
此外,您可以在同一站点找到我所知道的most comprehensive list of known CRCs. 更新: 这很可能是某种类型的CRC,或者至少是GF(2)的线性运算. CRC具有这样的属性:如果两个序列具有相同的异或,则它们的CRC也具有相同的异或.例如,从您的数据(删除公共前缀,但请注意包含前缀或其中的一部分不会更改结果): 00000000000122b5 ^ 0000000000022421 = 0000000000030694 0447080a300130A1 ^ 0447080a30023635 = 0000000000030694 和 0447080a300130A1 ^ 0447080a30043A36 = 0000000000050a97 00000000000122b5 ^ 0000000000042822 = 0000000000050a97 鉴于这一事实,有一种方法可以构建一个例程来计算检查值,而无需确定它是CRC还是CRC参数. 为所有单比特消息生成16比特校验值,即在六个字节的消息数据中设置一个比特,其余的消息数据比特为零.这些消息是该线性场的一组完整的基矢量.其中有48个.还生成全零消息的检查值.你已经有了一个开始,全部为0给出了2020,最后一位给出了22b5,等等 – 或者所有零(2020)的检查值与其他每个零.您现在有49个值,其中48个用于基向量,一个是零向量的校正(可能由于CRC的前后调节和前缀字节而非零).例如,最后一位设置的基矢量的值是0295. 现在,您可以使用这49个值来计算任何六字节消息的检查值.在该消息中设置为1的所有相应位的值的异或一起.独占或具有零值的检查值.结果将是该消息的检查值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-server-2008 – 选择IIS管理器中的所有站点
- windows – 批处理文件似乎被缓存
- wpf – 无法通过setter设置System.Windows.Controls.MenuIt
- windows-phone-7 – 如何通过浏览器网址启动Windows Phone应
- windows-server-2012-r2 – 在哪里可以找到Microsoft产品的
- active-directory – 使Active Directory更改为原子
- SQL?Server?2000的安全配置
- windows-server-2008-r2 – 我可以直接将2003(不是R2)adpre
- 使用Windows批处理命令循环直到文件存在
- windows-8 – Windows 8 Winrt应用程序进入后台或关闭
- windows-7 – 多次映射同一驱动器的组策略首选项
- .net – 无法在azure上找到程序集“Microsoft.Id
- 在绑定到Image.Source时,Xaml如何创建字符串到Bi
- Windows上的UDP多播故障排除
- windows-server-2012 – 如何在数据中心的VMware
- windows-server-2016 – 如何用英语安装Windows
- DLL – 有没有办法将版本信息存储在Rust编译的可
- windows – 对netstat -t意味着什么
- winapi – 如何在win32编辑控件中使用“占位符文
- windows-phone-7 – WP7 – 带图像的POST表单