这题讲道理其实还算简单的,还以为是啥算法呢。。吓我一跳。。拖入ida之后,发现逻辑还是挺清晰的

这个是关键函数,第一个if就可以求出后10个字符是啥了。。

接下就是对一个列表的赋值,然后就是一个dowhile循环256次,最后再判断,这种没办法逆,只能采取暴力,我也将脚本写出来了,一开始是以为hctf这个是可以直接猜的,

这样就可以少4个循环,后面也导致我脚本跑不出结果。其实根据后十个字符没有},我就应该死心了,后来看了wp才明白这题的精妙之处。

实际上就是一个奇偶的问题,奇数和偶数互不打扰,也就几乎把10个未知的,直接达成了5个未知数来计算,省了几个循环,可行性也提高了,当然头铁十个也没问题,但是能不能跑出来就是个问题了。

然后感觉还有注意点在于取出来是多少字节,这玩意得看数据宽度为多大,int4个字节啥的,具体情况具体分析了

#include<bits/stdc++.h>
using namespace std;
unsigned char byte_4120C0[] =
{
0x64, 0x27, 0x77, 0x75, 0x68, 0x60, 0x75, 0x66, 0x6A, 0x26,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00
};
unsigned int dword_40FD60[] =
{0, 0, 0, 0, 0, 2516582400L, 815136768, 120624640, 1996959894, 58132272, 2198042375L, 1803748215,
4067132163L, 754084739, 1630335595, 241249522, 3993919788L, 4159573601L, 1895296526, 997259246, 3778769143L,
3135322992L, 1371201851, 156351201, 2567524794L, 4103670097L, 4092893449L, 1358165145, 324072436, 420696307,
3289977680L, 1841568019, 124634137, 520580548, 2535393133L, 2593595143L, 3348797215L, 2412223127L, 4103063450L,
1794412487, 1886057615, 477129460, 337408106, 4044627056L, 904991772, 892727572, 2771727857L, 1671771445, 3915621685L,
3907609509L, 3890800995L, 2716330217L, 648144872, 2737218023L, 2510497441L, 1687528230, 2657392035L, 3953026197L,
1693163108, 3395611550L, 3570033899L, 852806244, 2285032650L, 3683136212L, 249268274, 3473857416L, 1489964763, 3646476046L,
2329499855L, 2760563032L, 3097791193L, 3703088266L, 2044508324, 3430538424L, 3687610844L, 3000749177L, 2024987596, 511226587,
3911088306L, 3588824696L, 3772115230L, 954258921, 674816213, 3794286816L, 1809983544, 2288771624L, 3649596386L, 3537471595L, 2547177864L,
999805657, 2872809426L, 2309700503L, 2575936315L, 731482539, 1277925769, 3058445209L, 162941995, 3490297420L, 3486517686L, 1137692681, 1296289744,
3175957455L, 2092780867, 2977742157L, 2125561021, 3548295548L, 1288928945, 676123518, 3207089363L, 129968204, 755482408, 3089958847L, 3887607047L,
669497389, 3207063480L, 2025793511, 2893594407L, 2443999423L, 496086136, 3206386092L, 2428444049L, 613465885, 1009029311, 322708624, 1578318884,
1683886908, 275013139, 3071304798L, 498536548, 1864218384, 3345948087L, 1590128413, 274646895, 4061159111L, 552734814, 2954949136L, 1789927666,
1818931232, 1147955888, 893676650, 3795141740L, 1222784324, 1900601909, 3111209186L, 4089016648L, 2566109553L, 3080254393L, 1706531059, 4049975192L,
3740362167L, 1105129829, 3191987953L, 2227061214L, 2609167937L, 882607294, 238328708, 51262619, 2097352244, 3564962574L, 3671358723L, 450548861,
1880808148, 1349524186, 3293605914L, 3619967088L, 3956786256L, 3840661444L, 3722767319L, 1843258603, 1936580068, 3547557341L, 2949870445L, 632279923, 1361424339, 3041994159L, 3568652581L, 4107580753L, 2280969397L, 545780948, 4280322036L, 922689671, 3342270240L, 2244425471L, 3548759862L, 2211677639L, 2223231877L, 2743370707L, 2493744259L, 3298075524L, 1455723683, 2555823252L, 1821923012, 325883990, 2685627544L, 2678068076L, 2275385363L, 2592579488L, 3231352735L, 2831194759L, 1806221466, 1684777152, 2741267368L, 480470123, 3961299812L, 1760304291, 2053696540, 4185549036L, 1660516968, 4251122042L, 1476223737, 4015521122L, 3169802237L, 2075979607, 3967532271L, 3387718588L, 1707732091, 2321926636L, 1418356169, 1817479781, 3614200970L, 2312596564L, 1334433644, 1548716503, 22826889, 335633487, 3205759324L, 146740225, 487112468, 1562183871, 3646758152L, 1826184477, 107796829, 1661365465, 3160606316L, 2344379142L, 1988869219, 2943781820L, 1672443531, 1029943158, 255681455, 4195302755L, 1224347453, 2018048527, 645417210, 3156637768L, 4122748536L, 234208294, 135132604, 2366115317L, 1267533837, 4216032520L, 1308314509, 1313733451, 3360574971L, 549998157, 1847642190, 997073096, 3728436768L, 2396928878L, 3180256827L, 549293790, 1579203982, 274604221, 1762680352, 1281953886, 3712772368L, 232606825, 3591232844L, 3537243613L, 3839022605L, 1105515222, 1614931154, 3579855332L, 701849665, 4264154464L, 2264803797L, 3246849577L, 1925285630, 1903346054, 1735488193, 2724688242L, 715286385, 2099946087, 3984403106L, 871202090, 3509841277L, 3838915565L, 65327411, 1006888145, 3241935844L, 432094211, 655999292, 3878099393L, 1206331161, 3561482023L, 81020903, 1258607687, 3259696340L, 2596424452L, 1285210699, 357341890, 4246031514L, 2247955788L, 226884885, 3524101629L, 919735685, 1765200397, 476657362, 102525238, 1795562601, 3043690012L, 179661574, 2768942443L, 900008629, 3929384202L, 2011837861, 4101499445L, 4210325482L, 2835018871L, 3047750388L, 901097722, 288732584, 3591452085L, 1691750709, 2858735121L, 1823106262, 2557258340L, 2996333738L, 1119000684, 306360984, 1427260082, 257233474, 1477399826, 3596095317L, 3386267663L, 3150567000L, 3686517206L, 3873160137L, 2800147387L, 1604773595, 1264559846, 1078681510, 4181740383L, 3170451531L, 2898065728L, 3853303033L, 635808956, 874898860, 3107202533L, 3820565541L, 1826863412, 3631014841L, 853044451, 238213228, 1091449560, 4265676338L, 1845379342, 1970142785, 1551199742, 3747378541L, 1172266101, 222682972, 3255649759L, 2512522565L, 2677391885L, 3483342274L, 231710613, 3591229343L, 3705015759L, 4191999501L, 838458582, 3308386780L, 2361733625L, 1502397745, 1029278917, 3510458764L, 2882616665L, 4205564221L, 3002772433L, 2930965163L, 2125378298, 2893983410L, 816610990, 3643845758L, 651767980, 2972113200L, 1236346585, 3813257510L, 820201905, 976282441, 3813603, 3724556848L, 1373503546, 2991709696L, 3400683998L, 2294985297L, 3263744690L, 2160232650L, 1367392904, 3612442818L, 3369554304L, 1187567441, 960940247, 3627632328L, 3520608582L, 382851129, 1628885464, 3496023761L, 3218104598L, 1170198625, 3125133264L, 3015329215L, 598981189, 3039015866L, 4105511859L, 3035936035L, 565507253, 2921444596L, 3735953844L, 2044636705, 4151959214L, 603421150, 3290691449L, 3015975927L, 1454621731, 2908140484L, 1571641011, 308129110, 85089709, 2567246429L, 2509833490L, 3130366213L, 3485111705L, 1506785941, 2925121466L, 1118722511, 373468761, 253117102, 2769229378L, 3181711126L, 3099436303L, 1522056613, 760920253, 690838200, 3827903834L, 2665752877L, 3097420841L, 45653732, 671266974, 2116551352, 293480450, 974224936, 3124367742L, 146422289, 2282273338L, 92801210, 1594198024, 2103379336, 2457689861L, 1368554847, 1213305469, 2991083922L, 3652339793L, 215593544, 3322730930L, 2311458009L, 1636419084, 23169478, 1526817161, 609943905, 3911473921L, 199828571, 2970347812L, 2326858729L, 3800740107L, 1793231537, 2842354314L, 2276027106L, 2089265514, 1870432169, 795835527, 1630498684, 2254516079L, 2693161263L, 2107672161, 293445766, 1276214688, 1749815677, 1483230225, 1649961036, 90331240, 3406127704L, 2412447074L, 2878327557L, 497782731, 1629334415, 3244367275L, 2529255709L, 4137075041L, 2616628929L, 2627466902L, 1033673718, 759012507, 1714240924, 3060149565L, 2511758893L, 1972745830, 4034237878L, 1861252501, 2423189621L, 1099984624, 3695284334L};
int check()
{ int v6 = -1;
int v4=-1;
int v7 = 0;
do
{
v6 = dword_40FD60[2 * (unsigned __int8)(v6 ^ byte_4120C0[v7])] ^ (v6 >> 8);
v4 = dword_40FD60[(2 * (unsigned __int8)(v4 ^ byte_4120C0[v7+1]))+1] ^ (v4 >> 8);
v7 += 2;
}
while ( v7 < 256 );
if ( ~v6 == 0xBA56C4F9)
return 1;
if(~v4 == 0xE89BA203 )
return 2;
return 0;
}
char input[10];
int main()
{ for(int i=0;i<128;i++)
{
byte_4120C0[0]=i;
byte_4120C0[17]=i;
for(int j=0;j<128;j++)
{
byte_4120C0[34]=j;
byte_4120C0[51]=j;
for(int k=0;k<128;k++)
{
byte_4120C0[68]=k;
byte_4120C0[85]=k;
for(int m=0;m<128;m++)
{
byte_4120C0[102]=m;
byte_4120C0[119]=m;
for(int n=0;n<128;n++)
{ byte_4120C0[136]=n;
byte_4120C0[153]=n;
if(check()==1)
{
printf("奇数%c%c%c%c%c",i,j,k,m,n); }else if(check()==2)
{
printf("偶数%c%c%c%c%c",i,j,k,m,n);
} }
}
}
}
}
for(int i=0;i<=9;i++)
{
printf("%c",byte_4120C0[i]^7);
}
}

XCTF_RE-Crc-300的更多相关文章

  1. 校验码(海明校验,CRC冗余校验,奇偶校验)

    循环冗余校验码 CRC码利用生成多项式为k个数据位产生r个校验位进行编码,其编码长度为n=k+r所以又称 (n,k)码. CRC码广泛应用于数据通信领域和磁介质存储系统中. CRC理论非常复杂,一般书 ...

  2. Redis 作者 Antirez 与 Contributor Mattsta 之间关于 CRC 的 Battle

    大家好,我是 yes. 昨天表弟说有个学妹问他 Redis 为什么要用 CRC16(key) mod 16384 来计算 key 所处槽的位置,我想这 CRC 一般都是用来校验的,通过多项式转换成二进 ...

  3. CRC、反码求和校验 原理分析

    3月份开始从客户端转后台,算是幸运的进入全栈工程师的修炼阶段.这段时间一边是老项目的客户端加服务器两边的维护和交接,一边是新项目加加加班赶工,期间最长经历了连续工作三天只睡了四五个小时的煎熬,人生也算 ...

  4. 设置Fn键 笔记本直接按F1-F12 无须按Fn键 Fn+F12改F12(联想小新300为例)

    最近公司给配的笔记本联想小新300 80RT  i7-6500U 4G内存 500G机械,后加装120G固态+4G内存 这样就感觉还不错了. 在使用这本子的时候,去了Win10,强行装了Win7.无线 ...

  5. FineUI(开源版)v4.2.2发布(8年125个版本,官网示例突破300个)!

    开源版是 FineUI 的基石,从 2008 年至今已经持续发布了 120 多个版本,拥有会员 15,000 多位,捐赠会员达到 1,200 多位.   FineUI(开源版)v4.2.2 是 8 年 ...

  6. 循环冗余码crc

    待编码的有效信息组多项式:M(x) 生成多项式(产生校验码的多项式):G(x) 余数多项式:R(x) 商:Q(x) 生成多项式是四次的,所以某个多项式除以生成多项式的余式肯定是三次的,所以要加四位00 ...

  7. CRC循环冗余校验码总结(转)

    转自 http://blog.csdn.net/u012993936/article/details/45337069 一.CRC简介 先在此说明下什么是CRC:循环冗余码校验 英文名称为Cyclic ...

  8. 文档:网络通讯包结构(crc校验,加解密)

    一直想把这个流程整理一下. 包结构: 包 对(datacrc+protoID+dataSize)组成的byte[] 进行crc计算而得到 对(数据内容)进行crc计算而得到 协议号 数据内容的字节长度 ...

  9. 报文解析及CRC类

    /// <summary> /// 报文解析转换类 /// </summary> public class DatagramConvert { public static En ...

  10. CRC校验码原理、实例、手动计算

    目录一.CRC16实现代码二.CRC32编码字符表三.CRC校验码的手动计算示例四.CRC校验原理五.CRC的生成多项式参考 一.CRC16实现代码 思路:取一个字符(8bit),逐位检查该字符,如果 ...

随机推荐

  1. STM32 中的HARDFAULT 的查找方法

    http://blog.csdn.net/zyboy2000/article/details/7668331

  2. ES6笔记2

    ES6笔记2 Promise Promise 是 ES6 引入的异步编程的新解决方案,语法上是一个构造函数 一共有3种状态,pending(进行中).fulfilled(已成功)和rejected(已 ...

  3. 【补档_STM32单片机】脉搏波采集显示硬件设计

    一.脉搏波简介 ​ 脉搏一般情况下指的都是动脉脉搏.每分钟的脉搏次数称为脉率,正常情况下与心率是一致的.心脏的一次收缩和舒张成为一个心动周期.在每个心动周期内,心室的收缩和舒张会引起脉内压力的周期性波 ...

  4. 『言善信』Fiddler工具 — 4、Fiddler面布局详解【工具栏】

    目录 (一)工具栏详细介绍 1.第一组工具: 2.第二组工具: 3.第三组工具: 4.第四组工具: (二)工具栏使用说明 1.Fiddler修改代理端口: 2.过滤Tunnel to...443请求链 ...

  5. ARM NEON指令集优化理论与实践

    ARM NEON指令集优化理论与实践 一.简介 NEON就是一种基于SIMD思想的ARM技术,相比于ARMv6或之前的架构,NEON结合了64-bit和128-bit的SIMD指令集,提供128-bi ...

  6. Cuda Stream流分析

    Cuda Stream流分析 Stream 一般来说,cuda c并行性表现在下面两个层面上: Kernel level Grid level Stream和event简介 Cuda stream是指 ...

  7. NVIDIA GPUs上深度学习推荐模型的优化

    NVIDIA GPUs上深度学习推荐模型的优化 Optimizing the Deep Learning Recommendation Model on NVIDIA GPUs 推荐系统帮助人在成倍增 ...

  8. 整理AI性能指标

    整理AI性能指标 Sorting out AI performance metrics 推理性能的最佳衡量标准是什么? 在人工智能加速器的世界里,对于给定的算法,芯片的性能经常以每秒万亿次的运算量(T ...

  9. 狂神说Mybatis笔记

    环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 第一节:入门 什么是MyBati ...

  10. Springboot中以配置类方式自定义Mybatis的配置规则(如开启驼峰映射等)

    什么是自定义Mybatis的配置规则? 答:即原来在mybatis配置文件中中我们配置到<settings>标签中的内容,如下第6-10行内容: 1 <?xml version=&q ...