吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4761|回复: 21
收起左侧

[CrackMe] [CM] 最近学习python,写了一个小程序

[复制链接]
高苗苗 发表于 2019-2-16 11:58
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。

本帖最后由 高苗苗 于 2019-2-16 12:02 编辑

学习python,写了个小程序,也不知道算不算CM
若输入正确会有 SUCCESS 提示字样,失败则提示 FAILED

(由于使用py2exe,后再使用单文件制作打包了程序,所以大小超过了1M,只能传连接了)

下载地址  https://www.lanzouj.com/i35lued

免费评分

参与人数 4吾爱币 +8 热心值 +4 收起 理由
CrazyNut + 6 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
烽火十二月 + 1 + 1 用心讨论,共获提升!
csftech + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
海底市民 + 1 我很赞同!

查看全部评分

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

csftech 发表于 2019-2-16 18:58
本帖最后由 csftech 于 2019-2-17 00:05 编辑

这个程序很有意思。
取电脑日期(月,日)及用户输入之商数余数,进行后续两次 MD5 比对杂凑值。
暴力破解出来 e_rr0r 为 1738,_j_mp 为 17,也就是说电脑日期(日)得设定为 17。
杂凑值正确则校验余数是否为 706,余数校验中的 MD5 计算没有意义,只是再次确认余数是否为 706 。

这其实算 KeyGenMe,虽然还是可以 CM 暴力破解。
另外提一下 Python 2 不要用 input() 函式。(危险)
[Python] 纯文本查看 复制代码
import time, sys, hashlib
status = 0

# MD5 hash
ca11 = 2813401333L
m0v = str(hex(ca11))[2:10]     # a7b118f5
jumP = 3548329217L
a_dd = str(hex(jumP))[2:10]    # d37f3501
_call = 1620897738
syS = str(hex(_call))[2:10]    # 609cefca
cal1 = 18381427
t0m = str(cal1)                # 18381427

# unknown
PuSh = 2694406661L
key_code = PuSh + 26           # 2694406687

# date
sdk_1 = time.localtime(time.time()).tm_mon    # month
_j_mp = time.localtime(time.time()).tm_mday   # correct one is 17 (bruteforce)
Ca1l = sdk_1 % 13                             # month
C_cl = (Ca1l + 34323) % 17                    # Ca1l % 17 = month (34323 % 17 = 0)

# user input and verification
user_input = input('')
user_input_quotient = user_input / 10000
user_input_remainder = user_input % 10000
err0r = C_cl + user_input_quotient
e_rr0r = err0r & 65246
cfgh = str(e_rr0r) + '_52_pojie'              # correct e_rr0r is 1738 (bruteforce)
ae = hashlib.md5()
ae.update(cfgh)
mv_0 = ae.hexdigest()
emp_0 = mv_0 + '_52_pojie' + str(_j_mp)
ssf = hashlib.md5()
ssf.update(emp_0)
emp_0 = ssf.hexdigest()
if emp_0 == m0v + a_dd + syS + t0m:
    if user_input_remainder + 3 - 2 == (user_input_remainder & 706) + 1:
        gtt = hashlib.md5()
        gtt.update(str(user_input_remainder) + 'jmp')
        nu1l = gtt.hexdigest()
        m_1 = 3540914695L
        m_2 = 1561383979
        m_3 = 8309
        if nu1l[0:16] == str(hex(m_1))[2:10] + str(hex(m_2))[2:10]:                   # 'd30e1207' + '5d10d42b'
            status = 1
            key_code = eval('7695') + 8             # 7703
        elif nu1l[5:9] == str(hex(m_3))[2:10]:      # 2075
            status = 2
        else:
            status = 3
    else:    # dead end
        key_code = 2899
        wfrr = hashlib.md5()
        wfrr.update(str(user_input_remainder) + 'call')
        nul1 = wfrr.hexdigest()
        if nul1[0:12] == str(hex(2036215846))[2:10] + str(hex(5692103260L))[2:10]:    # '795e3026' + '153469a5'
            status = 1
        else:
            status = 4
else:
    print 'Error'
if status > 0 and status < 3:
    key_code = 59
    print 'SUCCESS', status
else:
    key_code = 50
    print 'FAILED', status
end__flag = raw_input('Press any key to exit...')

文末附上 keygen。

补充:
MD5(MD5('1738' + '_52_pojie') + '_52_pojie' + '17') = a7b118f5d37f3501609cefca18381427
MD5('706' + 'jmp') = d30e12075d10d42b93b6ff129b7ad923
总共 组有效 Key,要修改日期

再补充:
暴力破解 e_rr0r 为 1738,但
err0r = C_cl + user_input_quotient
e_rr0r = err0r & 65246

由于 AND 65246,所以 err0r 总共有 组可能性 (1738, 1739, 1770, ..., 67531, 67562, 67563, ...) 让 e_rr0r 为 1738
C_cl 为月份。
keygen 只使用第一组 1738。
user_input = (1738 - C_cl) * 10000 + 706

在这边给予几组可用Key:(将电脑日期更改为 2 月 17 日)
[Plain Text] 纯文本查看 复制代码
17360706
17370706
17680706
17690706
19920706
19930706
20240706
20250706
672720706
672730706

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

免费评分

参与人数 4吾爱币 +4 热心值 +4 收起 理由
CrazyNut + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
易疯子 + 1 + 1 python新手膜拜、、、
miguko + 1 我很赞同!
高苗苗 + 1 我很赞同!

查看全部评分

夏沫梦影 发表于 2019-2-16 13:13
super001 发表于 2019-2-16 12:17
潇洒超人 发表于 2019-2-16 12:21
super001 发表于 2019-2-16 12:17
python是怎么生成EXE文件的?

也是通过第三方打包 pyinstaller百度去吧
潇洒超人 发表于 2019-2-16 12:23
很想破你的Crackme 可惜reverse还是入门水平。
jy04468108 发表于 2019-2-16 13:24
密码看起来不是string型,应该是int型,电脑没装python环境,不然应该可以unpy2exe来编程pyc文件在反编译能够得出源码。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x
超大的橙子 发表于 2019-2-16 14:01
l403091644 发表于 2019-2-16 13:24
密码看起来不是string型,应该是int型,电脑没装python环境,不然应该可以unpy2exe来编程pyc文件在反编译能 ...

想问下怎么拿到pyc文件的,我用pyinstxtractor不能把exe反编译
jy04468108 发表于 2019-2-16 14:08
超大的橙子 发表于 2019-2-16 14:01
想问下怎么拿到pyc文件的,我用pyinstxtractor不能把exe反编译

https://github.com/4w4k3/rePy2exe
jy04468108 发表于 2019-2-16 14:14
超大的橙子 发表于 2019-2-16 14:01
想问下怎么拿到pyc文件的,我用pyinstxtractor不能把exe反编译

我没有python环境,成功了的话,给我也发一下。我是直接解压缩包得到的exe然后用记事本打开的。
 楼主| 高苗苗 发表于 2019-2-16 15:24
潇洒超人 发表于 2019-2-16 12:23
很想破你的Crackme 可惜reverse还是入门水平。

我也是菜鸟,慢慢来,加油
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 16:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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