2013年4月16日 星期二

libpcap 學習中(1)

第一支pcap程式



#include <stdio.h>
#include <pcap.h>

int main(int argc,char *argv[])
{
  char *dev , errbuf[PCAP_ERRBUF_SIZE];
  dev = pcap_lookupdev(errbuf);
  if(dev == NULL)
  {
    fprintf(stderr,"Couldn't find default device : %s\n",errbuf);
    return(2);
  }
  printf("Device : %s\n",dev);
  return(0);
}


編譯
gcc -o main main.c  -lpcap

執行
 sudo ./main

結果:





第二支pcap程式



#include<stdio.h>
#include<pcap.h>

int main (int argc,char*argv[])
{
  void printer()
  {
    printf("A packet is captured!\n");
    return;
  }

  char errbuff[PCAP_ERRBUF_SIZE];
  pcap_t *pd = pcap_open_live("eth1",68,0,1000,errbuff);
  //定義封包抓取(裝置名稱,封包抓取最大位元數,設置網路卡混雜模式,錯誤訊息)

  pcap_loop(pd,7,printer,NULL);
  //(封包抓取類型,循環次數,抓取封包後調用函式,指標可為NULL)
  pcap_close(pd);

  return 0;

}


編譯
gcc -o second second.c  -lpcap

執行
 sudo ./second

結果: