reversing.kr easykeygen 之wp
补充:
int(x,[base]):
就是将x(通常是一个字符串)按照base进制转换成整数。
比如:
int(‘’) ##转换成整数10
int('', ) ##''按16进制转换,将得到整数16
int('ff', ) ##得到255
int('ff') ## 出错,无法将字符串'ff'按照10进制转换。
对Python编程还是不太熟悉,因此借用了别人的脚本并做了分析
首先主函数代码:
int __cdecl main(int argc, const char **argv, const char **envp)
{
signed int v3; // ebp@1
signed int i; // esi@1
int result; // eax@6
int v6; // [sp+0h] [bp-13Ch]@0
int v7; // [sp+0h] [bp-13Ch]@1
char v8; // [sp+Ch] [bp-130h]@1
char v9; // [sp+Dh] [bp-12Fh]@1
char v10; // [sp+Eh] [bp-12Eh]@1
char v11; // [sp+10h] [bp-12Ch]@1
char v12; // [sp+11h] [bp-12Bh]@1
__int16 v13; // [sp+71h] [bp-CBh]@1
char v14; // [sp+73h] [bp-C9h]@1
char v15; // [sp+74h] [bp-C8h]@1
char v16; // [sp+75h] [bp-C7h]@1
__int16 v17; // [sp+139h] [bp-3h]@1
char v18; // [sp+13Bh] [bp-1h]@1 v11 = ;
v15 = ;
memset(&v12, , 0x60u);
v13 = ;
v14 = ;
memset(&v16, , 0xC4u);
v17 = ;
v18 = ;
v8 = ;
v9 = ;
v10 = ;
sub_4011B9((int)aInputName, v6);
scanf(aS, &v11);
v3 = ;
for ( i = ; v3 < (signed int)strlen(&v11); ++i )
{
if ( i >= )
i = ;
sprintf(&v15, aS02x, &v15, *(&v11 + v3++) ^ *(&v8 + i));
}
memset(&v11, , 100u);
sub_4011B9((int)aInputSerial, v7);
scanf(aS, &v11);
if ( !strcmp(&v11, &v15) )
{
sub_4011B9((int)aCorrect, *(int *)&v8);
result = ;
}
else
{
sub_4011B9((int)aWrong, *(int *)&v8);
result = ;
}
return result;
}
题目中给了要求:

具体分析都写在了py脚本里了:
#!/usr/bin/env python
import string
encode = [16,32,48]
I =0
dic =string.digits+string.letters+string.punctuation #数字字母标点,设置提取密码字典
Ser = ''
Sercmp ='5B,13,49,77,13,5E,7D,13'
Sercmp = Sercmp.split(',') for S in Sercmp:
for d in dic:
if encode[I%3]^ord(d) == int(S,16): #I%3>if(i>=3) encode[I%3]>v8+i
# if ( !strcmp(&v11, &v15) ) v11前v15S
# {
# sub_4011B9((int)aCorrect, *(int *)&v8);
# result = 0;
# }
print S
Ser+=d
I+=1
break
print Ser #Ser是密码 raw_input()
得到结果:

要学会自己用python写脚本。。。可就是迈不出第一步。
附:又找到一篇wp,可能这个看这更明白些:
name以3个字节为一组,每组分别与16,32,48异或并转换为16进制数,最后与serial对比,脚本如下 serial = '5B134977135E7D13'
name = '' for i in xrange(0, len(serial), 2):
name += chr(int(serial[i:i+2], 16) ^ (16 * (i / 2 % 3 + 1))) print name
reversing.kr easykeygen 之wp的更多相关文章
- [Reversing.kr] Easy Crack Writeup
题目:http://reversing.kr/ Easy Crack IDA打开.分析可知Sub_401080是关键函数.F5后. 当满足 则跳转成功.拼接后得到flag flag: Ea5yR3ve ...
- reversing.kr replace 之write up
好似reversing除了前几个容易些,后面的都很难的.看wp都很困难.首先wp提示crtl+n查看程序所有函数,并且找到了测试函数: 补充: GetDlgItemInt函数通过发送控件WM_GETT ...
- reversing.kr easy crack 之write up
之前学逆向感觉学得一踏糊涂,这阶段好多师傅带我,一定要好好学,重新开始,认真学习. 来看打开可执行文件: 用ollydbg载入,单步执行后停到了入口点: 分析入口点,并没有加壳,于是F9执行程序,跳出 ...
- [Reversing.kr] Easy ELF Writeup
IDA打开,看到main()函数,当sub_8048451() 返回1 是flag正确. 跟踪函数. 脚本: #!usr/bin/env python #!coding=utf-8 __author_ ...
- [Reversing.kr] Easy_KeygenMe Writeup
IDA打开.Main()函数就是关键算法 v6,v7,v8 是连续的 .可看成 L=[16,32,48].输入的name每位分别于L[]异或 得到的值存在v13.然后清空v9的值 ,输入Serial储 ...
- pwnable.kr uaf之wp
几乎都想要放弃了,感觉学了好久还是什么都不会,这个题好像很难的样子,有很多知识点需要补充一下: 1.[UAF]分配的内存释放后,指针没有因为内存释放而变为NULL,而是继续指向已经释放的内存.攻击者可 ...
- 【练习】reserving.kr之easy ELF
打开主函数: int __cdecl main() { int result; // eax@2 write(, "Reversing.Kr Easy ELF\n\n", 0x17 ...
- 网络安全学习和CTF必不可少的一些网站
[转载备用] 原文地址 http://blog.csdn.net/ida0918/article/details/52730662 http://www.sec-wiki.com/skill/ 安全 ...
- 【转】个人总结-网络安全学习和CTF必不可少的一些网站
转自:http://blog.csdn.net/ida0918/article/details/52730662 学习的地方很多,不能一一列举,一些优秀的网址和博客可能也没有提到,大家补充吧:P就简单 ...
随机推荐
- selenium自动化测试实例
11.1使用JavaScripExecutor单击元素 被测试网页:http://www.sogou.com Java代码 public class NewTest { WebDriver ...
- Hdu 1043 Eight (八数码问题)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1043 题目描述: 3*3的格子,填有1到8,8个数字,还有一个x,x可以上下左右移动,问最终能否移动 ...
- linux实现多台服务器文件同步
inotify-tools+rsync实时同步文件安装和配置 Linux+Nginx+PHP+MySQL+MemCached+eaccelerator安装优化记录(见 http://www.linux ...
- 18.5.1使用Proxy和InvocationHandler创建动态代理
package d18_5_1; public interface Person { void walk(); void sayHello(String name); } package d18_5_ ...
- C8051特点
C8051与传统51的区别在于优先权交叉开关.系统时钟.SFR寄存器几个方面: 一 优先权交叉开关:传统的51外设功能是固定分配或者复用分配到指定引脚,而C8051则是通过优先权交叉开关设置,即要想分 ...
- 什么是极坐标? —— 一点微小的想法 What is Polar Coordinate ? - Some Naive Thoughts about It
Can you answer these three questions? The answer seems to be trivial, since we can use our eyes to o ...
- go获取当前执行的位置程序
func getCurrentPath() string { _, filename, _, ok := runtime.Caller(1) var cwdPath string if ok { cw ...
- mySQL 从删库到跑路
问题: 使用python实现load data infile ...向mySQL中导入数据.虽然成功执行但是数据库中没增加记录. 解决: zz的我execute之后没有commit.
- iPhone4 offical AD
iPhone4 is so much more than just a new products.I mean this would have a lot of impact on the way i ...
- life of a NPTL pthread
这是2013年写的一篇旧文,放在gegahost.net上面 http://raison.gegahost.net/?p=91 March 7, 2013 life of a NPTL pthread ...