提取pcap文件中的信息|如何利用libpcap和Python嗅探数据包

㈠ 怎样用python读取超大的pcap文件

不会的,你设置一个环境变量就可以了,这样在命令行下就可以使用那个版本的python。我同时装的3.5和2.7。一些python的IDE还会让你选择哪一个python版本做为编译器。非常方便。

㈡ 如何利用SharpPcap截取HTTP包的细节数据信息

中间有一个条件语句,判断是否是“POST”,如果是,才将Packet截取,但事实上,当命令为POST时,该Packet是不包括细节数据的,它只是一个文件上传时的第一个Packet。所以,要将所有的Packet截取或者把有filename的键截取,需要将“POST”的判断语句去掉或者屏蔽它作为唯一截取Packet的条件

㈢ 如何用C++实现读取.pcap包文件

建议用winpcap提供的函数就行读取抓来的报文有他自己定义的结构用pcap_next_ex()函数可以把真正的把报文读出来之后就是按照协议来解析报文,这个就容易了看winpcap帮助文档上的例子,很快的

㈣ 如何利用libpcap和Python嗅探数据包

一提到Python获取数据包的方式,相信很多Python爱好者会利用的libpcap软件包或利用Windows下的WinPcap可移植版的方式进行抓取数据包,然后再利用dpkt软件包进行协议分析,我们这里想换一个角度去思考: 1. Python版本的pcap存储内存数据过小,也就是说缓存不够,在高并发下容易发生丢包现象,其实C版本的也同样存在这样的问题,只不过Python版本的缓存实在是过低,让人很郁闷。 2. dpkt协议分析并非必须,如果你对RFC 791和RFC 793等协议熟悉的话,完全可以使用struct.unpack的方式进行分析。 如果你平常习惯使用tcpmp抓取数据包的话,完全可以使用它来代替pcap软件包,只不过我们需要利用tcpmp将抓取的数据以pcap格式进行保存,说道这里大家一定会想到Wireshark工具,具体命令如下: tcpmp dst 10.13.202.116 and tcp dst port 80 -s 0 -i eth1 -w ../pcap/tcpmp.pcap -C 1k -W 5我们首先需要对pcap文件格式有所了解,具体信息大家可以参考其他资料文档,我这里只说其重要的结构体组成,如下:sturct pcap_file_header { DWORD magic; WORD version_major; WORD version_minor; DWORD thiszone; DWORD sigfigs; DWORD snaplen; DWORD linktype; } struct pcap_pkthdr { struct timeval ts; DWORD caplen; DWORD len; } struct timeval { DWORD GMTtime; DWORD microTime; }这里需要说明的一点是,因为在Python的世界里一切都是对象,所以往往Python在处理数据包的时候感觉让人比较麻烦。Python提供了几个libpcapbind,http://monkey.org/~gsong/pypcap/这里有 一个最简单的。在windows平台上,你需要先安装winpcap,如果你已经安装了Ethereal非常好用。一个规范的抓包过程:import pcapimport dpktpc=pcap.pcap() #注,参数可为网卡名,如eth0pc.setfilter('tcp port 80') #设置监听过滤器for ptime,pdata in pc: #ptime为收到时间,pdata为收到数据 print ptime,pdata #…对抓到的以太网V2数据包(raw packet)进行解包:p=dpkt.ethernet.Ethernet(pdata)if p.data.__class__.__name__=='IP': ip='%d.%d.%d.%d'%tuple(map(ord,list(p.data.dst))) if p.data.data.__class__.__name__=='TCP': if data.dport==80: print p.data.data.data一些显示参数nrecv,ndrop,nifdrop=pc.stats()返回的元组中,第一个参数为接收到的数据包,第二个参数为被核心丢弃的数据包。 至于对于如何监控tcpmp生成的pcap文件数据,大家可以通过pyinotify软件包来实现,如下:class Packer(pyinotify.ProcessEvent): def __init__(self, proct): self.proct = proct self.process = None def process_IN_CREATE(self, event): logger.debug("create file: %s in queue" % self.process_IF_START_THREAD(event)) def process_IN_MODIFY(self, event): self.process_IF_START_THREAD(event) logger.debug("modify file: %s in queue" % self.process_IF_START_THREAD(event)) def process_IN_DELETE(self, event): filename = os.path.join(event.path, event.name) logger.debug("delete file: %s" % filename) def process_IF_START_THREAD(self, event): filename = os.path.join(event.path, event.name) if filename != self.process: self.process = filename self.proct.put(filename) if self.proct.qsize() > 1: try: logger.debug("create consumer proct.qsize: %s" % self.proct.qsize()) consumer = Consumer(self.proct) consumer.start() except Exception, errmsg: logger.error("create consumer failed: %s" % errmsg) return filename class Factory(object): def __init__(self, proct): self.proct = proct self.manager = pyinotify.WatchManager() self.mask = pyinotify.IN_CREATE | pyinotify.IN_DELETE | pyinotify.IN_MODIFY def work(self): try: try: notifier = pyinotify.ThreadedNotifier(self.manager, Packer(self.proct)) notifier.start() self.manager.add_watch("../pcap", self.mask, rec = True) notifier.join() except Exception, errmsg: logger.error("create notifier failed: %s" % errmsg) except KeyboardInterrupt, errmsg: logger.error("factory has been terminated: %s" % errmsg)在获得要分析的pcap文件数据之后,就要对其分析了,只要你足够了解pcap文件格式就可以了,对于我们来讲只需要获得TCP数据段的数据即可,如下:class Writer(threading.Thread): def __init__(self, proct, stack): threading.Thread.__init__(self) self.proct = proct self.stack = stack self.pcap_pkthdr = {} def run(self): while True: filename = self.proct.get() try: f = open(filename, "rb") readlines = f.read() f.close() offset = 24 while len(readlines) > offset: self.pcap_pkthdr["len"] = readlines[offset+12:offset+16] try: length = struct.unpack("I", self.pcap_pkthdr["len"])[0] self.stack.put(readlines[offset+16:offset+16+length]) offset += length + 16 except Exception, errmsg: logger.error("unpack pcap_pkthdr failed: %s" % errmsg) except IOError, errmsg: logger.error("open file failed: %s" % errmsg) 在获得TCP数据段的数据包之后,问题就简单多了,根据大家的具体需求就可以进行相应的分析了,我这里是想分析其HTTP协议数据,同样也借助了dpkt软件包进行分析,如下:def worker(memcache, packet, local_address, remote_address): try: p = dpkt.ethernet.Ethernet(packet) if p.data.__class__.__name__ == "IP": srcip = "%d.%d.%d.%d" % tuple(map(ord, list(p.data.src))) dstip = "%d.%d.%d.%d" % tuple(map(ord, list(p.data.dst))) if p.data.data.__class__.__name__ == "TCP": tcpacket = p.data.data if tcpacket.dport == 80 and dstip == local_address: srcport = tcpacket.sport key = srcip + ":" + str(srcport) if tcpacket.data: if not memcache.has_key(key): memcache[key] = {} if not memcache[key].has_key("response"): memcache[key]["response"] = None if memcache[key].has_key("data"): memcache[key]["data"] += tcpacket.data else: memcache[key]["data"] = tcpacket.data else: if memcache.has_key(key): memcache[key]["response"] = dpkt.http.Request(memcache[key]["data"]) try: stackless.tasklet(connection)(memcache[key]["response"], local_address, remote_address) stackless.run() except Exception, errmsg: logger.error("connect remote remote_address failed: %s", errmsg) logger.debug("old headers(none content-length): %s", memcache[key]["response"]) memcache.pop(key) except Exception, errmsg: logger.error("dpkt.ethernet.Ethernet failed in worker: %s", errmsg)如果大家只是想单纯的获取IP地址、端口、流量信息,那么问题就更简单了,这里只是抛砖引玉。另外再提供一段代码供参考:import pcap, dpkt, structimport binasciidef main(): a = pcap.pcap() a.setfilter('udp portrange 4000-4050') try: for i,pdata in a: p=dpkt.ethernet.Ethernet(pdata) src='%d.%d.%d.%d' % tuple(map(ord,list(p.data.src))) dst='%d.%d.%d.%d' % tuple(map(ord,list(p.data.dst))) sport = p.data.data.sport dport = p.data.data.dport qq = int( binascii.hexlify(p.data.data.data[7:11]) , 16 ) print 'QQ: %d, From: %s:%d , To: %s:%d' % (qq,src,sport,dst,dport) except Exception,e: print '%s' % e n = raw_input()if __name__ == '__main__': main()

㈤ python怎样读取pcap文件

程序如下:#!/usr/bin/env python#coding=utf-8#读取pcap文件,解析相应的信息,为了在记事本中显示的方便,把二进制的信息import structfpcap = open('test.pcap','rb')ftxt = open('result.txt','w')string_data = fpcap.read()#pcap文件包头解析pcap_header = {}pcap_header['magic_number'] = string_data[0:4]pcap_header['version_major'] = string_data[4:6]pcap_header['version_minor'] = string_data[6:8]pcap_header['thiszone'] = string_data[8:12]pcap_header['sigfigs'] = string_data[12:16]pcap_header['snaplen'] = string_data[16:20]pcap_header['linktype'] = string_data[20:24]#把pacp文件头信息写入result.txtftxt.write("Pcap文件的包头内容如下: \n")for key in ['magic_number','version_major','version_minor','thiszone','sigfigs','snaplen','linktype']:ftxt.write(key+ " : " + repr(pcap_header[key])+'\n')#pcap文件的数据包解析step = 0packet_num = 0packet_data = []pcap_packet_header = {}i =24while(i<len(string_data)):#数据包头各个字段pcap_packet_header['GMTtime'] = string_data[i:i+4]pcap_packet_header['MicroTime'] = string_data[i+4:i+8]pcap_packet_header['caplen'] = string_data[i+8:i+12]pcap_packet_header['len'] = string_data[i+12:i+16]#求出此包的包长lenpacket_len = struct.unpack('I',pcap_packet_header['len'])[0]#写入此包数据packet_data.append(string_data[i+16:i+16+packet_len])i = i+ packet_len+16packet_num+=1#把pacp文件里的数据包信息写入result.txtfor i in range(packet_num):#先写每一包的包头ftxt.write("这是第"+str(i)+"包数据的包头和数据:"+'\n')for key in ['GMTtime','MicroTime','caplen','len']:ftxt.write(key+' : '+repr(pcap_packet_header[key])+'\n')#再写数据部分ftxt.write('此包的数据内容'+repr(packet_data[i])+'\n')ftxt.write('一共有'+str(packet_num)+"包数据"+'\n')ftxt.close()fpcap.close()最终得到的result文件如下所示:字段显示的都是十六进制,其中的数据部分和wireshark打开,显示的十六进制窗口一样。

㈥ 如何从pcap文件中解析mysql部分

pcap文件中的,或者现场抓包得到的,都是以太网中的网络数据包.是以数据包为单位的.你在wireshark中上面列表中看到的每一行,都是一个以太网数据包.而机器之间的通信,都是需要经过多个数据包的发送与接收,才能完成的.你可以在上面的filter那里设置过滤的协议,将列表中杂乱的数据包过滤一下,仅显示某个协议的数据包,列表中,就都是这个协议及这个协议承载的协议的数据包了.至于双向传输,也需要多个数据包的传输交互理解后,才可以完成,所以每个数据包肯定是单向的.

㈦ sharppcap怎么解析捕获到的数据包

完全依赖于你的觉悟,数据包监测既是一个重要的管理工具,也可以成为一项邪恶的黑客技 术。事实上,它两者皆是,一个好的数据包监测软件通常可以在网络管理和黑客技术工具包中同时找到。黑客可以用数据包监测软件监听互联网,并且追踪一些敏感数据的交换如登录对话和财经交 易。网络管理员可以用数据包监测软件检测错误布线,损坏的数据包和其它网络问题。在本文中,我们覆盖了开始进行数据包监测需知的所有内容,而没有涉及太多阴暗面。通过 一个最流行工具软件的实例,你将学习到在TCP/IP网上四处监听的基本技术。文中阐述较为 详细,以帮助你理解在查看数据包时确实能看到什么,并且介绍了IP欺骗技术。当然,我们 也提供了一个更多网络资源的列表以满足你所有监听的需要。一、什么是数据包监测?数据包监测可以被认为是一根窃听电话线在计算机-网络中的等价物。当某人在“监听”网络 时,他们实际上是在阅读和解释网络上传送的数据包。如果你在互联网上,正通过其它计算机发送数据。发送一封电子邮件或请求下载一个网页都 会使数据通过你和数据目的地之间的许多计算机。这些你传输信息时经过的计算机都能够看 到你发送的数据。数据包监测工具允许某人截获数据并且查看它。 互联网和大多数数据网络一样,通过从一个主机发送信息数据包到另一个主机来工作。每个> 数据包包含有数据本身和帧头,帧头包含数据包的信息如它的目的地和来源。数据包的数据 部分包含发送到网络的信息——它可能是电子邮件,网页,注册信息包括密码,电子商务信 息包括信用卡号码,和其它一切网络上流动的东西。基于TCP/IP协议的互联网采用的体系结构是以太网,它的特点是把所有的数据包在网络中广 播。网络为大多数计算机提供的接口是一个内置的以太网卡(也叫做网卡或NIC)。这些接口卡 默认提取出目标地址和自己的网卡地址一致的数据包而过滤掉所有其它的数据包。然而,以 太网卡典型地具有一个“混合模式”选项,能够关掉过滤功能而查看经过它的所有数据包。 这个混合模式选项恰好被数据包监测程序利用来实现它们的监听功能。防火墙完全不能阻止数据包被监测。虚拟个人网络(VPN)和加密技术也不能阻止数据包被监测 ,但能使它的危害小一点。要知道许多密码在网络上传输时是不加密的,有时即使已经加密 ,也不能挫败一个数据包监测工具侵入系统的企图。一个寻找登录序列和监听加密口令的入 侵者并不需要破译口令为自己所用,而只需要依赖未经授权的加密版。对于需要高度安全的系统,一个和数据包监测技术妥协的保护密码的最好措施是执行“使用 一次即更改”的密码方案——所以即使是一个不道德的黑客可能监测了登录序列,密码在下 一次试验时就不起作用了。二、用什么监测实际上有几百种可用的数据包监测程序,许多结合起来破译和扫描特定类型的数据并被专门 设计为黑客的工具。我们在这里不讨论任何寻找密码或信用卡号的工具,但它们确实存在。 这类工具经常有内置的协议分析程序,它能够帮助翻译不同网络协议的数据包,而不是提供 原始的数字数据。一个最古老也最成功的数据包和网络分析产品是由WildPackets (以前的AG 组)出品的Ether Peek。 EtherPeek已经存在了10年,堪称互联网时代真正的恐龙。他们提供Windows版 和Mac intosh版,每个都具有网络管理员-导向的价格。这个工具软件开始只是一个网络分析器型的 数据包监测软件,经过这些年的发展已经成为一个真正的网络管理工具并具有网站监视和分 析等新的功能。在他们的网站有一个演示版,想要试验的人可以去下载。另一个能够监视网络活动捕获和分析数据包的程序是TamoSoft的CommView。这个流行的监测 程序显示网络连接和IP统计数字,能够检查单独的数据包,通过对IP协议TCP, UDP,和 ICMP 的完全分析解码到最低层。完全访问原始数据也只需要花费一个非常友好的价格9(或者 是以更低的价格获得个人许可证,它只能捕获发送到你的PC的数据包)。TamiSoft的网站同 样提供一个可以下载的演示版。如果你运行微软的Windows NT Server,将不必买任何东西——它有一个内置的数据包监测程 序叫做网络监视器。要访问它,进入网络控制面板,选择服务标签,点击添加并选择网络监 视工具和代理。一旦它已经安装你就可以从程序菜单下的管理工具中运行网络监视器。三、如何监测好了,现在你的手头至少有一个流行的数据包监测软件的测试版了,我们要开始研究事情的 真相了,看一看我们实际上能从这些数据包中学到什么。本文将以Tamisoft的CommView为例 。但同样的概念和功能在其它的数据包监测产品中也很容易适用。开始工作以前,我们需要打开监测功能,在CommView中通过从下拉菜单中选择网络适配器, 然后按下开始捕获按钮,或从文件菜单中选择开始捕获。如果发生网络阻塞,你应该立即看 到一些行为。CommView和大多数数据包监测软件一样,有一个显示IP网络信息的屏幕和一个显示数据包数 据的屏幕。在默认方式下你将看到IP统计页。你应该能够在你的浏览器中输入一个URL,或检 查你的e-mail,看这个屏幕接收通讯两端的IP地址数据。除了两端的IP地址,你应该看到端口号,发送和接受的数据包数,对话的方向(谁发送第一 个数据包),两个主机间对话的次数,和有效的主机名。CommView能和可选择的SmartWhoIs 模块相结合,所以在IP列表中右击IP号将提供一个查找信息返回关于这个IP号的所有已知的 注册信息。如果你用popmail型的帐号查收电子邮件,将在IP列表中看到一条线,端口号为1 10,标准popmail端口。你访问任意网站都会在端口80产生一条线,参见图A。 查明某些数据包来自于哪儿是数据包监测程序最普通的应用之一。通过运行一个程序如Smar tWhoIs,你能够把数据包监测程序所给出的鉴定结果——IP和以太网地址扩展到潜在的更有 用的信息,如谁管理一个IP地址指向的域。一个IP地址和以太网地址对于要追踪一个无赖用 户来说没有太多作用,但他们的域管理员可能非常重要。在CommView中点击数据包标签可以在它们经过时看到实际的数据包。这样的视图意义很含糊 ,而且如果你惧怕十六进制,这不是适合你的地方。有一个数据包列表,其中每个数据包都 有一个独一无二的数据包编号。在列表视图中你也可以看到数据包的协议(如TCP/IP),MA C (以太网)地址,IP地址和端口号。在CommView数据包窗口中间的窗格中你可以看到在列表中选择的无论什么数据包的原始数据 。既有数据包数据的十六进制表示也有一个清楚的文本翻译。底部的窗格显示了IP数据包的 解码信息,包括数据包在IP, TCP, UDP, 和 ICMP层的完整分析,参见图B。如果你正在和这些信息打交道,那么你不是在进行繁重的网络故障排除工作,就是在四处窥 探。翻译十六进制代码不是这篇文章讨论的范围,但应用正确的工具,数据包可以被解开而 看到其内容。当然这些并不是用一个数据包检测软件所能做的一切——你也可以复制数据包,为捕获数据 包建立规则和过滤器,以成打不同的方式获得各种统计数字和日志。功能更加强大的工具不 仅限于可以查看,记录和分析发送和交换数据包,利用它们不费多少功夫就可以设想出一些狡猾的应用程序。四、IP欺骗和更多资源一个完全不友好的数据包监测应用程序是一种IP欺骗技术。这时,一个不道德的用户不仅查 看经过的数据包,而且修改它们以获得另一台计算机的身份。当一个数据包监测程序在两台正在通讯的计算机段内时,一个黑客就能监听出一端的身份。 然后通过找到一个信任端口的IP地址并修改数据包头使数据包看起来好象来自于那个端口达 到攻击连接的目的。这类活动通常伴随着一个对伪造地址的拒绝服务攻击,所以它的数据包 不会被入侵干扰。关于数据包监测和IP欺骗技术的信息成吨,我们仅仅描述了对TCP/IP数据包操作的一些表面 知识。在开始数据包监测以前最好深入了解TCP/IP和网络——这样做更有意义。这里是一个 为那些想要进一步研究这个问题的人们提供的附加的资源列表。 ZDNet"s Computer Shopper Network UtilitiesPacketstorm"s packet sniffer section with over 100 sniffing programsWild Packets, makers of EtherPeekEtherPeekTamoSoft, makers of CommViewAn overview of the TCP/IP Protocol Suite 最后一句警告——小心你监测的场所。在你家里的PC上运行一个数据包监测程序学习TCP/IP ,或者是在你控制的局域网运行以解决故障是一回事,在别人的网络上偷偷地安装却是另一 回事。机敏的网络管理员在集中注意力时会发现监测他们网络的人,并且他们通常不会很高兴。

㈧ 读取pcap文件中SQL语句

读取pcap文件中SQL语句pcap文件中的,或者现场抓包得到的,都是以太网中的网络数据包.是以数据包为单位的.你在wireshark中上面列表中看到的每一行,都是一个以太网数据包.

㈨ 求助 如何读取.pcap包文件

等待高手

㈩ dsploit生成的pcap文件怎么解析

请使用wpdpack这个开发包,可以获取一些信息的,就是内部信息需要自己解析了,wireshark里面是wireshark工具帮你解析的,而pcap属于tcpmp这种存储格式,你要么自己写解析,要么到网上找一下别人写好的解析工具。


赞 (0)