Easy kengen

来源:互联网 发布:善用佳软 知乎 编辑:程序博客网 时间:2024/06/05 01:56

题目链接 : http://reversing.kr/challenge.php 第二题
下载下来是一个压缩包,解压后有一个exe文件和一个txt文件。打开readme,可以看到下面内容:

***ReversingKr KeygenMe
Find the Name when the Serial is 5B134977135E7D13***

看意思应该就是在程序输入name,程序会计算出一个Serial,正确答案的话应该最后算出来的等于“5B134977135E7D13”。
下面看程序,用IDA打开,F5反汇编,得到下面内容:

这里写图片描述

主要就是sprintf那一句,将输入的name与一个数进行异或,所以只要将Serial异或一次就可以得到原始的name。
程序如下:

Serial = '5B,13,49,77,13,5E,7D,13'Serial = [int(i, base=16) for i in Serial.split(',')]encode = [16,32,48]for i in range(8):    Serial[i] = encode[i % 3] ^ Serial[i]name = ''.join([chr(i) for i in Serial])print(name)

最后输出:K3yg3nm3
测试一下
这里写图片描述
正确。