python中的scapy抓取http报文内容
作者:天林0419
一、使用scapy
简单的用来抓取http相关报文
#coding=utf-8 import scapy.all as scapy from scapy.layers.http import HTTPRequest, HTTPResponse, HTTP import json # pcap_file = r'C:\Users\cmcc\Desktop\test.pcap' pcap_file = r'C:\Users\cmcc\Desktop\wyf1.pcap' def fengxi(pkt): flag = False ip_layer = pkt.getlayer('IP') tcp_layer = pkt.getlayer('TCP') if tcp_layer: data = { 'time': ip_layer.time, "ip": {'src': ip_layer.src, 'dst': ip_layer.dst, 'version': ip_layer.version}, "tcp": {'seq': tcp_layer.seq, 'ack': tcp_layer.ack} } if pkt.haslayer(HTTPRequest): data['type'] = 'request' http_header = pkt[HTTPRequest].fields http_header.pop("Headers") data['hearder'] = http_header flag = True elif pkt.haslayer(HTTPResponse): data['type'] = 'response' http_header = pkt[HTTPResponse].fields http_header.pop("Headers") data['hearder'] = http_header flag = True if flag: if 'Raw' in pkt: payload = pkt['Raw'].load if payload: if isinstance(payload, str): data['data'] = payload print data scapy.sniff(offline=pcap_file, prn=fengxi)
二、抓取结果显示
{'ip': {'src': '192.168.31.78', 'dst': '111.7.68.189', 'version': 4}, 'type': 'request', 'hearder': {'Content-Length': '1950', 'User-Agent': 'Post', 'Host': 'qurl.f.360.cn', 'Cache-Control': 'no-cache', 'Path': '/wdinfo.php', 'Http-Version': 'HTTP/1.1', 'Content-Type': 'application/octet-stream', 'Method': 'POST'}, 'tcp': {'ack': 520955141, 'seq': 823447826}, 'time': 1582857039.599}
{'ip': {'src': '111.7.68.189', 'dst': '192.168.31.78', 'version': 4}, 'time': 1582857039.609, 'tcp': {'ack': 823449931, 'seq': 520955141}, 'type': 'response', 'data': '54e\r\n\x1e\n\x01\x02!\xae\x00\x00\x050\xe6{\xbd\x0e\xf5\xc6\xd8\tv\x8d\xe8QT\xb2\x8f\x8d\x00\x00\x00\x05\xbf"c\x0b\xc5\xab$9Q\xa1\x9d\xfd\xcbF\x80\xb6@\xc6\x0b\x07A\tp\x97\xde\x9e\x1db\xc5qar\xa2nV\xd2\xe2\x16\xe4o?\x9f\xe6R\xfe5\xd4\xed\xe9\x01s\t \x98\x06\xd7XJb\x85\xad:\xf0\xad9m[\x03\xe7\x95\xb5r\x84\xefLw\xf8\xf6\x8f\x87\xfd\xc5v\xafl\x81\xd6\xcc9s. \xf8g\xae\x1ae\x1ca\xef\xd9f\xa8\xe2\xa6d\xcd\x1f\x93>#\xbc*\x96\xb1\x1e\x05$\xa9\x92\xed\x89^g)\x80+\x1d\xfd\x00;\xfb\x1d\xf1\xdd\xde)\x983\x8cJ\x1a\xf9J"\xa3\xc4\xfe\x9a\xf2\x19\xbc\xd8$b\x88\xaa\xb6C4\xe0\xe5\xd8\xa26\xdd\xbc\xe6\x8fE\x8bAsb\x1aO\x8d\x97x\xbe\x92\xc2\x890\xc9\xa6\xb8\xef\xcf\xf5\x7f\xe5\xf7\x10\xab\xdag\xeeb\x98;\xe0\xf1\xf2U\xd0\xb1\xa5f\xd2\xda\x9e\x8f\x83\x01\xc0\x06X\xb4\xb1\xbd\xa6\xd4\xb8\x82\x1a\xb5\xd3\xbfQ\x85\xe6\xe0\xb4\xb8\xe4/\x18+\xaf\xe4X\r.^(\xed\xf0$8\xc9\xf1 \xeb*\xd8AF\xb2?7\xf3\x93\x9bQq\xea?\xb3\t\x12[\xc0x\xfa\x8d`\x8a\x99 \x91=9X5\xe4\xbd3;\xc0L\xfe\xcb\xe8kQv\xac\x9a\xa6\xe4\x98aPB[\xa1\x1f\xfcqSr\xc5S\xf2\xf6E65\x91\x85`\x1eV9\x06To\xb7\x9a[\xba\x18\x04-\xc8R\x9b\xa6i\xa7\x89`\xe4\xdaU\x91\x0e\x08\xc0\x84&(Q\xceb\x9b\xa5\x07b]R\x1f\x90\xe2\xd61\x9c\xf8\xc1%c\xd8\xc2t<\xe2J\xe5/d<\xcb\xf3\xccj\x926!\x04\xc4\xc4_lXMd\xdf`\xf1\r\xfd{\x8cU\xd1#*\xd7\x1d>\x1f\xf8\xa8\xac\\\xf7\xdf64\xce\x13\xd0\xdb\x02uZ\xf1\xc6"\x16<\xea8\xda\xc0\xbb\x97\xc9\x8a\x81\x03R\xac|\x95\x0f\x8a\x1ed\xe2\x85\x81\xa7\xd6\x88?Lf\x8d\xdfZ:\x1ax~\xf9\xa5\x18\xe7\xcb\xefd\'\x04\xe8D\xde\x02|Y\xf3\xa7<\t\xac\xf8\x061\xf6\xae\xa5%H\xf3\xb5\xe8\xfa\x13\xe2\xad\x08\x1e\xc4\x1d\xe7\xd2U\x07b\xf1Q\xb2\xcc\x1e#\x86\xa8/\x0f<\xbc\xc2\x9e\n\xd3\xbc\xfe\xc4Y_V\x01\xb8T"]\x06\xdc\xb2+\x02\x1f\x8b6\xe9\x0f)\x95\xf2Y\x05\xa7G\xa4TS\xf6\xbc\xa7\xa8X\xc17\xd5C\xd6\t\xb4\xbfP\xc8)\xcdD\x00y\x84e\xb2\xaf\xb1C\xc2W\x1d#R\xbb\x19n\xa0\xee\r#\x90\x04&\xd6cY\xea\x041\xb2.#\x87]_\xa8\x07\xb7\x18\xa1.3\xd9\xe9U\xcf\xa6"\xc9;\xb3\xbdx</\xc8\xdd\x1ev\x8a\xfb)F\xbe6Z=\xae\xe5\xbb\xb9"\xa7\x85z),\x16`\xff\xe9\xe4\x15W+\xdc\x89\xe3q\x12>\xdb\xd2d\xf7\xd2\xae\x91\x97\xb72:\xdc\xcc\xf8RJ}\x02t1H>\xe3\x9d\xc0Hn\xdbF\x0cG^u\x9f\x89\x9cX|\xec\x8fzB#Q\xd7c*\xae\xd9\xc3g#\xae\x0e\xafsE\xfc\x19\xe6pw\xcc9\xf5s\xe7\tW([\x97\x94\xfeS}3L(UyC\xd2;\xd2\xe7\xf9\x9d4\xa1\xabh;0\x97@y\x80\x1bD\xd7\x86;p\x1c\x14!\xd6Su\xe7\xd4S\xd0\x1d\x83\xee\xa0\xb2\x1a\xc0\x80!+C\xa1\x82\xb5\xf6\xaa\xbd=\x1azB\xc8\xf9\x06\xd77\x81\xb5)\x93\xba\xe7pi\xd1\xda\xad\x9a>y\xb3\x95.\x8b\x8b@\x18\x18f\x02\x80C\x8e\xfa<\x15\x97\xdd\xe0\xee\xd5\n[\x1e\xb5\xcbi\xda\xfd\xf8ak1h]\xa8r\xde\xa1\x80\xcc\x88\xf0_\xa9\xb7y\xe2\xfcu\xe5\x8b\x1d\xc8w8\xf9\xc7\x97\xb1l\xd7\xf2\xb8\x08\x0bQL\xd1\x1fAG\xdf\x03>6\xc4?^\xf6\xabe\xdbj\x832+\xdb\xe9\xdc\x87\xd4\x1cZ\xdex\x19\x104\xfe\xbcFu\xec\x01\xfc\xf5\x99\xb7Dn\xa2\xdf\xc3"\xc7\xf3\xd2\x92yR\x12p\xb0\x06\x8f\r \x82`\x0bs_\xfd\x14\x96q}\x9b~HYBZ\xffsO8\x1b\xff\x89LP\xb3W\xe0z9A\xf3"\xefL\xa6@/\xd4j=\xa5\r:6\x14)\x8c1\xb7\xadn\xf4X%\xa9\x92\xab\x0cu\xb6\x83\xe2jd\xc1\x94\xa9\xb0Z\xec\xcd\xf6d\xceL\xd3\xcfD\xe8(=W\xa3\xb5\xe0\xb8\x0f\x01J\xf4\xb0W\xb7\xb4z\xbb\r\x0e0\xabFk\xf2\xc9\xe8\xed\x17[O\xbc@\xfb\\en\xa6\xd0\xb2\xb4\xe0[bH\xd1\xfc\x05\xe52\x06\xecv\x1d\'`\x87\xff\xede$\xbf_2\xb0\xe8\xc7\xd9\xf9\xe1AP\x90\x8d\x02\xf5\xbe\n\x82\xa0\xdb\xa4\xf0R\xd1\xcf\x8dE\xcb\xfe\x95\xf3\xe0o\x10\xa8x\x08hD\x8e\xd7\x0b\xa9\xac\x0c\xe1\xa2\x8eV6\xa0DR*\xda\x8d\xe6\xf6\x17lb\xf7\xdbLf\x81%\x02X\xab\x06\x07>n\x9c\x15;\x9b\x80~\xc3(-\xf7\xce^\xb5\x9eR\xbdp\x91\xe1\'\xa7$\x8c\xd3>\xbb\x7f\xa5\x96\xac=\x02\xd3l4x\xfc\x88nH\x0c\x01^\x8f\x9d\xdfm\xcbI\xc2k\xe3~g', 'hearder': {'Transfer-Encoding': 'chunked', 'Status-Line': 'HTTP/1.1 200 OK', 'Server': 'nginx', 'Connection': 'close', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache', 'Date': 'Thu, 27 Feb 2020 09:17:48 GMT', 'Content-Type': 'application/octet-stream'}}
{'ip': {'src': '192.168.31.78', 'dst': '221.130.200.222', 'version': 4}, 'time': 1582857039.645, 'tcp': {'ack': 249202774, 'seq': 3444340556L}, 'type': 'request', 'data': '\x1e\n\x01\x02\x00\x99\x00\x00\x03\xc0\t\x920\xfe\x1e\xf8\xfd\\\x18\xf1\xd7R\x87i\xbe1\x00\x00\x00Q\xd2{G\x0e\xc1\xceN\xac\xcdh\xdb\xfd\x82\xed;\xec\x99\xecf\xdf\xd7\x00!Id|\xd9/\xc1/\t\xf7\x1d\xeb\x93\xadaw[\x97\xdf\r\xcc\xecpM\xca_\x7f\x10\x86\x0b\x110\x01!\xc5\x90d\x987\xd5H\xdcf\xc6X\x86\x1b=K\x07~Pz\xfb\xb2n\xdf\'\xc5x\xd3\x8fh\x8a-\x8a\xe3I\xda(.B\xec\x9a\x9a\x15\x06\xf5g\xf7p\x18l\x02CT\xa68P$^y\x85\x96n\xc23Hy\xf1&\xcd\xaa9\x89P`\xfa\xc9\x03\xc7\x80\xa2\x05/a\xe2\x8a7\xa8#j<\x01\xecf\xc4\xc8\xb3\x93\x08\x00\xc6\xf8\x82*\x01\xe5Bm\x01\xdaq\x86-\x82V\x02\xecU\xb6\xe6b|\xef\xfdk;%0&\xe6\xfe\x1b(\xe8x\xcb\xfb7\xe0\x15L\t\xac\xe0\xcd\xa2\xed\x8ee\xef\xb4\x10\x9b\xb8\x82\xa9\x08\xab!d\x8e\xc4r\x97\xfb\xd8\xf1y\xf8-9u2\x13\xbdj\xfa\xe9\x06\xa6\xcb\xa9a\xe6Y\x12\xd7M\x0c\xceUDD\x95\xb5{:\xbb\x94\x07\x94\xbf\xb3\xa7s7\x0e\xa1\xdd\x04\xe7i\xcd\x17,\xea\xa2V|\xc2\xbctw\xa6\xcd\xaaj\xf4 \xb0\xe9W\x0c@\x16y\nyB\xba\xfe\xaa\xf0\x97\xfb\xc7<\xea\xb1&\x0f+\x95\xef\x13vo\x01,\x83/-\x98r\x03xfA\x863\x01,\xd3\xff\x8e\xc4\xbf\xd59\xf6\xe6\xe25^\x05\x1fx\x87\x91\x94\xe3O\x0c\x1f\x9e\xe5\xd3\x8b\x80\xa1\x99\x0b\xc4]4A\r\xad\x03g\xcc\xc9\x1c\xa6\xca\x1dac"\x99\xcb\x01(b\xbe\xfc\x13\xec\x94:"\x16\x9a\xe5\xe3\x1c\xf5-M\x04G\x8b\xd1\xbe\xe2\xa4!\xd0n$\xef95\xf5-\xb1qz\x98\x01\x80\xaa\xb8\xbd.\xaf\xfc!\xfbf\x1br\xb0-3\xc8c\xba\x19\x0b\x81\xb2\x84\x0b\x0e4\x94\xfe4tR\xbd\xf4\xd4\xe9\xef\xc4\x0cf\x89\xf4\xc0\xeb\xcb\x04#\x99\xfa\xa0G\x17\xd1\xe8\x97\x97H\xc8\xf6\xecU^\xf8\x11W\xe6\x90\xadI\x88\xaf\xadr\xbd9.\xa0\n+\xfe\xd6\xe6\x0b&%\xc0\x97\x05\xd4\xb67\xa9\xa2Z\x91\xd6H\xe4E\x1f\xf50\xfa\xaa\x80\x0c\xad\x9d\x8e\xa3\xe7\x8ds]{Y\x7f\xbe+V>\x02\xc4\x9a\xec\x9am\x85i\x0f|U\xe2-;m\xaa\x95X\xb8JykVV\xe8\xf5\x1dt\x8eDn\x06ZjO\x11\x160Z$\xd0\xd3\x98[$\xd5;\xfe\x0f\xafvy&t\xd8\xc7\xa1\xcf&\xd8\x03\xf1F\xe2\x065\xf7_\xa1S\x95uE\xf2\xc5\xf7\xd1;[\xc3P\xab\xfe\x18E\x04]\x10K_\xa6\xfb.\xec(S7\xdf[\xa1\xa5\xc0\x84`|U\xf3.\x1c\x11\x19\xdc\x85\x96\xea\xbej\xd9\x8f\x9a\xe0kJ\xb1#\xc7\x95\x84\x11\x06\xb1\xd1\xe4\xb5\n\xc9\xc6\x14\xa6\xce\x0ew\xc3j\x80\xce\x83\xb8\x03\xb0\xc8\xf4)\x12P\x02j\xac\xdd=\x06\x12\xb2\xc9\xf3\xe59\x99/\x0f\xed$\xe6\xf9\xc7\xe9\xaev\x02L\x8e\xa0&\x94F*\xb5\xf4#\x03\x80\x1e\x0c\x17\x9d\xb7\xb6\x0c\xde\xfa\xa1\xd2\x1aIX\x93u\xe8cm\xeb\xdb\xcd\xce5\r\x81\xffMhm\xb9\x92{\xc5\x95\x88T&\xb9Q\xf0\x9d\'0\x008A\x9f\x1c\xec\xf1\x1aVK$3"\x14+J\xb0\xb3\xb2\xb1P\xdd\xe5\x15\x95J9IL\xf5q\x08x\xbc\xd1\xa2\x84\xba\'mc0\x16\x1f\xe9\x1b\xa5\x18\xb0\xd5(m\xe6P\xec?Z\xc1pf\xb60\xc8l\xfdV\xae\xcf\x9c\xff\xd8\xa9\xd4\xa3\xbc:\x19h\x83\xc3$\x17\x1d\xb2\x12\x03\xe8\x19\xe7\x12lw\xff\xc1T6\xbc5\xb9s\x06\xb3\xa5\xcc4\xbfm%m\xc5\x91\xece\x80:?\x15\xdcOp\xff\xa4\x17\xa4\xb0\xdd\xbd7k\x16\xa4D\xbe\xaa=y\xfaf\xb3B\x8e\xc1\xdb\x92\x1dM3\x91\xad\x92\xf3\xc1=*\xad\xd9U\x9e\xb6\x90\xc08\xe2\xed\xfc\x9fYu\x1e\x035\xcd\xb9\xf8\x08\xae\xf8\x80T\xa5\xb2\xdc8s\n\xe7\xcb{!\x8a\x8e', 'hearder': {'Content-Length': '990', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Accept-Encoding': 'gzip, deflate', 'Connection': 'keep-alive', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE', 'Host': 'tip.f.360.cn', 'Path': '/pagetip/req=0', 'Http-Version': 'HTTP/1.1', 'Content-Type': 'application/x-www-form-urlencoded', 'Method': 'POST'}}
{'ip': {'src': '221.130.200.222', 'dst': '192.168.31.78', 'version': 4}, 'time': 1582857039.754, 'tcp': {'ack': 3444341892L, 'seq': 249202774}, 'type': 'response', 'data': '\x1e\n\x01\x02\x00\x99\x00\x00\x00\x18V\xa5Lp)\xe3B\x0cD\x90\xf8B\xf1\x99}Z\x00\x00\x00Q\xc5qP\x868\xec[\x98$\xe4\xd9o\x14\xce\x07\xc7\xd9\xffN\xc5Oe\xf5\xf8', 'hearder': {'Content-Length': '54', 'Status-Line': 'HTTP/1.1 200 OK', 'Server': 'openresty', 'Connection': 'close', 'Date': 'Thu, 27 Feb 2020 09:17:49 GMT', 'Content-Type': 'text/plain; charset=UTF-8'}}
{'ip': {'src': '192.168.31.78', 'dst': '221.130.200.222', 'version': 4}, 'time': 1582857040.16, 'tcp': {'ack': 541672625, 'seq': 4040294594L}, 'type': 'request', 'data': '\x1e\n\x01\x02\x00\x99\x00\x00\x03\xd0\xd4O\x7f\x98\xc3\xbc\xb1\xfc\xd6[%].\xbeUZ\x00\x00\x00R\x92\xeb\x90\xc1+\x89\xc86\xbe\xd5J\xea\x06O"\xb8\x06\xfd{\x02\xe8\x1a\x9c\xf72\xc6\xed\x9f\rtxGIx*\xe6\x99\xc4(\xc8a,\x87\x132\x19\xe8\x85\xe3a^DW5f\xc2P\xd0\xbe\xe43\x86\xf6\t\xac\x04\xe0\xad\x80\x8e\xfc\x12\xe5^-q\xf0\xbaFKz\x9d\xc5U\xedq\xda\xa8\x12\xf6\xf6\xa7V\xff*\x9c?\x93\x86F\x99W\ntO\xa1y\xcf\xb8O\xbd\xe6\x86\x9c\xd3\xf0diS\r\xfd\xd9\xfa\xe6>\xf9\xba\x80\x0b\x1b#\x93\x966\xb4\xed\x8a\xb0Bk\x97S\xd4\xab\xac\x83\x80\x93\xcfK\xd4B\x7f\x0b\xe8\xab\xfc\x10\xba\x06\xee\x80\xc9\x0e\xa1\xd1\xcf,\x9cU\xef\xe3\xa4\xcb\x0b{\xfe\xb7w\x1a\x05\x7f\x05f\xac\xfb\x15t\xd9\xfb+PEj\x0eJ\xe0]\xf1\xcb\x95\xb0\x8c\xca\x07\x0eTE\xe5\xe0\x07\xd4""(C\xdd\x82\x87{\xad\x81,\xb7\xdaF\xa5Lj6\xf6?\x0e\xa8\x88\x9f\x17\x0c\x83\xe0N\xcf\xfc\xcb~1\r\xdc\x9f\xaaq\x10\xaa5\xb7LR\x87\xa2\x10\xc8;j\x9a\xc7,\x0bV3a\xea\xe5\xa6T\x85\xa4r\x12\xfc\xf3\xe9\x8c\xd9$2\xbb\x1e\x04?\xdeS[\x03\xc3\x95\xf3Cn;>\xe9\xc94\x9d\xc9\x90L\xd6 6\xe2s\xcc\xb66\xdd\xa8\xaeveq\tcg\xc8\x9b>\x8e=\x11v\xbe\xc7\x0b\xd6,\xac}\x17\xe33\xec\x93\xbb\x90\xe7\x7f\x872\xb5\x9az\xc4ku\xdbp\xa7|q#A\xfaEz\xafU\xfd\x06 \xde\xe5\xd2\xf4q\xf8)\xa4\xe8\x85\xa4\x84\x17W?bN\x98)\x1d\xfb\xa7\x81\x8d\x0e\x0b\xe9Y\x07A\xe0_\x13"`\xa2\x04\xd3HrHh^fgM3\xe7\x04w\xcf\x00o\xdc"\x89&,\x98|,;=\xc0+\xd7 6\xe0D\xbd\x8dJ\xdfr\x7f\xc3a\x1d\xc2\x895N4\xa4\x0b\x87\xeb\xee\x970\x86\xef#y\xef\xed\x80\xaa\x01(\xb7\xe9K\xbb\x85\x9d\xe4/;y=\r\x84M\xbb\xbc\xfe\xe5\x8d\xbd\xe0\x93\x888\xfe\x0b:\xaf\x83>}|\xdd\x9et\xa4y\xb9u\x08\xfb!\xbf\xff#{*\xcf\x88+/\xf3p\xfe\x04\xa4\x03\x9d\xb9\x87\xf5\x95T\xddl\x9a\xc2\x01~\x06:N\x0b\xd3\xfag\xac\x12\x81\xae\xa9>\xfd\x1dQ]\x88Z\x9a\xcbg\xe9\x02\x06\xca\x9b\xb0U\xf7\'\xa1\x0c\xd9CS\x8f\x0e\xb7\xfd{\x955\xca\xe3>\xef\x88<{(\xfa\x05\xec\xd9\xfd"\r,\x95*8.*\xda\xa8Yt\x8d,\x11\x1c\xa3\x07\xa4\x06\x08\x18\x93{\x94\xa0\x8c\'-\x06\x9f\xb2\xday(\xdbq\x9e\xb3\x81l\x16v\x98\xc8_s?\xac\x89\x07z\xb4s\xfcC\xe5>\xbf\xc3#sjU\xa3T\x87\x84\xd4\xd8&\xe1\xfeY\xef\xba\xbe\xfd\xcf\xa3\x96O-P\x1fW\xf8\xa7\xeb<T7\x02rf\x9d\xfb\xbc\xa6\xbf\xbdl|F\x98U>\xa3A\x9f\xd0\xde \xf21_\xcb\xb3\x05\x04rG\xc6\x9b\x05c$\x11<2@\xa2YL\x10\x0exd~\xb5\xb0\xf1~\xac\x18dx\xcd\xf8N\x1fJ\x93|+/xp\x1bn\xe7\xceJ\xeaG[\xb4\xe3\xda\xe1\xe5\xd6\x02$\x81J~\xf4\x17\x17\xee\x8dA\x7f\xee#\x1e\xba\x9ac\x15\x08\x89\xb5]\x1b3pF\x0b\xcd\xb80\xe1\x18\x87\x01\xcao\x1c\x9f\xea\x8b\xf2\xe4\xbc44!\x1b\xbe,\x8e\xb6\r\xda\x81\xcb\xadz\xa2\x91\x05\xe6\x80r:#9\x1e/jqR\x1c\x05\xaa\xccP+\x8fj\xba\x81z\xac\xb5IV\xda\x84w\xf4\x06h5v\xbcve+wvE\xda\xae9\xa0J\x7f\xc0\x0b\xc8&\xb0:\xc8\xa4E\xc2\xa1z\xcbo\xf3\xe6P<\x95\x17i\x96[>\xe535\xf1\x05\x012\x9e,\x0f\'.\xe5\xd4\x02\xe8\xa9\xe6\x9e\x99\xb1\xba#\x0fRpIU\n\xe6?o\xdc)\x19\xfc\xb39\xa6\xe2\x12\xef0\x9bn(=Z6VxQ\x934\xfd.\x96.P\xa4\x15\xabp\xb2\xf9\xd5\xcdS\xf6\xf1{<rQh\x02', 'hearder': {'Content-Length': '1006', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Accept-Encoding': 'gzip, deflate', 'Connection': 'keep-alive', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE', 'Host': 'tip.f.360.cn', 'Path': '/pagetip/req=0', 'Http-Version': 'HTTP/1.1', 'Content-Type': 'application/x-www-form-urlencoded', 'Method': 'POST'}}
{'ip': {'src': '221.130.200.222', 'dst': '192.168.31.78', 'version': 4}, 'time': 1582857040.183, 'tcp': {'ack': 4040295947L, 'seq': 541672625}, 'type': 'response', 'data': '\x1e\n\x01\x02\x00\x99\x00\x00\x00\x18V\xa5Lp)\xe3B\x0cD\x90\xf8B\xf1\x99}Z\x00\x00\x00R\xc5qP\x868\xec[\x98$\xe4\xd9o\x14\xce\x07\xc7\xd9\xffN\xc5Oe\xf5\xf8', 'hearder': {'Content-Length': '54', 'Status-Line': 'HTTP/1.1 200 OK', 'Server': 'openresty', 'Connection': 'close', 'Date': 'Thu, 27 Feb 2020 09:17:50 GMT', 'Content-Type': 'text/plain; charset=UTF-8'}}
三、wireshark对比(发现红框所示,有2个http缺失)
四、分析原因
部分报文中无法提取http相关匹配项,
Raw显示如下:
HTTP/1.1 400 Bad Request Server: nginx/1.14.2 Date: Thu, 27 Feb 2020 09:17:48 GMT Content-Type: text/html; charset=utf-8 Content-Length: 173 Connection: close <html> <head><title>400 Bad Request</title></head> <body bgcolor="white"> <center><h1>400 Bad Request</h1></center> <hr><center>nginx/1.14.2</center> </body> </html>
五、总结
1.scapy显示的结构层级,查看分层结构可以进行解析数据
Ether / IP / TCP 192.168.31.78:1551 > 42.236.37.154:http A / HTTP / Raw
Ether / IP / TCP 192.168.31.78:5150 > 111.7.68.189:http PA / HTTP / HTTPRequest
Ether / IP / TCP 192.168.31.78:5150 > 111.7.68.189:http PA / HTTP / Raw
Ether / IP / TCP 111.7.68.189:http > 192.168.31.78:5150 A / HTTP / HTTPResponse / Raw
Ether / IP / TCP 111.7.68.189:http > 192.168.31.78:5150 PA / HTTP / Raw
Ether / IP / TCP 111.7.68.189:http > 192.168.31.78:5150 FPA / HTTP / Raw
Ether / IP / TCP 192.168.31.78:5153 > 221.130.200.222:http PA / HTTP / HTTPRequest / Raw
Ether / IP / TCP 221.130.200.222:http > 192.168.31.78:5153 PA / HTTP / HTTPResponse / Raw
Ether / IP / TCP 192.168.31.78:5191 > 221.130.200.222:http PA / HTTP / HTTPRequest / Raw
Ether / IP / TCP 192.168.31.78:5189 > 39.96.132.69:https A
Ether / IP / TCP 103.231.98.196:https > 192.168.31.78:5171 A
Ether / IP / TCP 103.231.98.196:https > 192.168.31.78:5171 A / Raw
2. 调试过程获取数据结构
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。