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的所有相应位的值的异或一起.独占或具有零值的检查值.结果将是该消息的检查值. (编辑:十堰站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 无法找到MSVCP120D.DLL或0x00007启动错误的解决方法
- PHP7安装Redis扩展教程【Linux与Windows平台】
- .net – Windows Azure Web角色缓存(预览)“挂起”使模拟器
- 在[Windows Subsystem for Linux]中安装perl模块
- JLink重刷固件(win7/win8/win10亲测可用)
- 在非Qt应用程序中使用基于Qt的DLL
- Windows Server 2016-安装AD域服务注意事项
- windows – 在matlab中监视内存
- wpf – xaml Scrollviewer – 禁用整个窗口的过度滚动/橡皮
- windows-server-2008 – IIS可以从GPU核心创建线程吗?
- 在Windows启动时使用参数启动应用程序
- 在windows平台下采用electron-packager打包elect
- 如何在Windows上确定是否安装了C/C++编译器
- 批处理文件 – 以编程方式更改和刷新图标(无需重
- Windows Containers 大冒险: 优化计划(Dockerfil
- Windows Mobile 6.5手势和C#2.0应用程序
- .net – 为什么我无法在2.0.0.0播放器框架中重用
- windows – PSExec如何以SYSTEM用户身份运行应用
- Windows Azure表存储行大小限制小于规定的1MB
- 在[Windows Subsystem for Linux]中安装perl模块