pcap内核过滤包长
① winpcap捕获数据包要用多线程吗
:libpcap和winpcap最大的不同就是 内核缓冲区,用户缓冲区等都不能设置,没有提供这样的函数,要编译libpcap源码。
② 有没有什么类似Winpcap的数据包拦截的库
捕获包的话。。除了Winpcap这个库外好像还没有第二种。
Nt内核之后的WinSock不支持自己封装MAC帧的RawSocket了。
所以如果有能力就写NDIS驱动吧。
③ 如何基于WinPcap网络数据包捕获程序来设计完成数据包捕获程序
看看
④ 采用winpcap过滤从MAC地址A到MAC地址B的以太网数据包的过滤语句怎么写
⑤ WinPcap能不能阻断数据包
确实不能阻断数据包,他是用来抓包的。
WinPcap产生的目的,就是为应用程序提供这种访问方式; WinPcap提供了以下功能 :
捕获原始数据包,无论它是发往某台机器的,还是在其他设备(共享媒介)上进行交换的
在数据包发送给某应用程序前,根据用户指定的规则过滤数据包
将原始数据包通过网络发送出去
收集并统计网络流量信息
所以你只能用WINPCAP进行收发数据包,对你接收到的数据包进行过滤,或者统计你收到的数据包流量。所以你不能阻断数据包的传输,而且他确实是个提取分析用。所以那个人说的很对。就算你筛选了你要收到的数据包,但是那也只是你所编辑的程序只提取你需要的数据包,实际上你相应的网卡上仍然收到了所有的数据包。你可以用WIRESHARK 软件看到。winpcap抓包所能实现的功能基本,都在WIRESHARK上面体现了。都是winpcap还能发送数据包。
当然,如果你是网络高手,你可以根据不同传输协议,搞些MAC或IP欺骗,拦截一些不属于你的数据包,但是这个就不是很容易办到了。
你上面问道如何来丢弃数据包。。是丢弃你要发的数据包?还是丢弃你接收的数据包?
如果是丢弃接收的数据包的话,那就是筛选了过滤了,要用到 pcap_compile() 和 pcap_setfilter() 函数了。
如果是丢弃你要发送的数据包,数据包发送出去后就不收你控制了,你无法丢弃。如果你要编程,你可以进我的网络空间观摩下。
⑥ winpcap 能不能只捕获网卡收到的数据包,而不捕获网卡自己发送的数据包啊
可以..设置filter为的目标主机为自己就可以了。或者忽略掉自己发出去的数据包
⑦ 简述基于winpcap体系结构的捕获网络数据包的过程
Winpcap是针对Win32平台上的抓包和网络分析的一个架构。它包括一个核心态的包过滤器,一个底层的动态链接库(packet.dll)和一个高层的不依赖于系统的库(wpcap.dll)。
抓包是NPF最重要的操作。在抓包的时候,驱动使用一个网络接口监视着数据包,并将这些数据包完整无缺地投递给用户级应用程序。
抓包过程依赖于两个主要组件:
一个数据包过滤器,它决定着是否接收进来的数据包并把数据包拷贝给监听程序。数据包过滤器是一个有布尔输出的函数。如果函数值是true,抓包驱动拷贝数据包给应用程序;如果是false,数据包将被丢弃。NPF数据包过滤器更复杂一些,因为它不仅决定数据包是否应该被保存,而且还得决定要保存的字节数。被NPF驱动采用的过滤系统来源于BSD Packet Filter(BPF),一个虚拟处理器可以执行伪汇编书写的用户级过滤程序。应用程序采用用户定义的过滤器并使用wpcap.dll将它们编译进BPF程序。然后,应用程序使用BIOCSETF IOCTL写入核心态的过滤器。这样,对于每一个到来的数据包该程序都将被执行,而满足条件的数据包将被接收。与传统解决方案不同,NPF不解释(interpret)过滤器,而是执行(execute)它。由于性能的原因,在使用过滤器前,NPF提供一个JIT编译器将它转化成本地的80x86函数。当一个数据包被捕获,NPF调用这个本地函数而不是调用过滤器解释器,这使得处理过程相当快。
一个循环缓冲区,用来保存数据包并且避免丢失。一个保存在缓冲区中的数据包有一个头,它包含了一些主要的信息,例如时间戳和数据包的大小,但它不是协议头。此外,以队列插入的方式来保存数据包可以提高数据的存储效率。可以以组的方式将数据包从NPF缓冲区拷贝到应用程序。这样就提高了性能,因为它降低了读的次数。如果一个数据包到来的时候缓冲区已经满了,那么该数据包将被丢弃,因此就发生了丢包。
⑧ libpcap 怎么拦截数据包
谁说这个东西能拦截了?
等你收到数据的时候,数据报已经发出去了
⑨ linux下使用libpcap进行数据捕获,能够将捕获到的数据包保存为pcap文件
libpcap和winpcap最大的不来同就是 内核缓冲区自,用户缓冲区等都不能设置,没有提供这样的函数,要编译libpcap源码。
另外,linux Fedora 下使用libpcap时,找不到pcap.h,查找发现安装了libpcap的库但是没有头文件。解决办法是:
1.如何查看是否安装libpcap? #rpm -aq libpcap
2.查找libpcap源,yum search pcap
3.安装libpcap, yum install libpcap-devel.i386
⑩ libpcap抓的一个数据包长度为什么为0
一般包头都有显示数据长度251,你要看下是明文还是加密的,破解了以后,改成253就可以了。修改数据包要具体问题具体分析。修改接收包也不一定有用。多试一试就ok了!