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就简单 ...
随机推荐
- oracle错误:1067进程意外终止
oracle错误:1067进程意外终止我Oracle安装完了之后可以运行的 ,过了一段时间不可以了,就上网找了一下,原来是自己的ip已经改变.我一直使用IP地址的. 将D:\oracle\produc ...
- spring boot :error querying database. Cause: java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required
配置多个数据源启动报错,error querying database. Cause: java.lang.IllegalArgumentException: dataSource or dataSo ...
- zabbix数据库存储和性能
1 基本认识 1.1 history zabbix默认每分钟采集一次item的数据,然后会存入history表中.主机越多,需要采集的item值就越多,history表的增长速度就越快. 在histo ...
- SAE上无法加载css等文件
如果你的SAE用到了这些文件,你会发现本地虽然能够运行成功,但是SAE上却无法加载. 其实就是地址发生了变化,我们告诉SAE这些东西怎么找就可以了. 例如我的css和js文件放在了app/static ...
- 剪花布条 HDU - 2087
剪花布条 HDU - 2087 要求各个匹配出来的子串不重叠的kmp.实际上直接贪心从前往后找,每找到一个就把当前j标为0即可.(一般kmp是标为f[j]) #include<cstdio> ...
- java常用类要点总结
- Unity基础知识
hierarchy视图选中,点击scene视图,按f键聚焦 persp相当于是透视视野 在persp模式下,物体在scene界面上所呈现的画面是给人一种距离摄像头近的物体显示的大,距离摄像头远的物体显 ...
- poj1815Friendship(最小割求割边)
链接 题意为去掉多少个顶点使图不连通,求顶点连通度问题.拆点,构造图,对于<u,v>可以变成<u2,v1> <v2,u1>容量为无穷,<u1,u2>容量 ...
- Java网络编程学习笔记
Java网络编程,我们先来看下面这一张图: 由图可得:想要进行网络编程,首先是服务器端通过ServerSocket对某一个端口进行监听.通过accept来判断是否有客户端与其相连.若成功连上,则通过r ...
- PMP项目管理学习笔记(5)——整合管理之制定项目章程
关于两个输入 在很多过程中,会用到这两个输入: 企业环境要素 是关于你的公司如何开展业务所需要知道的所有信息. 在你计划项目时,有很多关于公司的信息会非常有用,你需要知道各个不同部门是如何运作的,你所 ...