打印
[超级CRC计算器]

利用HotCRC中的初值碰撞保护版权信息不受侵害

[复制链接]
170|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 hotpower 于 2023-9-19 15:53 编辑

利用HotCRC中的初值碰撞保护版权信息不受侵害(菜农之天下无贼论
作者:雁塔菜农HotPower
声明:本文特别为指导菜农熟悉FPGA的FPGA高手,网友“风扬”(QQ:1023174982)网友烈火所编写。
特别注意:
菜农回复楼下网友
kutf 发表于 2019-9-15 06:41
牛皮吹的响。不如来做一道幼儿题目。来**一下这个AES加密的字符串是什么吧 a462a18a03010a31a87c51206d6d ...


菜农继续吹牛:

菜农的超级CRC计算器www.hotcrc.com自称地球第二,坐等第一来和菜农PK!!!

1.使用工具:
  菜农的超级CRC计算器www.hotcrc.com
2.将要保护的版权信息:
  菜农HotPower@163.com 2019.9.15于西安雁塔菜地
3.选择CRCn:
  例如CRC32:
  多项式:CRC32=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1
  简写式:CRC32R_EDB88320_FFFFFFFF_FFFFFFFF(初值和出值随意)
4.选择输入方式HotCode(菜农自创万国字符编码):
  因为版权信息包括汉字,可以选择UTF-8(每个汉字三个字节)或HotCode(每个汉字两个字节)
5.明文填入版权信息:
  菜农HotPower@163.com 2019.9.15于西安雁塔菜地
6.设置出值为0
  出值=00000000(0x00000000)
7.点击运算按钮
  得到结果=CD8CF036(校验和0xCD8CF036)
8.设置结果为0,这个是“天下无贼论”之成功要诀。用它“大杀四方”,用它异或关键的输出和函数入口地址(改写函数指针)
  结果=00000000(校验和0x00000000)
9.点击初值碰撞
  得到初值=4BFAEA03(0x4BFAEA03)
10.点击运算按钮(验证)
  得到结果=00000000(校验和0x00000000)
11.选择输入方式HEX:
  点击还原按钮,得到版权信息的HEX
  E3DCB19C486F74506F776572403136332E636F6D20323031392E392E3135AE8EE97FBB89F6C1B854E3DCB730
12.自动生成C语言源码(5种算法)
  1)选择功能=CRC表格和C语言,“.C”
  2)选择算法=“大表”,“算法”(移位算法)
  3)点击生成按钮,得到C语言表格和算法如下:
  • /*------------------------------------------------------------------------------
  •    本C语言核心代码由菜农HotPower@163.com的超级CRC计算器自动生成
  •    Copyright 1996-2018 HotPower Software, Inc.
  •    菜农HotPower@163.com 2019年9月15日 上午7:20:41 于西安雁塔菜地
  • ------------------------------------------------------------------------------*/
  • //CRC移位算法:
  • unsigned long GetCRC32R_EDB88320_4BFAEA03_00000000(unsigned char *crcBuff, unsigned int crcLen) {
  • unsigned int i, n;
  • unsigned long crc = 0x4BFAEA03;//初值
  • unsigned char crcTemp;
  •   for(i = 0; i < crcLen; i ++){
  •     crcTemp = crcBuff;
  •     for(n = 0; n < 8; n++){
  •       if((crcTemp ^ crc) & 0x01){
  •         crc >>= 1;
  •         crc ^= 0xEDB88320;
  •       }
  •       else crc >>= 1;
  •       crcTemp >>= 1;
  •     }
  •   }
  •   return crc;
  • }
  • int main(){
  • //数据格式:HEX
  • const unsigned char dataTable[] = {
  •   0xE3, 0xDC, 0xB1, 0x9C, 0x48, 0x6F, 0x74, 0x50, 0x6F, 0x77, 0x65, 0x72, 0x40, 0x31, 0x36, 0x33,
  •   0x2E, 0x63, 0x6F, 0x6D, 0x20, 0x32, 0x30, 0x31, 0x39, 0x2E, 0x39, 0x2E, 0x31, 0x35, 0xAE, 0x8E,
  •   0xE9, 0x7F, 0xBB, 0x89, 0xF6, 0xC1, 0xB8, 0x54, 0xE3, 0xDC, 0xB7, 0x30
  • };//特别注意Keil C51请用code替换const
  • unsigned long crc;
  •   crc = GetCRC32R_EDB88320_4BFAEA03_00000000((unsigned char *)dataTable, sizeof(dataTable));
  • //移位函数返回crc=0x00000000,与HotWC3运算相同
  •   while(crc | 1);//死循环,请在此处设置断点,验证函数返回值crc是否正确!!!
  •   return 0;
  • }


[color=rgb(51, 102, 153) !important]复制代码


13.选择功能=CRC基本运算
14.选择输入方式HotCode:
  因为版权信息包括汉字,可以选择UTF-8(每个汉字三个字节)或HotCode(每个汉字两个字节)
15.明文填入篡改邮箱版权信息(篡改):
  菜农HotPower@126.com 2019.9.15于西安雁塔菜地
16.点击运算按钮(验证)
  得到结果=C5EA37D5(校验和0xC5EA37D5),即篡改邮箱版权信息,校验和不为0
  故即可检测到“有贼来了”
17.天下无贼
  菜农此生**无数,也写过注册机(**了算法),也干过暴击**(找到了分支),前者的难度大过后者。
  所以程序关键处最好不要出现分支即判断语句,例如if (x == 0x250) good() else bad()
  暴力**者可以有两几种方法:
  1.  x = 0x250;...if (x == 0x250) good() else bad();
  2.  if (x = 0x250) good() else bad();
  3.  goto good();
  故应该用第10步的CRC=0x00000000来去“大杀四方”,例如,把CRC自身压缩为1个字节的CRC0(32位分4组,再一起XOR,变为1个字节的0x00)
  然后,把这个1个字节的CRC0保存多份,例如8份CRC0[8],注意不要连续保存!!!
  最后,在不同位置对关键XOR它。例如string=“HotPower”,那么用CRC0[8] ^ string[8]=string(因为CRC0 == 0,故string输出显示没错!!!)
  假设有贼光临,那么CRC0[8] ^ string[8] !=string(因为CRC0 != 0,故string输出显示出错!!!),那么贼需要找8个CVRC0[8]

菜农“天下无贼论”原理:
1.明文长度最好不是权值的倍数,这样攻防双方都必须穷举初值
2.设置出值为0,不给反汇编插入出值的机会
3.点击运算按钮,得到密文,为初值碰撞提供密文
4.设置结果为0,这个是“天下无贼论”之成功要诀。用它“大杀四方”,用它异或关键的输出和函数入口地址(改写函数指针)
5.点击初值碰撞,给出最终的初值。(函数体内)
6.自动生成5种C语言源码
注:
移位算法(速度最慢)
查表算法:
1.大表,单表(表格256组),例如CRC8为256个字节,CRC16为256*2个字节),速度最快
2.小表,单表(表格16组),例如CRC8为16个字节,CRC16为16*2个字节),速度比移位快
3.大表,双表(双组表格256组),例如CRC16为2组256*1个字节,CRC32为2组256*2个字节),例如CRC8做CRC16
4.小表,双表(双组表格16组),例如CRC16为2组16*1个字节,CRC32为2组16*2个字节),例如CRC8做CRC16

例如16位的MCU,运算CRC32,可以用16位的数据类型如unsigned
1.选择功能=CRC表格和C语言,“.C”
2.选择算法=“双表”,“小表”(查表算法)
3.点击生成按钮,得到C语言表格和算法如下:


  • /*------------------------------------------------------------------------------
  •    本C语言核心代码由菜农HotPower@163.com的超级CRC计算器自动生成
  •    Copyright 1996-2018 HotPower Software, Inc.
  •    菜农HotPower@163.com 2019年9月15日 上午7:31:46 于西安雁塔菜地
  • ------------------------------------------------------------------------------*/
  • /CRC双表小表查表算法:
  • const unsigned short CRC32R_EDB88320_Table_Hi[16] = {//特别注意Keil C51请用code替换const
  •   0x0000,0x1DB7,0x3B6E,0x26D9,0x76DC,0x6B6B,0x4DB2,0x5005,0xEDB8,0xF00F,0xD6D6,0xCB61,0x9B64,0x86D3,0xA00A,0xBDBD
  • };
  • const unsigned short CRC32R_EDB88320_Table_Lo[16] = {//特别注意Keil C51请用code替换const
  •   0x0000,0x1064,0x20C8,0x30AC,0x4190,0x51F4,0x6158,0x713C,0x8320,0x9344,0xA3E8,0xB38C,0xC2B0,0xD2D4,0xE278,0xF21C
  • };
  • //CRC双表小表查表算法:
  • unsigned long GetCRC32R_EDB88320_4BFAEA03_00000000_Table(unsigned char *crcBuff, unsigned int crcLen) {
  • unsigned int i;
  • unsigned char crcTemp;
  • unsigned short crch, crcl;
  •   crch = 0x4BFA;
  •   crcl = 0xEA03;
  •   for(i = 0; i < (crcLen * 2); i ++){
  •     if (i & 1) crcTemp = crcBuff[i >> 1] >> 4;
  •     else crcTemp = crcBuff[i >> 1] & 0x0F;
  •     crcTemp = (crcl & 0x0F) ^ crcTemp;
  •     crcl = ((crcl >> 4) | (crch << 12)) ^ CRC32R_EDB88320_Table_Lo[crcTemp];
  •     crch = (crch >> 4) ^ CRC32R_EDB88320_Table_Hi[crcTemp];
  •   }
  •   return (unsigned long)(crch << 16) | crcl;
  • }
  • int main(){
  • //数据格式:HEX
  • unsigned long crc;
  • const unsigned char dataTable[] = {
  •   0xE3, 0xDC, 0xB1, 0x9C, 0x48, 0x6F, 0x74, 0x50, 0x6F, 0x77, 0x65, 0x72, 0x40, 0x31, 0x36, 0x33,
  •   0x2E, 0x63, 0x6F, 0x6D, 0x20, 0x32, 0x30, 0x31, 0x39, 0x2E, 0x39, 0x2E, 0x31, 0x35, 0xAE, 0x8E,
  •   0xE9, 0x7F, 0xBB, 0x89, 0xF6, 0xC1, 0xB8, 0x54, 0xE3, 0xDC, 0xB7, 0x30
  • };//特别注意Keil C51请用code替换const
  •   crc = GetCRC32R_EDB88320_4BFAEA03_00000000_Table((unsigned char *)dataTable, sizeof(dataTable));
  • //表格函数返回crc=0x00000000,与HotWC3运算相同
  •   while(crc | 1);//死循环,请在此处设置断点,验证函数返回值crc是否正确!!!
  •   return 0;
  • }




  • 可以看到表格数据类型长度减半,特别适合:
    8位MCU做CRC16,16位MCU做CRC32,32位MCU做CRC64

    菜农HotPower@163.com 2019.9.15于西安雁塔菜地
    [/td][/tr]

微信群截图.png (124.94 KB )

微信群截图.png

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:[url=http://www.21ic.com/tools/HotWC3_V1.23.html]

1538

主题

21697

帖子

506

粉丝