hotpower 发表于 2019-9-15 05:54:21

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

本帖最后由 hotpower 于 2019-9-15 08:36 编辑

利用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;
}

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,注意不要连续保存!!!
最后,在不同位置对关键XOR它。例如string=“HotPower”,那么用CRC0 ^ string=string(因为CRC0 == 0,故string输出显示没错!!!)
假设有贼光临,那么CRC0 ^ string !=string(因为CRC0 != 0,故string输出显示出错!!!),那么贼需要找8个CVRC0

菜农“天下无贼论”原理:
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 = {//特别注意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 = {//特别注意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 >> 4;
    else crcTemp = crcBuff & 0x0F;
    crcTemp = (crcl & 0x0F) ^ crcTemp;
    crcl = ((crcl >> 4) | (crch << 12)) ^ CRC32R_EDB88320_Table_Lo;
    crch = (crch >> 4) ^ CRC32R_EDB88320_Table_Hi;
}
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于西安雁塔菜地

kutf 发表于 2019-9-15 06:41:40

牛皮吹的响。不如来做一道幼儿题目。来破解一下这个AES加密的字符串是什么吧 a462a18a03010a31a87c51206d6da9c5

xjavr 发表于 2019-9-15 09:32:55

你这样是不对的,我们要更加深入的讨论,既然楼主说到攻防,咱们就论攻防。

hotcrc的本质还是校验,既然都已经知道了CRC0是CRC的版本权校验,那么要破解的关键就是在计算之后,就把CRC0全部置0就好了。

然后楼主说我没有给你反汇编的空间,所有的空间我都用完了,其实上找几条无关紧要的指令把你CRC0置0并不是难事。

anjiyifan 发表于 2019-9-15 09:44:40

菜农前辈,这里是技术论坛,大家都不喜欢豪言壮语和官话套话的。只把技术本身讲解清楚就行了。
什么第一第二的,什么天下无贼,一生致力于,说实话第一眼看就是不知所云,感觉在向不懂技术的领导邀功呢。
难道技术大牛都是智商超高,而情商是短板吗?

68336016 发表于 2019-9-15 09:46:22

精力充沛啊

wye11083 发表于 2019-9-15 10:46:27

68336016 发表于 2019-9-15 09:46
精力充沛啊

哈哈,是啊,感觉版块都被刷屏了

CoolBird007 发表于 2019-9-15 10:54:16

本帖最后由 CoolBird007 于 2019-9-15 11:01 编辑

anjiyifan 发表于 2019-9-15 09:44
菜农前辈,这里是技术论坛,大家都不喜欢豪言壮语和官话套话的。只把技术本身讲解清楚就行了。
什么第一第 ...

情商跟智商不成反比的吧。

anjiyifan 发表于 2019-9-15 11:10:43

CoolBird007 发表于 2019-9-15 10:54
情商跟智商不成反比的吧。

没说成反比。只是单纯评价有一些技术大牛的通性。
但也许情商低只是我被表象所欺骗,实则大牛是真的高情商,故意采用一些言辞来吸睛,吸引大家关注吧。
喜欢这一套言辞的,必然成粉;不喜欢这种“高调”做法的,自然会去验证是真是假。大牛的研究成果经受住考验的话,就能最快速度在业界提高知名度。

大傻师 发表于 2019-9-15 13:03:39

anjiyifan 发表于 2019-9-15 11:10
没说成反比。只是单纯评价有一些技术大牛的通性。
但也许情商低只是我被表象所欺骗,实则大牛是真的高情 ...

透彻,当我们跟他开始较真的时候,我们已经输了,或者入套了。

hotpower 发表于 2019-12-28 18:24:24

菜农无话可说~~~看菜农直播吧:http://bbs.hotfsp.com/index.php?board=59.0

qwe2231695 发表于 2019-12-30 02:12:26

我看懂了,是一种利用CRC算法处理单片机唯一ID加密的技术,然后构造程序代码,防止被读出hex后去掉判断。

谭春林 发表于 2020-1-9 16:21:52

帖子内容发的对应技术板块不一样的
页: [1]
查看完整版本: 利用HotCRC中的初值碰撞保护版权信息不受侵害