能力值:
( LV10,RANK:163 )
|
-
-
2 楼
有点简单,这加密不如对称加密坚固。 撸了一份源码。 楼主这个文件名长一点就溢出了。
最后于 2019-11-27 12:40
被yimingqpa编辑
,原因:
|
能力值:
( LV4,RANK:52 )
|
-
-
3 楼
个人经验来看,,不难,,
|
能力值:
( LV4,RANK:40 )
|
-
-
4 楼
@yimingqpa 我试了文件名100字节也没见到溢出?
|
能力值:
( LV10,RANK:163 )
|
-
-
5 楼
sjdkx
@yimingqpa 我试了文件名100字节也没见到溢出?
不是,里面算key的地方. \ 最后位置 + 文件名内容 * 内容 累加,感觉会超过int范围的样子。
|
能力值:
( LV4,RANK:40 )
|
-
-
6 楼
楼上,那是模运算不会溢出的。且也是对称加密。能破解才怪。
|
能力值:
( LV9,RANK:172 )
|
-
-
7 楼
mac电脑没有windows环境, 拿ida看了一下msvcrt里面的srand, rand。 循环到 0x22234 就出来了。 2**32的空间也不大,能接受,换成c实现更快。附件是要解密的密文。 楼主啊,能去研究真正的技术吗,整天随机随机随机,真无聊。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import chardet
import struct
dword_424A30 = 0
def msvcrt_srand(x):
global dword_424A30
dword_424A30 = x
# return msvcrt.srand(x)
def msvcrt_rand():
global dword_424A30
dword_424A30 = 214013 * dword_424A30 + 2531011
return (dword_424A30 >> 16) & 0x7FFF
# return msvcrt.rand()
if __name__ == '__main__':
with open('./baidu.com.html', 'rb') as f:
bin = f.read()
check_len = 128 if len(bin) > 128 else len(bin)
for i in range(2 ** 32):
# i = 0x22234
msvcrt_srand(i)
text = []
for b in bin[0:check_len]:
b0 = msvcrt_rand() & 0xff
b1 = i & 0xff
text.append(struct.pack('B', 0xff & (b - b1 - b0)))
plaintext = b''.join(text)
ret = chardet.detect(plaintext)
if ret['confidence'] > 0.9:
if ret['encoding'] in ['GBK', 'GB2312', 'utf-8', 'ascii']:
print(i, plaintext)
break
print('end')
|
能力值:
( LV4,RANK:40 )
|
-
-
8 楼
你以为 “循环到 0x22234 就出来了”,用rand() 加密并不是直接用其数值做密钥,通常要乘一个系数,并加一个系数,不要自以为是,没有那么简单的现实。 这种简单的加密都没法破解,使其复杂化的东西多了,都还没用呢。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
这也不比加解密时输个口令好用吧? 安全效果完全一致
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
比输入口令的安全一点点,防肩窥和键盘记录器,重点是适合装*
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
伪随机数是真的不安全,已知明文攻击和选择明文攻击随便就把你的核心密钥求出来了。。。
|
|
|