Single

[RoarCTF2019]davinci_cipher2 min read

题目下载

flag.txt:

U+1F643U+1F4B5U+1F33FU+1F3A4U+1F6AAU+1F30FU+1F40EU+1F94BU+1F6ABU+1F606U+1F383U+1F993U+2709U+1F33FU+1F4C2U+2603U+1F449U+1F6E9U+2705U+1F385U+2328U+1F30FU+1F6E9U+1F6A8U+1F923U+1F4A7U+1F383U+1F34DU+1F601U+2139U+1F4C2U+1F6ABU+1F463U+1F600U+1F463U+1F643U+1F3A4U+2328U+1F601U+1F923U+1F3A4U+1F579U+1F451U+1F6AAU+1F374U+1F579U+1F607U+1F374U+1F40EU+2705U+2709U+1F30FU+23E9U+1F40DU+1F6A8U+2600U+1F607U+1F3F9U+1F441U+1F463U+2709U+1F30AU+1F6A8U+2716

这一串玩意复制到搜索引擎上(就能看见wp)可以知道是emoji。解码网站戳我

🙃💵🌿🎤🚪🌏🐎🥋🚫😆🎃🦓✉🌿📂☃👉🛩✅🎅⌨🌏🛩🚨🤣💧🎃🍍😁ℹ📂🚫👣😀👣🙃🎤⌨😁🤣🎤🕹👑🚪🍴🕹😇🍴🐎✅✉🌏⏩🐍🚨☀😇🏹👁👣✉🌊🚨✖

k3y.pcapng:

文件→导出对象→HTTP,很多东西,非常死亡。除了网页和图片外,还有非常可疑的USB流量,能看出来这是标记了wacom绘图板的一些信息。

将流量导出,第一次导出的时候有很多空行,因此加了sed命令:

tshark -r 'k3y.pcapng' -T fields -e usb.capdata |sed '/^$/d' > usbdata.txt

wacom是有压感的绘图板,详细说明在USB协议文档里的Figure 19

一般都是x坐标2个字节,Y坐标也是2个字节,又因为X,Y坐标均以小端方式存储,因此画图坐标个位数字变化会大一些。猜测坐标如图所示(深紫X,浅蓝Y,红色压感)。

过滤有效数据。

coordinate = open("coordinate.txt",'a+')
for line in open("usbdata.txt",'r'):
    if(len(line)==55):
        #过滤有效数据
        coordinate.write(line)
coordinate.close()

剃掉压感为0的数据,把坐标提取出来还原成10进制。

a = open("finish.txt",'a+')
x1 = []
y1 = []
x2 = []
y2 = []
for line in open("coordinate.txt",'r'):
    if(line[16:18]!="00"):
        x1.append(line[4:8])
        y1.append(line[10:14])
for i in x1:
    x2.append(int(i[2:4]+i[0:2],16))
for j in y1:
    y2.append(int(j[2:4]+j[0:2],16))
for z in range(len(x2)):
    a.write(str(x2[z])+" "+str(y2[z])+"\n")

用gnuplot画出来了但是需要翻转:

MONA_LISA_IS_A_MAN

用第一步flag.txt里的emoji作为密文,上步得出的字符串作为密钥,emoji解密,得到flag。