题目分析
题目提供了一个名为password.7z
的加密压缩包,以及flag1.txt
的文件
flag1.txt内容:
将flag1.txt丢进kali进行文件分离,发现应该是个7z的文件
因此将后缀txt
改为7z
,发现存在一个压缩包flag.7z
的压缩包,同样进行了加密
猜测password.7z
里的password.txt
文件存在解压flag.7z
的密码
7z压缩包破解
根据题目hint,password.7z压缩包的密码是6-8位纯数字,使用PackageCrack
破解提示不支持!
更换方法,采用hashcat
进行破解
生成hash值
下载John the Ripper: https://github.com/openwall/john
下载perl: https://strawberryperl.com/
使用john
的脚本7z2john.pl
计算出password.7z
的hash值
得到password.7z的hash值$7z$2$19$0$$16$abc477f84f711f5530432e64418c8392$3167568243$16$12$40a31f0f88ac7b9a9acdc6cbb7d23f23$8$00
hashcat密码爆破
采用hashcat进行6位纯数字的密码爆破
-m
指定文件类型,7z是11600,可以通过hashcat --help
查看
-a
指定攻击类型 3为掩码模式,后接文件hash值
?d
指当前位置为数字类型
-O
采用自动优化方式
-w
指定电力消耗
-o
指定结果输出文件
--force
忽略warning强制执行
hashcat自动停止,说明破解成功,查看res.txt密码为321456
打开password.txt,得到flag.7z的解压密码7324623c
图片恢复
打开flag.7z,存在一张图片challenge.png
与加密脚本encode.py
encode.py:
import numpy as np
import cv2
import sys
import random
def encode(image):
i = random.randint(520,540)
np