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的所有相应位的值的异或一起.独占或具有零值的检查值.结果将是该消息的检查值. (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- EvoPDF库在Windows Azure托管站点上失败
- Microsoft Windows远程桌面协议中间人攻击漏洞(CVE-2005-17
- api-ms-win-crt-runtime-|1-1-0.dll丢失的解决方法
- windows – 如何为Git-Bash设置16种终端颜色?
- windows-services – 首先是TopShelf,Ninject和EF代码的Nin
- Windows Server 2016-Win Ser 2016新增功能
- winapi – Win32 No-MFC中的消息映射
- windows远程桌面连接ubuntu 16.04
- Windows – Win7 Virtualbox在尝试启动虚拟机时出现此错误:
- windows-server-2008 – Windows Server 2008 R2打印服务器
- Windows C线程参数传递
- 什么是“Microsoft C例外”?
- windows-phone-8 – 启动TaskHost.exe失败,尝试运
- windows – 在matlab中监视内存
- Windows Server 2016-Hyper-V 2016新增功能
- windows – CreateWindowEx的lpClassName参数如何
- ms-office – Microsoft Office 2010功能区自定义
- 02、Windows Server 2003域账户管理(02)
- windows – 通过PowerShell运行.cmd文件
- haskell – 用于Windows的Linux主机上的GHC交叉编