#CTF-BUUCTF-MISC-USB
小白
复现学习一下这道题的解题过程,看的WP
参考:https://www.cnblogs.com/wrnan/p/12192080.html#usb
参考:https://www.freebuf.com/column/199854.html
这里的文件头标志应该为74,不然解压不出后面的文件,修改7A 为74 保存解压得到
Stegsolve.jar
得到:ci{v3erf_0tygidv2_fc0}
打开key.ftm,根据文件名的暗示,搜索key
找有用信息文件头为504B0304这是压缩文件,导出16进制文件,解压得到key.pcap,
tshark -r key.pcap -T fields -e usb.capdata > usbdata.txt
提取信息:
```python
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#python 2.7
mappings = { 0x04:"A", 0x05:"B", 0x06:"C", 0x07:"D", 0x08:"E", 0x09:"F", 0x0A:"G", 0x0B:"H", 0x0C:"I", 0x0D:"J", 0x0E:"K", 0x0F:"L", 0x10:"M", 0x11:"N",0x12:"O", 0x13:"P", 0x14:"Q", 0x15:"R", 0x16:"S", 0x17:"T", 0x18:"U",0x19:"V", 0x1A:"W", 0x1B:"X", 0x1C:"Y", 0x1D:"Z", 0x1E:"1", 0x1F:"2", 0x20:"3", 0x21:"4", 0x22:"5", 0x23:"6", 0x24:"7", 0x25:"8", 0x26:"9", 0x27:"0", 0x28:"\n", 0x2a:"[DEL]", 0X2B:" ", 0x2C:" ", 0x2D:"-", 0x2E:"=", 0x2F:"[", 0x30:"]", 0x31:"\\", 0x32:"~", 0x33:";", 0x34:"'", 0x36:",", 0x37:"." }
nums = []
keys = open('usbdata.txt')
for line in keys:
if line[0]!='0' or line[1]!='0' or line[3]!='0' or line[4]!='0' or line[9]!='0' or line[10]!='0' or line[12]!='0' or line[13]!='0' or line[15]!='0' or line[16]!='0' or line[18]!='0' or line[19]!='0' or line[21]!='0' or line[22]!='0':
continue
nums.append(int(line[6:8],16))
keys.close()
output = ""
for n in nums:
if n == 0 :
continue
if n in mappings:
output += mappings[n]
else:
output += '[unknown]'
print ('output :\n' + output)
得到 KEYXINAN
维吉尼亚密码:key=‘XINAN‘ , message = ‘ci{v3erf_0tygidv2_fc0}’
在线解密:https://www.qqxiuzi.cn/bianma/weijiniyamima.php
得到fa{i3eei_0llgvgn2_sc0},看着前面没有flag,但整个字符串里可以拼到,应该是栅栏密码:
栅栏密码是一种简单的移动字符位置的加密方法,规则简单,容易破解。栅栏密码的加密方式:把文本按照一定的字数分成多个组,取每组第一个字连起来得到密文1,再取每组第二个字连起来得到密文2……最后把密文1、密文2……连成整段密文。例如:
明文:栅栏密码加密规则示例
每组字数:5
按照字数先把明文分成: 栅栏密码加 密规则示例
先取每组第一个字:栅密
再取每组第二个字:栏规
……
最后得到“栅密栏规密则码示加例”。
解密则反推:
密文被分成2个字一组:
栅密
栏规
密则
码示
加例
先取每组第一个字:栅栏密码加
再取每组第二个字:密规则示例
最后得到“栅栏密码加密规则示例”。
提示:当前的栅栏密码程序不删除空格和换行符。
明文或密文中如果出现连续空格将原样保留,复制到其它地方时连续空格可能会变成一个空格,注意保持原样。
在进行多行文本(段落)加密时,每行独立进行加密。
https://www.qqxiuzi.cn/bianma/zhalanmima.php