2019-09-25 18:52
⁄ 工业·编程
⁄ 共 11203字
一 概述
前篇已经讲述了接收实现,而对于libpcap抓包的重要工具,本身其实也集成了packet_mmap抓包方式。那么既然可以用于捕获抓包。packet_mmap可以实现发送抓包吗?答案当然是肯定的。不过网上对于packet_mmap发送介绍少之又少。接下来会讲解packet_mmap发送数据包遇到的问题。
二 使用
packet_mmap原理跟接收原理一致,就不过重复讲述。唯一区别前篇原理中提到的状态标识,发送的状态标识跟接收的标识不一样。这后面会细说。...
Libpcap, tcpdump阅读全文
2019-09-24 18:42
⁄ 工业·编程
⁄ 共 8061字
一 概述
· 前篇了解了libpcap库如何实现抓包
· 中篇深入内核底层讲述了抓包的原理
· 后篇自己实现过抓包过程
上述篇章中讲述的只是原始的抓包流程。
原始的抓包流程?简单的说就是创建socket,设置bpf后,每次接收数据包都要调用recvfrom系统调用。而每次调用recvfrom内核底层抓到的数据包都需要用内核copy到用户。不管是系统调用,还是copy都是相当耗cpu性能的。而linux内核提供了一种更高效的抓包方式packet_mmap.
二 packet_m...
Libpcap, tcpdump阅读全文
2019-09-23 18:28
⁄ 工业·编程
⁄ 共 23021字
一 概述
在了解了tcpdump的原理后,你有没有想过自己去实现抓包过滤? 可能你脑子里有个大概的思路,但是知道了理论知识,其实并不能代表你完全的理解。只要运用后,你才知道哪些点需要注意,之前没有考虑到的。
二 如何实现抓包过滤
在写代码前,先捋下思路,和相应的理论知识。
libpcap 库中实现抓包关键代码
sock_fd = cooked ?
socket(PF_PACKET, SOCK_DGRAM, protocol) :
socket(PF_PACKET, SOCK_RAW, protocol);
libpcap...
Libpcap, tcpdump阅读全文
2019-09-22 18:22
⁄ 工业·编程
⁄ 共 8503字
一 概述
前篇通过libpcap分析,可以很清楚的发现其实用户层调用了三个系统调用,就实现了将内核网卡抓的包,返回给用户层。
· 1.创建一个socket ; sock_fd = cooked ?socket(PF_PACKET, SOCK_DGRAM, protocol) :socket(PF_PACKET, SOCK_RAW, protocol);
· 2 设置bpf 规则,使得规则在内核返回给用户的包就已经经过bpf过滤。
· 3 recvfrom 接收抓到的数据包
而对于内核做了那些呢?
· 链路层网口抓的包,是如何给到对应的socket...
Libpcap, tcpdump阅读全文
2019-09-21 18:13
⁄ 工业·编程
⁄ 共 14069字
一 概述
用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 至于tcpdump参数如何使用,这不是本章讨论的重点。
liunx系统抓包工具,毫无疑问就是tcpdump。而windows的抓包工具,wireshark也是一款主流的抓包工具。wireshark 使用了winpcap库。tcpdump 基于 libpcap库。而winpcap库是类似于linux下的libpcap。 因此本文着重探讨libpcap库的原理。
二 libp...
Libpcap, tcpdump阅读全文
2018-05-12 22:27
⁄ 工业·编程
⁄ 共 3628字
基本功能就是来捕获所有流经本网卡的数据包。
实现流程:
查找网络设备
打开网络设备
查找设备信息
输入过滤规则
编译输入规则
设置输入规则
开始捕获数据包
调用数据包分析模块
输出MAC,IP,协议以及数据帧
结束
具体实现代码:
#include <stdio.h>
#include <pcap.h>
#include <time.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#include <string.h&g...
Libpcap阅读全文
2018-05-05 22:18
⁄ 工业·编程
⁄ 共 4930字
1.获取网络接口
char * pcap_lookupdev(char * errbuf) //上面这个函数返回第一个合适的网络接口的字符串指针,如果出错,则errbuf存放出错信息字符串,errbuf至少应该是PCAP_ERRBUF_SIZE个字节长度的
int pcap_lookupnet(const char * device, bpf_u_int32 * netp, bpf_u_int32 * maskp, char * errbuf) //可以获取指定设备的ip地址,子网掩码等信息 //netp:传出参数,指定网络接口的ip地址 ...
Libpcap阅读全文
2018-04-29 22:08
⁄ 工业·编程
⁄ 共 1578字
1.Libpcap简介
Libpcap是Packet Capture Libray的英文缩写,即数据包捕获函数库。该库提供的C函数接口用于捕捉经过指定网络接口的数据包,该接口应该是被设为混杂模式。这个在原始套接子中有提到。
著名的软件TCPDUMP就是在Libpcap的基础上开发而成的。Libpcap提供的接口函数实现和封装了与数据包截获有关的过程。
Libpcap提供了用户级别的网络数据包捕获接口,并充分考虑到应用程序的可移植性。Libpcap可以在绝大多数Linux...
Libpcap, 网络安全阅读全文