按着 w 往上一直冲就有flag了
flag{You_Are_The_Ready_Player_One!!!For_Sure!!!}
1、extundelete:
安装
1
2
|
# kali
# apt-get install extundelete
|
2、如何使用extundelete:
extundelete 旨在将文件从未安装的分区恢复到单独的(已安装)分区。**extundelete 会将它找到的任何文件还原到名为“RECOVERED_FILES”的当前目录的子目录中。**要运行该程序,请键入“extundelete --help”以查看可供您使用的各种选项。
从分区恢复所有已删除文件的典型用法如下所示:
$ extundelete /dev/sda4 --restore-all
3、extundelete官方网站:
题目给了一份 attachment.img 文件,在kali中将其挂载(或者使用更简单的方法,用 7z直接解压可以提取 img文件中的内容)
1
2
3
4
5
6
7
8
9
|
# 在linux上挂载光盘的命令
mkdir /mnt/disk
mount attachment.img /mnt/disk/
cd /mnt/disk
#可以使用 eog 图片名 命令来查看图片
#使用结束后用 umount: /mnt/disk 命令取消挂载
|
得到很多猫猫的图片。都看了一下没啥有用的信息,感觉应该和隐写没关系,不然出题人也太恶心了
看了其他师傅的wp知道,这里是考的受损文件的恢复,在win10中直接点击 .img文件会提示文件已经受损。
用Linux数据恢复工具 extundelete ,extundelete –restore-all可以尝试恢复所有目录和文件。
1
2
|
extundelete --restore-all attachment.img
# 数据恢复成功后会生成一个 RECOVERED_FILES 文件
|
拿到flag
flag{fugly_cats_need_luv_2}
使用的解码工具 kali 安装 QSSTV
参考之前写的一篇 blog
使用QSSTV解码无线电
flag{r3ce1ved_4n_img}
二维码修复网站
将 jpg 图片用010editor打开,在jpg 文件尾发现了 png 文件。提取出来新建为 2.png
用在线二维码修复网站进行修复二维码修复网站
1、点击边框,将纠错等级调为 H,mask pattern 掩码调为和二维码上的掩码一致。
选择填充模式进行手动填充,填好后用解码模式进行二维码识别
点击 tools,选择第一个,得到 flag
Flag{OQWIC_4DS1A_S034S}
题目说跟IP相关,直接试 IP
flag{183.129.152.140}
在线词频统计
用 010 editor 查看图片信息,发现有隐写文件。
用 binwalk -e FS.jpg 分离得到隐写文件
file.zip 需要解压密码,在 FS.jpg 中找到密钥 Pactera
解压后得到如下图:
显然就是词频统计了
在线词频统计
DCTF{huanwe1sik4o!}
1、usb流量提取:
直接用脚本一把梭,GIthub下载:
UsbKeyboardDataHacker
2、键盘流量分析
3、auto爆破
usb流量,直接用 UsbKeyboardDataHacker 脚本一把梭,获取到 usb 流量数据
1
|
# python2 UsbKeyboardDataHacker.py attachment.pcapng
|
<CAP>a<CAP>utokey('****').decipheer('<CAP>mplrvffczeyoujfjkybxgzvdgqaurkxzolkolvtufblrnjesqitwahxnsijxpnmplshcjbtyhzealogviaaissplfhlfswfehjncrwhtinsmambvexo<DEL>pze<DEL>iz')
1
2
|
#<CAP> 转换大小写的键
#<DEL> 删除键
|
所有出题人最初敲的键应该是
Autokey('****').decipheer('MPLRVFFCZEYOUJFJKYBXGZVDGQAURKXZOLKOLVTUFBLRNJESQITWAHXNSIJXPNMPLSHCJBTYHZEALOGVIAAISSPLFHLFSWFEHJNCRWHTINSMAMBVEXPZIZ')
解下来就是 Autokey爆破了
break_autokey文件下载地址
配置文件下载地址
两个网站,一个网站上最下面可以下载 break_autokey.py
,然后在另一个网站最下面下载 english_quadgrams.txt.zip
和 english_trigrams.txt.zip
和 ngram_score.py
,把两个zip解压并且txt名字分别改为quadgrams.txt和trigrams.txt,然后两个py文件和两个txt放在一起,如果没有装pycipher的装一下(python2环境)
pip2 install pycipher
然后把 autokey 的密文放在 break_autokey.py 里面
1
2
|
#python2 环境下运行脚本
python2 break_autokey.py
|
发现 flag 标志
HELLO BOYS AND GIRLS YOU ARE SO SMART THAT YOU CAN FIND THE FLAG THAT I HIDEIN THE KEY BOARD PACKAGE FLAG IS JHAWLZKEWXHNCDHSLWBAQJTUQZDXZQPF
flag{JHAWLZKEWXHNCDHSLWBAQJTUQZDXZQPF}
LSB隐写破解脚本下载
下载完 LSB 脚本后,涉及几个 python2 第三方库的安装
1
2
3
|
#1、 pip2 install matplotlib
#2、 apt-get install python-tk
#3、 pip2 install pillow
|
使用方法:
1
2
3
4
|
# 使用方法Usage:
lsb.py hide <img_file> <payload_file> <password>
lsb.py extract <stego_file> <out_file> <password>
lsb.py analyse <stego_file>
|
关键字密码(Nihilist):
1
2
3
4
5
6
7
|
#原理
#原26个英文字母为ABCDEFGHIJKLMNOPQRSTUVWXYZ
#把关键字提前后为LOVEKFCABDGHIJMNPQRSTUWXYZ
#在置换后的序列里可以发现对应关系P=Q,V=C,S=T,F=F
|
加解密脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# python2
# -*- coding: UTF-8 -*-
def getKeywordList(keyword):
normalList = ''
for i in range(26):
normalList = normalList + chr(ord('a') + i)
toCombine = keyword + normalList
combineList = ''
for i in toCombine:
if i in combineList:
pass
else:
combineList = combineList + i
if len(combineList) == 26:
return combineList
else:
return ''
def replaceChar(keywordList, inputChar):
if inputChar.isupper():
return replaceChar(keywordList, inputChar.lower()).upper()
else:
return keywordList[ord(inputChar) - 97]
def dereplaceChar(keywordList, inputChar):
if inputChar.isupper():
return dereplaceChar(keywordList, inputChar.lower()).upper()
else:
return chr(keywordList.find(inputChar) + 97)
def KeywordReplace(toReplace, keyword):
#'''keyword 字符替换法 替换函数'''
afterReplace = ''
for i in toReplace:
if i.isalpha():
afterReplace = afterReplace + \
replaceChar(getKeywordList(keyword), i)
else:
afterReplace = afterReplace + i
return afterReplace
def deKeywordReplace(toReplace, keyword):
#'''keyword 字符替换法 反替换函数'''
afterReplace = ''
for i in toReplace:
if i.isalpha():
afterReplace = afterReplace + \
dereplaceChar(getKeywordList(keyword), i)
else:
afterReplace = afterReplace + i
return afterReplace
print KeywordReplace('QCTF{cCgeLdnrIBCX9G1g13KFfeLNsnMRdOwf}', 'lovekfc')
print deKeywordReplace('PVSF{vVckHejqBOVX9C1c13GFfkHJrjIQeMwf}', 'lovekfc')
|
用 LSB隐写破解脚本下载 攻击脚本解决 lsb隐写问题
1
|
# python2 lsb.py extract attachment.png new lovekfc
|
在 new文件 中得到隐写文件:PVSF{vVckHejqBOVX9C1c13GFfkHJrjIQeMwf}
关键字密码(Nihilist):加解密脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# python2
# -*- coding: UTF-8 -*-
def getKeywordList(keyword):
normalList = ''
for i in range(26):
normalList = normalList + chr(ord('a') + i)
toCombine = keyword + normalList
combineList = ''
for i in toCombine:
if i in combineList:
pass
else:
combineList = combineList + i
if len(combineList) == 26:
return combineList
else:
return ''
def replaceChar(keywordList, inputChar):
if inputChar.isupper():
return replaceChar(keywordList, inputChar.lower()).upper()
else:
return keywordList[ord(inputChar) - 97]
def dereplaceChar(keywordList, inputChar):
if inputChar.isupper():
return dereplaceChar(keywordList, inputChar.lower()).upper()
else:
return chr(keywordList.find(inputChar) + 97)
def KeywordReplace(toReplace, keyword):
#'''keyword 字符替换法 替换函数'''
afterReplace = ''
for i in toReplace:
if i.isalpha():
afterReplace = afterReplace + \
replaceChar(getKeywordList(keyword), i)
else:
afterReplace = afterReplace + i
return afterReplace
def deKeywordReplace(toReplace, keyword):
#'''keyword 字符替换法 反替换函数'''
afterReplace = ''
for i in toReplace:
if i.isalpha():
afterReplace = afterReplace + \
dereplaceChar(getKeywordList(keyword), i)
else:
afterReplace = afterReplace + i
return afterReplace
print KeywordReplace('QCTF{cCgeLdnrIBCX9G1g13KFfeLNsnMRdOwf}', 'lovekfc')
print deKeywordReplace('PVSF{vVckHejqBOVX9C1c13GFfkHJrjIQeMwf}', 'lovekfc')
|
QCTF{cCgeLdnrIBCX9G1g13KFfeLNsnMRdOwf}
foremost文件分离:
用法:
formost filename -o 输出的目录名
用 binwalk 分离文件未果,用 foremost 分离得到 flag
flag{l337_h4xx0r5_c0mmun1c473_w17h_PNGs}
固定码遥控信号的构成
钥匙信号(PT224X) = 同步引导码(8bit) + 地址位(20bit) + 数据位(4bit) + 停止码(1bit)
钥匙信号(PT226X) = 同步引导码(4bit) + 地址位(8bit) + 数据位(4bit) + 停止码(1bit)
1
2
3
4
|
# 两长为: 1
# 两短为: 0
# 先短后长为: F
# 先长后短 无效码
|
信号脉冲
用 Audacity 打开 sign.wav 文件,选择波形分析
1
2
|
#地址位+数据位 = FFFFFFFF0001
#所以 flag{FFFFFFFF0001}
|
方法二:
除了使用波形的分析方法,使用频谱图也能清楚的看出 地址位和数据位的信息