高苗苗 发表于 2019-2-16 11:58

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

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

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

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

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

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() 函式。(危险)
import time, sys, hashlib
status = 0

# MD5 hash
ca11 = 2813401333L
m0v = str(hex(ca11))   # a7b118f5
jumP = 3548329217L
a_dd = str(hex(jumP))    # d37f3501
_call = 1620897738
syS = str(hex(_call))    # 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 == str(hex(m_1)) + str(hex(m_2)):                   # 'd30e1207' + '5d10d42b'
            status = 1
            key_code = eval('7695') + 8             # 7703
      elif nu1l == str(hex(m_3)):      # 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 == str(hex(2036215846)) + str(hex(5692103260L)):    # '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 日)
17360706
17370706
17680706
17690706
19920706
19930706
20240706
20250706
672720706
672730706

夏沫梦影 发表于 2019-2-16 13:13

sophmore8 发表于 2019-2-16 13:11
我的热心值怎么是0啊

多发贴,其他人评分就有了

super001 发表于 2019-2-16 12:17

python是怎么生成EXE文件的?

潇洒超人 发表于 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文件在反编译能够得出源码。

超大的橙子 发表于 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还是入门水平。

我也是菜鸟,慢慢来,加油
页: [1] 2 3
查看完整版本: [CM] 最近学习python,写了一个小程序