Misc-Xp0int(数据包分析)

今天记录下有点意思的Xp0int的Misc~
印象最深的是数据包分析:

一段奇怪的流量

解压得到1.pcap
用WireShark打开流量包:
Misc-Xp0int(数据包分析)_第1张图片
最后URB_INTERRUPT_IN可以看出来是URB协议、输入中断
查了一下USB、数据包、CTF
找到了这篇http://bobao.360.cn/learning/detail/3351.html
参考它可以看出来Leftover Capture Data中的八个字节应该就是USB键盘传输的信息了

(如果Leftover Capture Data没有在上面显示,可以右击下面的域选择应用为列)

查了一波资料,在这里找到了数据格式说明
http://blog.csdn.net/u013771867/article/details/51465193
第一个字节表示特殊按键、第二个字节保留、3-8字节表示按键
这也就是USB键盘同时只能按下六个键的原因啦—多键同按就没有位置传递了嘛!
(当然也可以通过修改协议来增加数据传输位,以及非USB键盘不遵循这个协议)

USB鼠标的数据传输是4个字节,与这题不符
4个字节中第一字节表示按键,第二表示水平移动,第三表示竖直移动,第四保留

之前看到的那篇分享是直接提取第三字节即可,也就是说正常情况下的敲击记录
但是本题可以看出,3-5字节都有信息,它们是同时按下的,处理的时候也要注意一下
(不过知道这点其实没什么卵用,谁输入字符的时候会同时按两个键啦~)
通过WireShark自带的工具可以将数据包的data提取出来:

tshark.exe -r usb2.pcap -T fields -e usb.capdata > usbdata.txt

然后通过脚本处理:

# 1: 'ErrorRollOver9', 2: 'POSTFail9', 3: 'ErrorUndefined9',
mappings = { 4: 'a', 5: 'b', 6: 'c', 7: 'd', 8: 'e', 9: 'f', 10: 'g', 11: 'h', 12: 'i', 13: 'j', 14: 'k', 15: 'l', 16: 'm', 17: 'n', 18: 'o', 19: 'p', 20: 'q', 21: 'r', 22: 's', 23: 't', 24: 'u', 25: 'v', 26: 'w', 27: 'x', 28: 'y', 29: 'z', 30: '1', 31: '2', 32: '3', 33: '4', 34: '5', 35: '6', 36: '7', 37: '8', 38: '9', 39: '0', 40: '\n', 41: 'ESCAPE', 42: 'DELETE', 43: 'Tab', 44: 'Spacebar', 45: '-', 46: '=', 47: '[', 48: ']', 49: '\\', 50: 'Non-US', 51: ';', 52: '‘', 53: 'Grave', 55: '.', 56: '/', 57: 'Caps', 58: 'F1', 59: 'F2', 60: 'F3', 61: 'F4', 62: 'F5', 63: 'F6', 64: 'F7', 65: 'F8', 66: 'F9', 67: 'F10', 68: 'F11', 69: 'F12', 70: 'PrintScreen1', 71: 'Scroll', 72: 'Pause1', 73: 'Insert1', 74: 'Home1', 75: 'PageUp1', 76: 'Delete', 77: 'End1', 78: 'PageDown1', 79: 'RightArrow1', 80: 'LeftArrow1', 81: 'DownArrow1', 82: 'UpArrow1', 100: 'Non-US', 101: 'Application10', 102: 'Power9', 104: 'F13', 105: 'F14', 106: 'F15', 107: 'F16', 108: 'F17', 109: 'F18', 110: 'F19', 111: 'F20', 112: 'F21', 113: 'F22', 114: 'F23', 115: 'F24', 116: 'Execute', 117: 'Help', 118: 'Menu', 119: 'Select', 120: 'Stop', 121: 'Again', 122: 'Undo', 123: 'Cut', 124: 'Copy', 125: 'Paste', 126: 'Find', 127: 'Mute', 128: 'Volume', 129: 'Volume', 130: 'Locking', 131: 'Locking', 132: 'Locking', 135: 'International115,28', 136: 'International216', 137: 'International317', 138: 'International418', 139: 'International519', 140: 'International620', 141: 'International721', 142: 'International822', 143: 'International922', 144: 'LANG125', 145: 'LANG226', 146: 'LANG330', 147: 'LANG431', 148: 'LANG532', 149: 'LANG68', 150: 'LANG78', 151: 'LANG88', 152: 'LANG98', 153: 'Alternate', 154: 'SysReq/Attention1', 155: 'Cancel', 156: 'Clear', 157: 'Prior', 158: 'Return', 159: 'Separator', 160: 'Out', 161: 'Oper', 162: 'Clear/Again', 163: 'CrSel/Props', 164: 'ExSel'}
nums = []
nums2 = []
nums3 = []
keys = open('usbdata.txt')
for line in keys:
    nums.append(a)
keys.close()
output = ""
for n in nums:
    if n == 0 :
        continue
    if n in mappings:
        output = output + mappings[n]
    else:
        # output += '[unknown]'
        pass

print('output :\n' + output)

得到键盘输入:
这里写图片描述
前面都是乱码,看不出什么东西
中间出现了有规律的hex,结尾三个回车加一个Q,让人想到vim呢

查了一下’flag’的十六进制,发现其中有一段正好对应,打印出来看看:
Misc-Xp0int(数据包分析)_第2张图片
flag.txt,结尾是PK

这不就是ZIP压缩包嘛~
往前翻,找到ZIP文件头 50 4b 03 04,拖到最后复制下来
用十六进制编辑器粘贴进去
Misc-Xp0int(数据包分析)_第3张图片
注意文件为50 4b 05 06之后还有一些信息,以00 00作为标准结束就好啦

保存为zip后打开,里面果然是一个txt,打开就得到了flag啦

你可能感兴趣的:(CTF)