本帖最后由 神女软件定制 于 2024-9-30 17:58 编辑
本工具开发耗时近一个月,一直在不停的调优,重构,已经优化到极致效率,正确配置的前提下,所有算法几乎都能毫秒单位算出结果,本工具并非完全免费
当前分发版本为免费版,所有列出算法可用,但是只输出算出的加密算法名称,具体算法参数加密呈现,有偿解密,请悉知,免费版至少可以知道是什么算法名称,以及相关信息是否包含
本工具为高级工具,具体使用请先仔细阅读以下说明:
原理:在进程内存中收集所有字符串,用指定的算法,尝试还原指定加密结果的加密过程
软件整体分为3个步骤:1.dump,2.索引,3.计算
dump:
把指定进程的内存区域,保存到磁盘文件。分为两种dump方式
1.常见的直接dump,根据指定的进程id,直接对目标进程dump,这种方式需要原文和key常驻在内存中,如果原文和key是局部变量,那么它在函数执行完就会释放了
2.监测到指定的请求后dump(匹配请求后dump),大部分的需要还原加密的场景,都是post/get参数,所以在匹配到对应的请求之后立即dump,正是时候
软件内置了http抓包(特别鸣谢sunny@秦天),可以由用户手动开启,并选择是否设置系统代理,或对指定的进程代理(进程代理)
并且可以由用户指定一个正则表达式(正则匹配),捕获到https请求时,会拼接字符串$"{ url }\r\n{ headers }\r\n{ postdata }",然后搜索指定的正则表达式,如果成功匹配,就对相关进程dump
这里的“相关进程”,可以是发起https请求的进程(请求发起进程),也可以是发起请求的相关进程(子进程和兄弟进程)(请求发起进程及相关进程),还可以是指定具体进程id的进程(指定进程)
这么设计以应对多种环境,比如浏览器,它的网络进程负责网络请求,但是真正的计算得出密文的进程是引擎进程
前面提到的正则表达式,可以包含分组,你可以把具体的密文信息匹配到分组里,这个后面很有用
dump时挂起进程,防止在dump的时候,变量释放了
最小化内存dump,只dump目标进程的可读可写内存区域
索引:
在指定dump文件中,分析采集所有字符串
因为dump时可能dump了不止一个文件,所以索引可以对多个文件进行,但是这么多文件,大概率只有一个是我们真正需要的,所以需要想办法把它过滤出来,至少排除一些无关的
所以设置了dump文件必须包含以下参数,会对所有dump文件扫描,只有dump文件内容中包含所有指定的字符串,才会保留下来
参数可以使用变量$url,表示请求时的url,如果是直接dump的文件,会提示无效变量,将会忽略
默认配置中,指定了“--type=renderer”参数,这是edge的js引擎进程一定包含的内容,对于其他环境,请删除
正确配置状态最终会保留1-3个dump文件,如果太多,那么就是没有设置好过滤参数,会照成计算量浪费
只分析读写堆内存,可选缩小分析区域
分析模式1:对于浏览器,和模拟器环境,这种有虚拟机的,使用这个模式
分析模式2:对于原生软件(易语言),使用这个模式
长度过滤:可选对分析出来的字符串,根据长度过滤排除一些大概率不需要的,里面会有大量1字节、2字节长、……的小字符串,这种大概率不是我们需要的,并且占比还很大,可以选择直接过滤掉
限定ascii:可选限定仅包含有效的ascii字符,完全排除gbk,utf8,因为基本都是ascii,并且ascii大概率可以认为就是有效字符串,其他的可能是其他杂乱内存数据被收集了
剔除重复:可选对分析出来的字符串去重处理,80W也要不了几十毫秒,建议勾选,对于hash算法,意义不大,但是对于hmac和加密算法,能减少很多
推理/计算:
根据索引处理好的所有字符串,指定的算法,和指定的密文,尝试还原加密过程
因为索引了可能不止一个文件,所以计算可以对多个索引信息信息,他们是相对独立的(不可能拿索引1中的原文和去索引2的key配对)
首先要勾选算法,你猜测可能是什么算法,就勾选什么,也可以全部勾选,软件有这个处理能力!内部当然有各种优化,比如,你密文16个字节长,那么肯定不会是一个sha256,这是一个聪明的软件
你需要指定密文,可以是hex或base64格式,自动识别,也可以使用变量:$1,$2,$3...,这个$number就是通过匹配请求后dump时,指定的正则表达式里的分组,$1表示第一个分组,$2是第二个,...
原文包含:可选,你大概率是知道原文可能包含什么内容的,对于hash算法,如果有时间戳参数,常见的会包含时间戳,对于加密算法,如果是表单,大概率会包含你输入进去的内容
也可以使用变量,为了减少计算量,建议提供本参数,提供本参数可以减少大量计算任务
可用变量有:$url,$0(表示整个正则表达式匹配的全部内容),$1(表示正则第一个分组),$2(表示正则第二个分组),...,如果没有对应的分组,或者是直接dump的,$url也没有,会提示没有对应的变量,对于“dump文件必须包含”和“原文包含”,如果没有对于变量,会忽略,对于“密文”,如果指定了不存在的变量,会失败无法进行
对于hash算法,有用的使用方式是在dump时正则表达式中,把密文和时间戳参数,分别放到两个分组中,“密文”和“原文包含”,使用变量$1和$2来指定
KEY长度:对于hash算法,忽略本参数。对于加密算法,这个同时指定key和iv(如有)的长度范围,可以指定:
不限长度(这不是真的不限,在对应算法可用key和iv(如有)范围内,不限)
算法对应常用长度(各种算法有自己的key长度范围,hmac 0-无限长,aes-128-cbc 0-16位,rc4 0-256位,但是key短了加密没有什么意义,软件内部决断了一些常用的长度范围,比如aes-128-cbc,假定常用为8-16位)
算法对应最大长度(假定对应算法为了提高安全性,用了算法可用的最大长度字符串作为key)
指定长度(用户指定一个长度范围,软件在这个范围内计算,当然不是真的在这个范围全部计算,如果指定超过了算法key最大长度,肯定不会是有效目标,我说了这是一个聪明的软件)
可以指定线程数,对于索引和计算,需要密集计算的地方都会使用多线程,可以指定最大线程数,初始值为cpu核心数
软件提供4个配置文件,方便应对不同环境的切换配置参数
dump和索引区域都有完成后自动下一步,如果勾选,对应步骤完成,且成功,会自动进行下一个步骤,这个需要提前配置好所有参数,一键完成整个流程
每一个参数配置都很重要,建议仔细阅读,理解每个参数的含义
另外附件提供了一个html文件,浏览器打开可以模拟计算各种加密然后提交请求,正确配置下,上面点击所有按钮,对应的算法都能被解密出来(md2和hmacmd2除外)
比如我以默认配置点击匹配请求后dump,然后在浏览器页面上点击3des:
详细日志为:[Plain Text] 纯文本查看 复制代码 21:32.502: 已设置系统代理
21:32.505: ╔—— 已开启抓包,端口:8889 ——╗
21:40.258: GET https://www.baidu.com/img/flexib...
21:40.263: 匹配到:[GET ?sign=gzzOxd5qBOrZIYuQpG1G1CrzwUl19hoNSi4s/U/DkpFLIk9vFIG0xHNB0U63EdhT53VmjJF1JC1CSHIEBY9FNKEATrgOIyAX7F8KgRm194ejKpeNhp/97Jjr2ralhpJR9rKNxGCWmjnzRobWHzb+R0qyrj8jg5ngjkGAbfa/1qK4IP8YGqv9EDv8YARbAhcKGbCXa6MPoEcpIYCnaWzSWhfb7OZLTa1euoHLlF8Duxz7WvX+nGQkcg==&t=1727688100091&1727688100093
Accept: */*
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Connection: keep-alive
Host: www.baidu.com
Origin: null
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0
sec-ch-ua: "Microsoft Edge";v="129", "Not=A?Brand";v="8", "Chromium";v="129"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
]
21:41.122: 已Dump进程:17072 Dump文件0.dmp
21:41.127: 已Dump进程:2724 Dump文件6.dmp
21:41.130: 已Dump进程:7848 Dump文件9.dmp
21:41.134: 已Dump进程:17328 Dump文件3.dmp
21:41.139: 已Dump进程:17264 Dump文件2.dmp
21:41.151: 已Dump进程:18364 Dump文件8.dmp
21:41.157: 已Dump进程:9808 Dump文件5.dmp
21:41.188: 已Dump进程:10552 Dump文件4.dmp
21:41.328: 已Dump进程:4440 Dump文件7.dmp
21:41.341: 已Dump进程:17252 Dump文件1.dmp
21:41.392: ╚—— 已停止抓包 ——╝
21:41.417: ╔—— 开始构建索引 ——╗
21:41.538: 已映射:Dump文件8.dmp 大小:27707722
21:41.570: 分析完成
21:41.576: 去重完成
21:41.586: 索引完成
21:41.598: 已映射:Dump文件5.dmp 大小:29711314
21:41.618: 分析完成
21:41.623: 去重完成
21:41.636: 索引完成
21:41.640: 已映射:Dump文件7.dmp 大小:218373444
21:41.680: 分析完成
21:41.687: 去重完成
21:41.700: 索引完成
21:41.704: ╚—— 构建索引完成,整体耗时:281 ——╝
21:41.759: ╔—— 开始计算 ——╗
21:41.767: 计算MD4
21:41.783: 计算MD5
21:41.796: 计算SHA-1
21:41.800: 计算SHA-224
21:41.813: 计算SHA-256
21:41.820: 计算SHA-384
21:41.832: 计算SHA-512
21:41.837: 计算HMAC-MD4
21:41.851: 计算HMAC-MD5
21:41.857: 计算HMAC-SHA1
21:41.864: 计算HMAC-SHA224
21:41.879: 计算HMAC-SHA256
21:41.884: 计算HMAC-SHA384
21:41.897: 计算HMAC-SHA512
21:41.903: 计算CRC32
21:41.915: 计算AES-CBC
21:41.924: 计算AES-ECB
21:41.932: 计算AES-CFB
21:41.938: 计算AES192-CBC
21:41.948: 计算AES192-ECB
21:41.953: 计算AES192-CFB
21:41.964: 计算AES256-CBC
21:41.973: 计算AES256-ECB
21:41.983: 计算AES256-CFB
21:41.987: 计算DES-CBC
21:41.998: 计算DES-ECB
21:42.003: 计算DES-CFB
21:42.012: 计算3DES-CBC
21:42.017: 3DES-CBC:51BF5...
21:42.031: ╚—— 计算完成,整体耗时:265 ——╝
我一直在强调这是一个聪明的软件,内部有很多优化技巧,比如尽可能少的计算来测试是否匹配,但是用户的正确配置同样重要
后续优化计划:不依赖openssl,自行实现算法,因为我们不是以完全加解密为目的,我们只需要尽快的知道,是不是匹配就行了(这又是一个艰巨的任务)
肝了近一个月的产品,初代早就弄出来了,但是后面一直调优重构,希望多多支持
再次鸣谢:Sunny@秦天
软件内置了openssl,依赖Sunny64.dll实现抓取https流量
软件下载:
https://wwej.lanzn.com/ikv7J2b8px9e
配套测试易语言和html文件:
测试工具.zip
(287.63 KB, 下载次数: 248, 售价: 2 枚 精币)
|