第一届数证杯-团体赛复现
请根据计算机以及内存检材,回答以下问题: (17道题,共54.0分)
1. 计算机中曾挂载的bitlocker加密的分区的驱动器号为?(答案格式:大写字母,如C) (2.0分)
步骤1:使用Winhex查找"*.vhd"文件,发现三个VHD文件。
步骤2: 挂载仿真查找这三个VHD文件
步骤3:;依次挂载,V盘挂载失败
2. 分析计算机和内存检材,计算机中的Bitlocker加密分区的恢复密钥后6位为?(答案格式:123456) (4.0分)
步骤1:根据题目意思,尝试使用内存解密Bitlocker加密的分区
步骤2:爆出来了
469876-653598-354629-023573-566423-569162-055055-432267
3. 计算机中通过向日葵接收的最后一个文件名称为?
步骤1:根据题目意思可知让我们找向日葵的日志文件,过滤“history”
步骤2:查看路径可知这就是向日葵的日志文件,打开看看
步骤3:发现乱码,使用恢复到NTFS也就是本机查看
4. 计算机中加密容器8df84968a5b8c4d072c4daa4fd02cb19的解密密码为?
步骤1:首先找到这个加密容器
步骤2:找到他的相同目录,可以看到在E盘下
步骤3:在相同目录下找到文件重要信息
步骤4:在重要信息中找到密码
注意:这里需要的是“UTF-16LE 对齐” 的格式才能显示出密码。
密码:ppnn13%323658970YYZZ
5. 接上题,计算机中曾挂载的该加密容器分区中最后访问的文件,其文件名为?(答案格式:需带后缀名,如Abc.doc) (2.0分)
步骤1:查看最近访问文件\Users\admin\AppData\Roaming\Microsoft\Windows\Recent
步骤2:快速访问里是Q盘
步骤3:根据创建时间排序,第一个出现的q盘的文件
6. 请找到计算机中MD5值为2EA4D8A203F6CAFBDA0F6947EE2F0FE5的文件,写出其文件内容;(答案格式:需与实际一致,且涉及符号的部分半角全角需与实际一致)
步骤1:使用XWF对全部文件进行磁盘快照,过滤哈希值2EA4D8A203F6CAFBDA0F6947EE2F0FE5
步骤2:发现过滤不出来,这个时候就要考虑是不是加密文件了,加密文件的元信息XWF这里好像读不出来,我们过滤文件属性
步骤3:找到加密文件,对加密文件进行单独哈希计算
步骤4:可以看到这个文件哈希值就是题目所问的
步骤5:用自动化软件直接看
7. 计算机中sharisun520@hotmail.com在2010年5月11日收到的邮件附件图片中的联系电话为? (6
步骤1:首先找到邮件,这里有一个无脑做法,直接磁盘快照解析元数据,然后过滤收件人就行
步骤2:然后很简单,我们看时间然后看附件图片中的联系电话就行,但是因为这里好像不好看附件我们直接用自动化软件找到这个文件
步骤3:找到发现无法正常解析
步骤4:我们打开邮件把附件拉取下来
步骤5:拖入解码工具,这个解码
步骤6:编码非常混乱考虑xor解密,这里需要尝试异或密钥,使用穷举法从1开始试,密钥为8
8. 计算机中MD5值为E653DF74D36008353C88F5A58B8F9326的文件是从哪个网址上下载的?
步骤1:直接过滤一下看看是什么文件
步骤2:先看到这个名字和路径
步骤3:过滤一下路径看一下同路径下都有什么文件
步骤4:三个浏览器就找到一个下载记录
步骤5:对于这个下载记录直接跳转源文件看看信息
9. 计算机中2024年11月12日 11:23:25访问的暗网网址为?
步骤1:先考虑洋葱网络是较为隐蔽的网络,这里我们尝试查找洋葱的浏览记录和相对应的时间所对应的时间戳,1731381805
步骤2:找到一条符合
对应的网址为
http://suprbaydvdcaynfo4dgdzgxb4zuso7rftlil5yg5kqjefnw4wq4ulcad.onion/Thread-The-Guess-The-Movie-game
10.请找到嫌疑人曾经接收的文件“DefeatedJoyousNightingale.pdf“,计算其SHA-256值;(答案格式:如遇字母全大写)
步骤1:直接过滤文件“DefeatedJoyousNightingale.pdf”
步骤2:磁盘快照计算SHA-256
B4380011D8C1E4AB6CCCA1380CE81F9B9144EA8D06E9814210D63A959B74E6E3
11.计算机中包含由两个字母、五个数字、“CW”和四个数字组成的内容的文件名是?(答案格式:需带后缀名,如Abc.doc) (3.0分)
步骤1:这个题考的是正则匹配,直接在XWF使用同步搜索
12. 请写出计算机中系统分区上文件系统的卷序列号;(答案格式:全部8字节,小端序,忽略空格,如FA33C08ED0BC007C) (2.0分)
步骤1:这里有两个要注意的地方,一个是系统分区,第二个是八字节小端序,这两个点我们需要查看分区二的模板
13. 计算机中最后接入的U盘的卷标名称是什么?(答案格式:如abcd111A)
步骤1:查看一下最晚的是哪个牌子的U盘,这里看到是金士顿的
步骤2:在注册表的/SYSTEM/ControlSet001/Enum/SWD/WPDBUSENUM/下面找到U盘信息也同时找到金士顿的卷标名字
14. 计算机中程序wordpad.exe一共运行了多少次?
步骤1:火眼过滤
15. 计算机内存中正打开的图片中的动物为?
步骤1:使用lovelymem打开一下进程列表
步骤2:使用挂载工具找一下minidump(注意因为在进程里所以在name文件夹里面找)
步骤3:把minidump.dmp改为.data格式结尾
步骤4:这里宽度从1080左右开始往下调高度调2000,偏移拉到能看见图像为止
猫
16. 计算机内存中本地浏览器使用哪个端口连接到了184.30.21.38
步骤1:使用lovelymem查看网络连接扫描
50391
17. 计算机内存中极速浏览器最后浏览的网址的登录密码?
步骤1:使用lovelymem的web时间线选项
步骤2:将内存镜像拖入passware,选择内存分析
请根据手机检材,回答以下问题: (9道题,共34.0分)
- 分析手机检材,请找出嫌疑人的手机号; (2.0分)
步骤1:自动化软件分析一下
2. 分析手机检材,嫌疑人曾经访问的公共服务后台管理系统的URL是?(答题格式:https://abc/...) (4.0分)
步骤1:这种一般就是翻一下浏览器记录如果没有就翻图片了,先翻一下浏览器记录
https://ggfw.ynylbz.cn/manage/#/login?redirect=/Home
步骤2:好像直接有,但是有一点需要注意的是火眼会自动把url编码转化回去,我们翻数据库的时候可以看见当时访问的网址是经过部分url编码的要用那个
https://ggfw.ynylbz.cn/manage/#/login?redirect=%2FHome
3. 分析手机检材,找出嫌疑人在笔记中记录的接头地点;(答案格式:需与实际完全一致) (4.0分)
步骤1:注意提示说在笔记这种记录的接头地点,那么有可能是两种情况一个是笔记软件,一个是自带的记事本,先看看记事本
步骤2:直接一搜俩笔记,都看看数据库
步骤3:数据库翻半天翻不到,猜测是这个加密数据,选择使用雷电模拟器
步骤4:安装一下这个软件
步骤5:打开MT管理器,先提取一下自由笔记的安装包
步骤6:把左侧的上传到共享文件夹的包移过去右边的
步骤7:然后删除原有的databases和files把传过去的db改为databases传过去的f改为files即可,然后再打开软件
步骤8:可以看到秘密文件夹有两个文件
4. 分析手机检材,找出嫌疑人的接头暗号;(答案格式:需与实际完全一致) (6.0分)
步骤一:上一题已经找出的两个文件中有一个就是暗号
5. 分析手机检材,找出嫌疑人10月23日开的腾讯会议的入会密码; (2.0分)
步骤1:翻一翻聊天记录
6. 分析手机检材,找出嫌疑人公司即将发布的新产品型号;(答案格式:需与实际大小写完全一致)
步骤1:看聊天记录大抵是在内部文件里面了但是内部文件加密了
步骤2:提取出来直接爆破一下试试看,因为密码是生日所以可以直接尝试爆破八位数字,但是八位数字太多了爆破需要好长时间,我们不如分两次爆破一次以19开头一次以20开头
步骤3:可以看到直接秒爆破出来了,密码为20001027
步骤4:找到了产品型号AeroX-900
7. 分析手机检材,找到嫌疑人曾经发送的项目前期资料文件,计算其SHA256;(答案格式:如遇字母全大写)
步骤1:给了关键字直接爆搜试试
步骤2:爆搜到了直接导航一下
步骤3:可以看到这个藏在资料.docx里面了我们直接给资料.docx导出改为zip后缀然后解压
步骤4:拖入hash计算工具即可
步骤5:2425440B48170763AEA97931D806249A298AFAC72A4BED92A6494E6789ACDA19
8. 分析手机检材,嫌疑人曾进行过一次交易,请问嫌疑人与转账的接收者什么时候成为好友?(答案格式:2021-01-01 01:01:01)
步骤1:支付宝里面有个转账记录直接看看
步骤2:直接可以看到成为好友的时间
9. 分析手机检材,写出嫌疑人钱包账户的导入时间;(北京时区,答案格式:1990-01-01 01:01:01) (6.0分)
步骤1:打开川佬博客参考一下即可
步骤2:爆搜metamask的files里面的persist-root
步骤3:导出来这个文件搜ImportTime
步骤4:转化时间戳1732267110166
请根据服务器检材,回答以下问题: (20道题,共65.0分)
1. 请写出服务器系统内核版本;(答案格式:1.1.1-11-abcdefe) (1.0分)
步骤1:6.8.0-48-generic
2. 请写出服务器的ens33网卡的ip地址; (1.0分)
步骤1:直接仿真一下
3. 请写出mysql数据库密码; (4.0分)
步骤1:尝试看历史记录是没有的,翻遍了也找不到密码,看一下加目录下的文件,可以看到一个project目录,猜测mysql数据库密码写在网站配置文件里
步骤2:在家目录下的project目录下的admin目录找到admin.jar,导出来用jadx看一下
步骤3:在application.properties文件里面找到数据库密码
步骤4:尝试连接一下
4. 后台服务中注册中心的服务端口是多少?(答案格式:纯数字) (2.0分)
步骤1:首先添加一个ip,改一下网络适配器
sudo ip addr add 192.168.233.200/24 dev ens33
步骤2:可以看到成功连接数据库了
步骤3:然后可以在project目录下的cloud目录下的logs目录下的日志文件中找到注册端口,应该也可以直接拖出来cloud.jar包拖入jadx搜索也是一样的
5. 服务器nginx日志中,哪个ip访问系统最为频繁?(答案格式:6.6.6.6) (6.0分)
步骤1:直接访问/var/log/nginx/access.log.1
awk '{print $1}' access.log.1 | sort | uniq -c | sort -nr | head -1
6. 请写出平台管理员密码加密算法;(答案格式:aes) (3.0分)
步骤1:搜adminlogin搜到管理员密码加密算法逻辑
步骤2:MD5
7. 假设某管理员密码是123456,请问该管理员的密码在数据库中存储的值是多少?(答案格式:如有字母,全大写) (5.0分)
步骤1:在配置文件里面找到盐值
步骤2:分析刚才的加密逻辑,密码为输入的密码加上盐值的md5
步骤3:所以就是对123456XehGyeyrVgOV4P8Uf70REVpIw3iVNwNs进行md5即可
985eb5b028065701341a478a9215e7b2
8. 已知某人卖出了5.2个ETH/USDT,请问他的二级推荐人可以获得多少个ETH佣金?(答案格式:写出数字即可,保留小数点后5位) (6.0分)
步骤1:把服务器project中的jar包先全部导出逐一分析
步骤2:分析exchange-core.jar包
步骤3:全局搜索二级推荐人
步骤4:ai分析可疑函数promoteReward() 方法中实现的 二级推荐人返佣逻辑
步骤5:在getInfo()处需要去数据库看,这个拿的是INFO字段
步骤6:不难看出getrate方法适用于费率计算的
步骤7:可以知道上面被框住的地方就是用于计算一级推荐人获得的佣金的,也可以知道下面是用于计算二级推荐人的佣金的
步骤8:共同点是他们都调用了同一个方法
步骤9:我们直接搜一下这个方法的实现
步骤10:可以看到方法是外部导入的,直接在admin.jar里面搜索一下这个方法
步骤11:成功找到方法类的实现以后我们看一下具体实现过程
步骤12:根据上一个包也就是exchange-core.jar包的二级返佣比和数据库中找到的two的值可知道BigDecimalUtils.getRate(0.1) = 0.1 / 100 = 0.001
BigDecimal reward1 = BigDecimalUtils.mulRound(fee, BigDecimalUtils.getRate(jsonObject.getBigDecimal("two")), 8);
# 返佣方法
步骤13:然后fee*0.0001得出reward1再通过 mulRound() 方法四舍五入保留 8 位小数。
步骤14:所以我们现在要找fee的实现函数,我们需要继续去分析exchange-core.jar包
步骤14:把代码扔给ai分析一下
步骤15:在数据库中看到fee字样
步骤16:所以可以计算feeBigDecimalUtils.getRate(0.1)coin=0.0000052
9. 请找到受害人“王涵”的手机号; (1.0分)
步骤1:直接数据库爆搜王涵
步骤2:15780139471
10. 请写出嫌疑人的违法交易网站的中文名称;(答案格式:2个汉字) (3.0分)
步骤1:web源码里面已经直接写死了127.0.0.1,有两个思路要么直接修改替换全部的127.0.0.1,要么就用127.0.0.1
步骤2:引用一下队友的博客:这里需要注意几个点,一个是先在/home/project下的两个admin和cloud需要运行一遍restart.sh脚本,以及/home/gass/Desktop/project/blockchain下需要运行start.sh脚本。然后再打开/etc/nginx/nginx.conf文件,修改代理使其转发到本地的6010端口,然后需要重启nginx服务
步骤3:直接访问一下不太对劲,密码框是输入验证码看看源码
步骤4:这个时候可能有些人和我一样还是没有验证码,我这里的原因是6010端口被sshd占用直接kill -9 杀掉进程然后重启服务即可
步骤5:之后的步骤就是该数据库里面的root密码为985eb5b028065701341a478a9215e7b2,然后登录后台即可
步骤6:登录到后台后可以看到后台的平台名称为 币严
11. 请写出数据库中Recharge表的status字段中,0代表的中文含义; (1.0分)
步骤1:表注释中显示未到账
12. 平台中所有账户中ETH余额最多的地址是多少?(答案格式:0x123F...) (6.0分)
步骤1:首先这个题的迷惑性其实很高,问的是账户中ETH余额最多的地址是多少,大家知道的geth是区块链也就是虚拟币管理软件
首先阐释geth的具体作用:
🧠 一句话解释:
geth
是以太坊官方的 Go 语言实现版本客户端,全名是 Go-Ethereum。
也就是说,它是以太坊(Ethereum)区块链网络中的一个完整节点软件,可以让你:
- 加入以太坊网络
- 同步区块数据
- 创建钱包地址
- 发起转账、部署合约
- 搭建自己的私链网络
- 运行挖矿、签名、RPC 服务等
🧩 geth
的全功能列表概览:
功能模块 | 说明 |
---|---|
钱包管理 | 创建地址、导入私钥、管理 keystore 文件、转账 ETH |
区块同步 | 从公网节点下载全网链数据,可切换轻节点、完整节点、归档节点等模式 |
智能合约部署 | 通过命令行或 RPC 向链上发布并调用合约(配合 Solidity 编译器) |
RPC 接口 | 支持 JSON-RPC、IPC、WebSocket,用于 DApp、Web3、钱包等程序连接 |
私链搭建 | 可以用来搭建本地测试链、开发链、企业链,生成创世块 |
挖矿功能 | 支持 PoW 机制下的 CPU 挖矿(旧版),也能配合矿池运行 |
账户签名 | 用私钥对交易进行签名或验证外部数据 |
📦 geth
与虚拟币管理的关系
你说它是“虚拟币管理软件”,也可以这么理解,但更准确说:
geth
是一个运行 以太坊区块链协议的节点客户端,而钱包、币管理、链上操作只是它功能的一部分。
步骤2:所以我认为我们找平台余额最多的账户要从geth里面找才对
#GPT跑一个脚本直接获取本地链余额最多的地址即可
// 快速遍历 eth.accounts
var max = web3.toBigNumber(0);
var maxAddr = "";
eth.accounts.forEach(function(addr) {
var bal = eth.getBalance(addr);
console.log(addr, ":", web3.fromWei(bal, "ether"), "ETH");
if (bal.gt(max)) {
max = bal;
maxAddr = addr;
}
});
console.log("=========");
console.log("MAX:", maxAddr, "with", web3.fromWei(max, "ether"), "ETH");
步骤3:答案应该是0x2c8d0ff224e79b296f00714933ef8be09d4d28f2
注意:我建议大家配备本地ai deepseek-R1:14b
因为就这一题我用本地ai跑了两次脚本,输出的结果都是正确的
// 获取所有账户列表
let accounts = eth.accounts;
if (accounts.length === 0) {
console.log("没有找到任何账户!");
} else {
let maxBalance = 0;
let richestAccount = "";
for (let account of accounts) {
// 获取账户余额,单位为 wei
let balanceWei = eth.getBalance(account);
// 转换 wei 到 ETH(1 ETH = 1e18 wei)
let balanceEth = balanceWei / 1000000000000000000;
if (balanceEth > maxBalance) {
maxBalance = balanceEth;
richestAccount = account;
}
}
console.log("\n最富有的账户地址:", richestAccount);
console.log("ETH 平衡:", maxBalance.toString() + " ETH");
}
# 本地ai输出脚本如上
13. 区块链搭建工具是?(答案格式:abcd) (1.0分)
步骤1:直接在桌面上找到运行脚本.txt
步骤2:没有步骤2了,一眼geth
14. 区块链对外提供的的http端口是? (2.0分)
步骤1:这里需要启动root用户,然后直接启动netstat -nplut|grep geth
步骤2:这里有8551和30303,那么这里就是8551因为是tcp
8545 端口:对外提供 HTTP RPC 接口,用于进行各种区块链操作。
30303 端口:主要用于 P2P 网络通信。
15. 服务器网站数据库使用的字符集为?(答案格式:如有字母,请小写) (1.0分)
步骤1:高贵的本地ai出手了
步骤2:照着本地ai给的命令执行以下直接看到是utf8mb4
16. 由于服务器定时清理了交易数据,请找寻整个区块链中最大的交易金额(答案格式:0x123F...) (6.0分)
步骤1:注意这个题问的不是最大余额的交易地址而是最大的交易金额,ai直接跑一下即可
# 先放GPT跑的这个是正确的
var maxValue = web3.toBigNumber(0);
var maxTxHash = "";
var blockNumber = eth.blockNumber;
for (var i = 0; i <= blockNumber; i++) {
var block = eth.getBlock(i, true); // true 代表返回 tx 明细
if (block && block.transactions.length > 0) {
block.transactions.forEach(function(tx) {
if (tx.value.gt(maxValue)) {
maxValue = tx.value;
maxTxHash = tx.hash;
}
});
}
}
console.log("========= MAX TRANSACTION =========");
console.log("TxHash:", maxTxHash);
console.log("Value:", web3.fromWei(maxValue, "ether").toString(), "ETH");
# 再放本地ai跑的
这个好像本地ai没跑出来。但是大家可以多试试可能是我提示词有问题
步骤2:哈希为0x960c77907381d08ecc019c0ad9d668a4bd456070f6f17ce0696d716150a50138
17. 请写出嫌疑人在chrome上使用的钱包名称;(答案格式:如有字母全小写) (2.0分)
步骤1:简直是超级显眼的切入点好吧
步骤2:metamask
18. 请写出chrome钱包插件使用的pbkdf2加密算法的轮次;(答案格式:纯数字) (4.0分)
步骤1:f12 打开开发者工具搜索pbkdf2
步骤2:其实已经可以看到答案了
步骤3:也可以搜索Incorrect password定位到输入错误的轮次下断点查看也可以,需要注意的是下完断点后还需要再次输入一次密码即可抓到断点处的包
19. Chrome钱包密码的算法中对iv的加密方式是什么?(答案格式:如有字母请小写,如md5) (4.0分)
步骤1:在断点处找到了
步骤2:AES-GCM
20. 已知服务器中嫌疑人的钱包登录密码为八位纯数字生日1994****,请写出该密码; (6.0分)
步骤1:找到堆栈,也就是其加密和解密逻辑
步骤2:我们把已知的参数和加密逻辑全部扔给gpt
salt_b64 = "fhlH2383hn7sqEKiLN8zSqv/F/v9x0s3xj/1zBI1zkA="
iv_b64 = "oi49chysOL0hAXfqbviWIA=="
"data": "4OBSCQ3fpgiiQG1CUT2KVKU9Sma1ixgcZ1xBb+XeQXlX9yFbyj6HgpPH4vKktB39FPVD5wlV0fFrKkrB4YvkwS4y0P2y15GrSMvJ7ZPV2FdT+o7/s9ydryf4j/dvWssWhlpIf8+Z/GTWxrd0pEKCumJ0SgM7pNCn+LPufqgAAc8Phk1V2G78YFFn27hoPalU+mfyLirBvbcNCe7PZhUEf02OB9HJxc6NL8VGHZ0mugf8CMCU4CfoMWBjGB358XwYgqVCAYfPeP612BcqH/2qGsf4v5MUynaoWjR3CDxg6z5n/SzvayET9KxzpnP5/YwrI1Kr6KSuX8hfWa4G7Qect7gRcJ5OSP9vjDAE0Oa7+2RoOvSuDhONrit9JD1j3PlF/HLHjCWcAxFPAqQHnaXHUT7+O/UR/nHBBUjwZqXcA3NvY6Up9gEyp7v252JKw/ybv9PYsNVBNNzaOCHM+2vLu4AEdhsJjEmzz1BMnl2a10lX3PIxT6g+eVdHNVOkeESS7Xiufrh1BNEXemU+/Mj8zOzC8X3sC+h7k6V+j8FO5gFFIsGVsehmhjQ0g3hv5OjHLu+8UbJ19HVC6nzyopbHF1EbgVc4bEfnsqxpBQT4xGY27MQLFa2SlcpRpue1NpZWdhV2C8/wTSBmcgnm3PHWgvBiuA=="
步骤3:然后GPT给了我们一个脚本
import base64
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
from concurrent.futures import ThreadPoolExecutor
from datetime import date, timedelta
# 解码参数
salt = base64.b64decode("fhlH2383hn7sqEKiLN8zSqv/F/v9x0s3xj/1zBI1zkA=")
iv = base64.b64decode("oi49chysOL0hAXfqbviWIA==")
data = base64.b64decode(
"4OBSCQ3fpgiiQG1CUT2KVKU9Sma1ixgcZ1xBb+XeQXlX9yFbyj6HgpPH4vKktB39FPVD5wlV0fFrKkrB4YvkwS4y0P2y15GrSMvJ7ZPV2FdT+o7/s9ydryf4j/dvWssWhlpIf8+Z/GTWxrd0pEKCumJ0SgM7pNCn+LPufqgAAc8Phk1V2G78YFFn27hoPalU+mfyLirBvbcNCe7PZhUEf02OB9HJxc6NL8VGHZ0mugf8CMCU4CfoMWBjGB358XwYgqVCAYfPeP612BcqH/2qGsf4v5MUynaoWjR3CDxg6z5n/SzvayET9KxzpnP5/YwrI1Kr6KSuX8hfWa4G7Qect7gRcJ5OSP9vjDAE0Oa7+2RoOvSuDhONrit9JD1j3PlF/HLHjCWcAxFPAqQHnaXHUT7+O/UR/nHBBUjwZqXcA3NvY6Up9gEyp7v252JKw/ybv9PYsNVBNNzaOCHM+2vLu4AEdhsJjEmzz1BMnl2a10lX3PIxT6g+eVdHNVOkeESS7Xiufrh1BNEXemU+/Mj8zOzC8X3sC+h7k6V+j8FO5gFFIsGVsehmhjQ0g3hv5OjHLu+8UbJ19HVC6nzyopbHF1EbgVc4bEfnsqxpBQT4xGY27MQLFa2SlcpRpue1NpZWdhV2C8/wTSBmcgnm3PHWgvBiuA=="
)
def try_password(date_str):
password = date_str.encode("utf-8")
try:
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=600000 # 注意:迭代次数是否准确?
)
key = kdf.derive(password)
aesgcm = AESGCM(key)
plaintext = aesgcm.decrypt(iv, data, None)
return date_str, plaintext.decode("utf-8")
except Exception:
return None
# 生成所有可能的日期
start_date = date(1994, 1, 1)
end_date = date(1994, 12, 31)
delta = timedelta(days=1)
with ThreadPoolExecutor(max_workers=8) as executor:
futures = []
current_date = start_date
while current_date <= end_date:
mmdd = current_date.strftime("%m%d") # 正确格式:只取MMDD
date_str = "1994" + mmdd # 拼接成 1994MMDD
futures.append(executor.submit(try_password, date_str))
current_date += delta
for future in futures:
result = future.result()
if result:
pwd, plain = result
print(f"[+] 成功破解!密码为: {pwd}")
print(f"[+] 明文: {plain}")
executor.shutdown(wait=False, cancel_futures=True)
break
步骤4:最后结果为19940822
步骤5:尝试登录一下
步骤6:成功登录进去了
(请勿在真机上运行或分析该exe)请根据exe检材,回答问题: (9道题,共29.0分)
1. 通过分析恶意程序,找出运行该软件必要的参数是?(答案格式:--xxx-xxx) (2.0分)
步骤1:首先开台虚拟机吧,并存个快照
步骤2:直接cmd运行一下试试,发现恶意程序慎重点击否则后果自 负.exe -h 可以看到选项
步骤3:可以看到必要选项是--access-token
2.该程序为了控制最大并发数,在注册表中设置了MaxMpxCt参数,请给出设置参数的具体值。(答案格式:纯数字) (2.0分)
步骤1:用IDA打开直接搜MaxMpCt
(具体搜发:因为我不会逆向所以学一下)
#先复制MaxMpxCt
shift+f12
ctrl+f
ctrl+v
然后双击搜索到的
按a
# 转化为字符串
按u
# 重定义
后续参考
后续参考我队友的博客吧,数据分析网钜能跑出来大部分,恶意软件分析还是太为难我了
吴的博客-数证团体ALL in one