【逆向学习】暗号 writeup

这是16年国赛的一道题,以前做过一次,现在又重新做一下,做完这题感觉到。。。单纯靠脑子来跑程序真心不可靠,还是copy下再run下观察结果来得实际点

首先看下check函数
【逆向学习】暗号 writeup_第1张图片

在WeAretheChangPingPeople这个函数里面,在5555端口监听信息,然后与hhxptgdlffojwztpewc比较

接下来看下NowYouSeeMe这个函数
开头的一大段连接5555端口之类的就不看了,我们来看下主要的部分

【逆向学习】暗号 writeup_第2张图片
首先将输入的字符转化为三位十进制数

比如aaa就变成
097097097

然后下面有两个循环,里面那个循环其实就是某种意义上实现一个大数除法

把代码复制下来,跑下看下,我用的是aaa

097097097
003734503
000143634
000005524
000000212
000000008
000000000

其实就是把一个大数除以26,然后把最后三位单独拿出来,余26再加上97,最后拼接起来和hhxptgdlffojwztpewc比较

下面是一个简单的代码,可以把大数给复原

b=0
a='hhxptgdlffojwztpewc'
for i in range(len(a)):
    b*=26
    b+=ord(a[len(a)-i-1])-97
    print(b)

然后前面补个0,再每三位解析成一个字符就可以了

你可能感兴趣的:(二进制-逆向工程)