Libpcap tutorial-01

   <李>

下载<强> libpcap从www.tcpdump.org 来源   李这里

<李>

下载<强> libpcap为win32 fromwww.winpcap.org

<李>

查看更好pcap教程   李在这里

<人力资源/>

<强>前页:,这是一个稍微修改和扩展的版本   我的老pcap教程。,重新审视这项工作五年之后,我是   一定比(年龄和啤酒)希望更   知识渊博的。,联系方式已经改变,请寄给你的   到来的恐吓信,casado cs.stanford.edu。

<人力资源/>

<强>内容

<李>

介绍(你已经在这里)

<李>

捕捉我们的第一个包

<李>

写一个基本的数据包捕获引擎

<李>

.....分析数据包(进展)

<人力资源/>

<强>这是谁:强,本教程假设一个粗略的   知识网络;什么是包,以太网与IP vs。   TCP和UDP等。如果这些概念是外国我强烈建议   你投资一个<强> 好(例如,可能找不到百思买)   网络方面的书。,我最喜欢的是:

<李>

计算机网络:自顶向下方法以互联网   (第3版)詹姆斯·f·Kurose基斯·w·罗斯

<李>

UNIX网络编程由w·理查德·史蒂文斯

<李>

的协议(TCP/IP了,卷1)由w·理查德·史蒂文斯

本教程不承担任何先前的知识网络   编程,基本熟悉c。,如果你已经是一个   c/c++的主人,那么你不妨就<强>男人3 pcap 强。,你应该   有一个c编译器在您的系统上和libpcap安装工作。,所有   源在本节是在linux上,编写和测试的内核2.2.14,   虽然它应该大多便携式(呵呵)我不能保证它会   编译或在其他操作系统上运行。你要想要运行   作为根所以要小心,不要打破你的盒子。   哦,虽然我已经测试和运行本文提供的代码   教程,没有问题,我不是如果你的屎优惠和负责   必须由卫生部门隔离……即在你自己的   风险....,



hcn # gcc ldev。c -lpcap

/*, ldev.c ,,
  ,才能编译指令
  ,才能在gcc  ldev.c  -lpcap
  
  ,,查询网卡,,展示与该网卡相关的网络地址和子网掩码
  */# include  & lt; stdio.h>
  # include  & lt; stdlib.h>
  # include  & lt; pcap.h>,,,,,,/*, GIMME  a  libpcap 请! */# include  & lt; errno.h>
  # include  & lt; sys/socket.h>
  # include  & lt; netinet/in.h>
  # include  & lt; arpa/inet.h>
  
  命令行参数个数,int 主要(int  char  * * argv)
  {
  char 才能;* dev,/*,网卡名称,*/,
  char 才能;*净,/*,用点标识的网络地址,*/char 才能;*面具;/*,用点标识的子网掩码,*/int 才能;回收;,,,/*,返回标识,*/,,
  char 才能errbuf [PCAP_ERRBUF_SIZE];,,,,/*,错误信息,*/bpf_u_int32 才能;netp;,,,,,/*,网络地址,,,,,,,,,*/bpf_u_int32 才能;maskp;,,,,/*,子网掩码,*/,,
  struct 才能;in_addr  addr;/*,才能通过pcap去发现一个可用的网卡用于嗅探,*/时间=dev 才能;pcap_lookupdev (errbuf);/*,才能检测是否找到可用网卡,*/如果才能(dev ==, NULL)
  {才能
  ,,printf (" % s \ n " errbuf);
  ,,退出(1);
  ,,}/*,才能打印网卡名称,*/,,printf (" DEV: % s \ n”, DEV);/*,才能通过pcap查询网卡的网络地址和子网掩码*/ret 才能=,pcap_lookupnet (dev,, netp,, maskp, errbuf);/*,才能检测上不操作是否成功,*/如果才能(ret ==, 1)
  {才能
  ,,printf (" % s \ n " errbuf);
  ,,退出(1);
  ,,}/*,才能将网络地址从网络格式转化为人可读格式*/时间=addr.s_addr 才能;netp;
  时间=net 才能;inet_ntoa (addr);/*,才能检测转化是否成功,*/如果才能(net ==, NULL)
  {才能
  ,,,perror (“inet_ntoa”);
  ,,,退出(1);
  ,,}/*,才能打印网络地址*/,,printf("净:% s \ n ",净);/*,才能将子网掩码地址从网络格式转为人可读格式*/时间=addr.s_addr 才能;maskp;
  时间=mask 才能;inet_ntoa (addr);
  ,,
  如果才能(mask ==, NULL)
  {才能
  ,,,perror (“inet_ntoa”);
  ,,,退出(1);
  ,,}
  ,,/*,才能打印子网掩码*/,,printf("面具:% s \ n”,面具);
  
  return 才能;0;
  null
  null
  null
  null
  null
  null
  null
  null
  null

Libpcap tutorial-01