吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8583|回复: 5
收起左侧

[CTF] ctf pyc反编译+解密详细分析

[复制链接]
52lxw 发表于 2019-5-15 21:16
用EasyPythonDecompiler反编译pyc文件得到:


[Python] 纯文本查看 复制代码
# Embedded file name: secend.py
print "Welcome to Processor's Python Classroom Part 2!\n"
print "Now let's start the origin of Python!\n"
print 'Plz Input Your Flag:\n'
enc = raw_input()
len = len(enc)
enc1 = []
enc2 = ''
aaa = 'ioOavquaDb}x2ha4[~ifqZaujQ#'
for i in range(len):
    if i % 2 == 0:#2
        enc1.append(chr(ord(enc[i]) + 1))
    else:#1
        enc1.append(chr(ord(enc[i]) + 2))

s1 = []
for x in range(3):#encrypt the plain
    for i in range(len):#
        if (i + x) % 3 == 0:#swap the position
            s1.append(enc1[i])

enc2 = enc2.join(s1)
if enc2 in aaa: #another way to judge equal
    print "You 're Right!"
else:
    print "You're Wrong!"
    exit(0)

分析一下代码,先进行移位,偶数移1位,奇数移2位,然后进行了类似交换的加密,我动态调试一下
[Python] 纯文本查看 复制代码
[backcolor=#40332b]aaa[/backcolor] = [color=#a5c261]'ioOavquaDb}x2ha4[~ifqZaujQ#'[/color]
s1 = []
for x in range(3):#encrypt the plain
    for i in range(len(aaa)):
        if (i + x) % 3 == 0:#swap the position
            print str(i)+',',
    print

输出
[Python] 纯文本查看 复制代码
0, 3, 6, 9, 12, 15, 18, 21, 24,
2, 5, 8, 11, 14, 17, 20, 23, 26,
1, 4, 7, 10, 13, 16, 19, 22, 25,

可以发现原来的下标顺序0,1,2,3,4,5,....变为了0,3,6,9,12....我们写个脚本把顺序还原
[Python] 纯文本查看 复制代码
aaa = 'ioOavquaDb}x2ha4[~ifqZaujQ#'
print len(aaa)
matrix=[0, 3, 6, 9, 12, 15, 18, 21, 24,
2, 5, 8, 11, 14, 17, 20, 23, 26,
1, 4, 7, 10, 13, 16, 19, 22, 25
        ]
s1 = []
for x in range(3):#encrypt the plain
    for i in range(len(aaa)):
        if (i + x) % 3 == 0:#swap the position
            print str(i)+',',
    print
plain=['']*27
for i in range(27):
    plain[matrix[i]]=aaa[i]
print ''.join(plain)

输出
[Python] 纯文本查看 复制代码
27
0, 3, 6, 9, 12, 15, 18, 21, 24,
2, 5, 8, 11, 14, 17, 20, 23, 26,
1, 4, 7, 10, 13, 16, 19, 22, 25,
iibof}OqxaZ2vahquauj4aQ[D#~

解下来解密移位,很简单,把加变成减就行了:
[Python] 纯文本查看 复制代码
enc1=[]
for i in range(27):
    if i % 2 == 0:#2
        enc1.append(chr(ord(plain[i]) - 1))
    else:#1
        enc1.append(chr(ord(plain[i]) - 2))

最后写到一起
[Python] 纯文本查看 复制代码
aaa = 'ioOavquaDb}x2ha4[~ifqZaujQ#'
print len(aaa)
matrix=[0, 3, 6, 9, 12, 15, 18, 21, 24,
2, 5, 8, 11, 14, 17, 20, 23, 26,
1, 4, 7, 10, 13, 16, 19, 22, 25
        ]
s1 = []
for x in range(3):#encrypt the plain
    for i in range(len(aaa)):
        if (i + x) % 3 == 0:#swap the position
            print str(i)+',',
    print
plain=['']*27
for i in range(27):
    plain[matrix[i]]=aaa[i]
print ''.join(plain)
enc1=[]
for i in range(27):
    if i % 2 == 0:#2
        enc1.append(chr(ord(plain[i]) - 1))
    else:#1
        enc1.append(chr(ord(plain[i]) - 2))
print "".join(enc1)

[Python] 纯文本查看 复制代码
27
0, 3, 6, 9, 12, 15, 18, 21, 24,
2, 5, 8, 11, 14, 17, 20, 23, 26,
1, 4, 7, 10, 13, 16, 19, 22, 25,
iibof}OqxaZ2vahquauj4aQ[D#~
hgame{Now_Y0u_got_th3_PYC!}

免费评分

参与人数 3威望 +1 吾爱币 +10 热心值 +2 收起 理由
Hmily + 1 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
liphily + 2 + 1 一脸学习的样子进来,然后懵逼的出去
itmaple + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

chenjingyes 发表于 2019-5-16 00:41
谢谢楼主分享   很适合入门练习
冥界3大法王 发表于 2019-5-16 08:05
@52lxw
楼主你给我表演下破解Wing IDE 7.0
这个让我搞的无限试用了,如何注册成功不太会弄。
Fris 发表于 2019-5-16 19:35
冥界3大法王 发表于 2019-5-16 08:05
@52lxw
楼主你给我表演下破解Wing IDE 7.0
这个让我搞的无限试用了,如何注册成功不太会弄。

无限试用就行了呗,还追求那么多干啥?
话说你汉化完了没?共享一下呗。
FZW云焕 发表于 2019-5-26 09:47
高手啊,感觉很厉害
ruin1990 发表于 2019-6-12 18:08
谢谢楼主分享,这个过程实践挺实用
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-29 01:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表