pcap_next虽然也是通过网口获取数据包,但是只要抓取了一个就会返回,假如想持续不停抓包,当然可以while(1)里持续进行,但是显然有些难看

while(1){
    const u_char* pktStr = pcap_next(p, &pkthdr);
    if (!pktStr){
  &nbsp[……]

Read more

假如本地已经通过抓包工具保存了pcap格式的数据包文件,通过libpcap的库也能简单地进行离线分析

pcap_t *
pcap_open_offline(const char *fname, char *errbuf)

函数打开保存的数据包文件,用于读取,返回文件描述符

fname参数指定了pcap文件名

errbuf依旧是函数出错的时候返回错误信息

这样直接分析离线数据包文件,然后通过pcap_[……]

Read more

下面就开始抓包了

在前面获取了网口之后(或者不需要或者直接设定),需要打开:

pcap_t *
pcap_open_live(const char *source, int snaplen, int promisc, int to_ms, char *errbuf)

这个函数打开设备,然后返回一个pcap_t类型的指针,实际上就是获得用来捕获网络数据包的描述符

source是pcap_lookupd[……]

Read more

pcap_t *pcap_open_live(char *device, int snaplen,int promisc, int to_ms, char *ebuf)

获得用于捕获网络数据包的数据包捕获描述字。device参数为指定打开的网络设备名。snaplen参数定义捕获数据的最大字节数。promisc指定是否将网络接口置于混杂模式。to_ms参数指定超时时间(毫秒)。ebuf参数则仅在pc[……]

Read more