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就简单 ...
随机推荐
- jQuery笔记之工具方法extend插件扩展
jQuery工具方法 $.extend()插件扩展(工具方法) $.fn.extend()插件扩展(实例方法) 浅度克隆.深度克隆 两个方法基本是一样的,唯一不同的就是调用方式不一样 -------- ...
- 目标&计划
目标 感觉起来NOIP还是能考到一个比较好的分数的吧 550+? 现在可能还不大行,但是过3个月或许还是能考到的 所以先订下NOIP保底500争取550+吧 至于省选... 前面有一群巨佬挡着,感觉想 ...
- UvaLive6439(string使用、回文串)
样例手写一写很容易发现规律(前后一样的串,则ans+=2),实现起来却忘了string的便捷性,其实根本用不到哈希. ; int n, ans; string s, t1, t2; int main( ...
- Helvetic Coding Contest 2017 online mirror (teams allowed, unrated) J
Description Heidi's friend Jenny is asking Heidi to deliver an important letter to one of their comm ...
- Coloring Trees CodeForces - 711C
Coloring Trees CodeForces - 711C 题意:有n个点,每个点有一个c值,如果为0表示它没有被染色,否则表示它被染成了c值的颜色.颜色有1到m.把第i棵树染成颜色j所需要的代 ...
- Kruskal 2015百度之星初赛2 HDOJ 5253 连接的管道
题目传送门 /* 最小生成树(Kruskal):以权值为头,带入两个端点,自然的排序;感觉结构体的并查集很好看 注意:题目老头要的是两个农田的高度差,中文水平不好,题意理解成和平均值的高度差! */ ...
- Oracle 十大SQL语句
oracle数据库十大SQL语句 操作对象(object) /*创建对象 table,view,procedure,trigger*/ create object object ...
- iOS 播放本地,网络视频
/** * 创建媒体播放控制器MPMoviePlayerControlle 可以控制尺寸 * * @return 媒体播放控制器 */ -(MPMoviePlayerController *)mo ...
- Sublime折腾记录
本文可以理解为FAQ,主要是为了大家GET一些技能,具体内容包括LICENSE.重置.Package Control的安装,其他内容以后可能补充... 最后说明一下自己的版本:Build 3114 L ...
- prevent to do sth 与 prevent sb (from) doing 用法
prevent to do sth 如: Do not water in before making a turn every time 9 days, make wilting of its bra ...