当前位置:首页 » 操作系统 » v7算法矿机

v7算法矿机

发布时间: 2023-11-01 15:38:16

‘壹’ 招新——第一次尝试破解tea算法

     物拿正      开始接触逆向分析时,入门级别的一道题目,是一个师兄写的考核题《sotired》,尝试着破解了下,以下是具体的过程。

1、双击发现打不开,应该是linux系统下的文件(事实证明确实如此,我在虚拟机那里验证了一下,随便输入字符串,得到的答案是sorry~,给人crakeme的感觉,哈哈)

2、使用反汇编工具ida64位,将文件拖进去,找到main函数,使用F5大法,得到下面的界面:

看到sorry~和wow!congratulation!的字符串,可以推断出有字符串的对比,看到if语句,没错就是它了,看来temp[k]里面有我们想要的东西(用于匹配比较的正确密文)点进去,得到

这里利用一个小插件lazyida,哈哈哈(我比较懒),得到密文,

在这里需要声明下,因为最后读出来的那个0x00111885B有误(lazyida的原因),其实是0x32111885B才对,所以是 0x572CB9C1, 0x73A6EB63, 0x069E6A55, 0x818E33D9, 0x7ED0A862, 0x3211885B,这些16进制的数就是密文啦!有了密文,我们要破解它,就需要找密钥啦,回去看函数

想象下,用户输入一组字符串,for循环了3次,atoui函数猜测应该是某种转换函数,点进去

果然是移位加密转换,结果是int 型,所以v11[6]的字符数据全部被转换了数字,继续往下

又有3次循环,看到encipher函数应该是加密函数来的,然后传递了两个参数,一个是转化后的v11,另一个v7,这里就可以怀疑了,v7应该是密钥,而且用了引用,难道是地址吗?很奇怪,点进去v7,得到

这里又要怀疑了,前面4个都是?一个数字有4个数据,感觉很像数组的样子,于是尝试一波

转换为数组,然后F5大法刷新下!得到

看来我们的推断是正敏薯确的,v7是一个数组,里面的数据应该是密钥了!到此,我们成功地拿到了密文和密钥了,接下来就是解密罩悔了,解密前需要知道是怎么加密的,回到刚刚的encipher函数,进去

看到这里有人可能要很激动了,这个算法不就是tea算法吗?!(没错,虽然我一开始也不知道,于是我去谷歌了一波!)

tea算法就是把密文结合密钥进行移位再异或的运算,总共进行32轮。解密则是反过来求解,不过需要先算出delta的值,即9e3779b9*32后得到13c6ef3720,明显溢出了(手贱算了下,溢出。tea算法把溢出的忽略了,emmmm,我也不太懂其中的原因,能用先用着,哈哈哈),于是乎,可以写脚本了,打开c++,写入脚本

我们的密文和密钥修改好后,因为有密文有6个16进制的数,所以解密3次,得到结果

好啦,这就是我们的flag了,但是看不懂是吧,没关系,去转换下,谷歌走起!

大家记得把空格消除,然后把它和在一起转化,好啦,虚拟机linux操作系统打开,文件打开,输入flag,得到的就是WOw!congratulation!

以上便是我花了一个下午整理出来的一个逆向题目,希望对大家有帮助,也希望能多多交流哦,嘻嘻~

‘贰’ 求出最短路径,要过程,用Dijkstra算法。。。

从v1开始遍历
v2 = 2;
v3 = 5;
v2较小所以跳到v2
v3 = 4;

v4 = 6;
v5 = 8;
v3较小所以跳到v3
v4 = 5;
v6 = 7;
v4较小所以跳到v4
v6 = 6;
v7 = 9;
v6较小所以跳到v6
v7 = 8;

所以最后结果v1 -> v7最短路径为v1->v2->v3->v4->v6->v7,最短路径长度为8

热点内容
php函数参数的传递参数 发布:2024-11-30 14:32:00 浏览:504
安卓手机怎么联系汽车 发布:2024-11-30 14:12:00 浏览:648
python代码性能 发布:2024-11-30 14:11:57 浏览:678
php变量是否存在 发布:2024-11-30 13:53:00 浏览:954
数组下标过大编译错误吗 发布:2024-11-30 13:52:51 浏览:639
检测5g信号密码是多少 发布:2024-11-30 13:52:51 浏览:258
c语言实现复数运算 发布:2024-11-30 13:30:17 浏览:768
安卓手机要怎么下载突击队ol 发布:2024-11-30 13:03:42 浏览:637
修改密码sql语句 发布:2024-11-30 12:54:54 浏览:156
搭建手游用什么服务器 发布:2024-11-30 12:54:09 浏览:171