补充:

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的更多相关文章

  1. [Reversing.kr] Easy Crack Writeup

    题目:http://reversing.kr/ Easy Crack IDA打开.分析可知Sub_401080是关键函数.F5后. 当满足 则跳转成功.拼接后得到flag flag: Ea5yR3ve ...

  2. reversing.kr replace 之write up

    好似reversing除了前几个容易些,后面的都很难的.看wp都很困难.首先wp提示crtl+n查看程序所有函数,并且找到了测试函数: 补充: GetDlgItemInt函数通过发送控件WM_GETT ...

  3. reversing.kr easy crack 之write up

    之前学逆向感觉学得一踏糊涂,这阶段好多师傅带我,一定要好好学,重新开始,认真学习. 来看打开可执行文件: 用ollydbg载入,单步执行后停到了入口点: 分析入口点,并没有加壳,于是F9执行程序,跳出 ...

  4. [Reversing.kr] Easy ELF Writeup

    IDA打开,看到main()函数,当sub_8048451() 返回1 是flag正确. 跟踪函数. 脚本: #!usr/bin/env python #!coding=utf-8 __author_ ...

  5. [Reversing.kr] Easy_KeygenMe Writeup

    IDA打开.Main()函数就是关键算法 v6,v7,v8 是连续的 .可看成 L=[16,32,48].输入的name每位分别于L[]异或 得到的值存在v13.然后清空v9的值 ,输入Serial储 ...

  6. pwnable.kr uaf之wp

    几乎都想要放弃了,感觉学了好久还是什么都不会,这个题好像很难的样子,有很多知识点需要补充一下: 1.[UAF]分配的内存释放后,指针没有因为内存释放而变为NULL,而是继续指向已经释放的内存.攻击者可 ...

  7. 【练习】reserving.kr之easy ELF

    打开主函数: int __cdecl main() { int result; // eax@2 write(, "Reversing.Kr Easy ELF\n\n", 0x17 ...

  8. 网络安全学习和CTF必不可少的一些网站

    [转载备用] 原文地址  http://blog.csdn.net/ida0918/article/details/52730662 http://www.sec-wiki.com/skill/ 安全 ...

  9. 【转】个人总结-网络安全学习和CTF必不可少的一些网站

    转自:http://blog.csdn.net/ida0918/article/details/52730662 学习的地方很多,不能一一列举,一些优秀的网址和博客可能也没有提到,大家补充吧:P就简单 ...

随机推荐

  1. 安装截图软件shutter

    直接进入软件中心安装吧 不知道软件中心安装的软件可以apt upgrade 命令更新么 应该是可以的,感觉软件中心就是个图形化的apt和新立得差不多 shutter可以放大缩小截图, ctrl + 鼠 ...

  2. 2019 年 Vue 学习路线图!

    如果你是 Vue 开发新手,可能已经听过很多行话术语,比如单页面应用程序.异步组件.服务器端渲染,等等.你可能还听说过与 Vue 有关的一些工具和库,比如 Vuex.Webpack.Vue CLI 和 ...

  3. dos 下 批量替换 只支持txt

    首先必须存成 bat 格式,其次识别不了word 1.bat ##替换12 成12*3 @echo offsetlocal enabledelayedexpansionfor /F "tok ...

  4. Problem D: 勤奋的涟漪2 dp + 求导

    http://www.gdutcode.sinaapp.com/problem.php?cid=1049&pid=3 dp[i][state]表示处理了前i个,然后当前状态是state的时候的 ...

  5. python_函数嵌套(4)

    第1章 名称空间 1.1 定义 1.2 变量运行流程 1.3 临时名称空间 1.4 python三种名称空间 第2章 作用域 2.1 作用域分类 2.2 加载顺序 2.3 取值顺序 函数嵌套 2.4 ...

  6. 分享几个自己喜欢的前端UI框架

    http://www.layui.com/ http://element-cn.eleme.io/#/zh-CN/component/installation

  7. canvas防画图工具

    <style> body {   background: black;   text-align: center; } #cans {   background: white; } < ...

  8. 消息中间件与RPC的区别

    消息中间件和消息通信与RPC各自具有怎样的优势,如何互补消息中间件主要实现的是异步.弹性消息以及队列,弹性消息有时可以借助于外存从而一定程度上可以实现峰值缓存,有效均衡服务器端压力,同时消息可以进行一 ...

  9. HDU 5410 CRB and His Birthday (01背包,完全背包,混合)

    题意:有n种商品,每种商品中有a个糖果,如果买这种商品就送多b个糖果,只有第一次买的时候才送.现在有m元,最多能买多少糖果? 思路:第一次买一种商品时有送糖果,对这一次进行一次01背包,也就是只能买一 ...

  10. 洛谷 P2053 [SCOI2007]修车

    题目描述 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待 ...