windows-ce – 确定Windows CE可执行文件使用的16位CRC /校验和算法的方法?
我需要对由 Windows CE可执行文件实现的CRC /校验和算法进行逆向工程.作为提议协议,它没有说明CRC /校验和算法.但是,有控制台接口报告正确/计算的校验和,如果消息协议正确,我可以使用随机位构造自己的消息: 我观察到了, >更改消息中的单个位会完全更改校验和字节. 我应用了常见的XOR,LRC,附加校验和算法,常见的CRC多项式(Standerd,CCITT,X-modem)并经历了[CRC逆向工程论文] [2],但不幸的是我不能超过推导多项式,因为消息类型是固定的,所以无法创建单个1位消息. 我的问题: >是否有任何CRC /校验和算法属性,我可以测试消息,以确定算法是校验和还是基于多项式的CRC? 此外,您可以在同一站点找到我所知道的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的所有相应位的值的异或一起.独占或具有零值的检查值.结果将是该消息的检查值. (编辑:台州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- WIN10家庭中文版远程提示要求的函数不支持 win10家庭版提示
- winapi – Windows SDK 7.0的signtool中的signwizard发生了
- windows-services – 首先是TopShelf,Ninject和EF代码的Nin
- .net – System.Windows.Forms.WebBrowser:强制X86?
- Windows Phone 7 – Windows Phone开发Visual Studio 2012
- Windows C线程参数传递
- windows下部署Tomcat8
- 32位数据转8位数据和8位数据转32位数据
- Windows调试工具入门 — windebug
- PHP7安装Redis扩展教程【Linux与Windows平台】
- 如何在Windows 8.1上安装PyBluez?
- Windows/Linux命令查看文件MD5,SHA1,SHA256 文件
- windows远程桌面连接ubuntu 16.04
- windows – 通过PowerShell运行.cmd文件
- 安装程序 – NSIS与Windows游戏资源管理器集成
- winapi – 我可以从DLL中删除数字签名吗?
- windows-mobile – Visual Studio 2010 Professi
- Windows Server 2016-Win Ser 2016新增功能
- .net – System.Windows.Forms.WebBrowser:强制
- .net – 适用于Windows 7.0的蓝牙低功耗API