• 大小: 603KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-27
  • 语言: 其他
  • 标签: sniffer  linux  

资源简介

简单的网络嗅探器 Linux 下的socket 编程的实践 libnet libcap 的应用 附简单的项目文档

资源截图

代码片段和文件信息

/*
 * arp.c
 *
 *  Created on: 2009-7-7
 *      Author: lele
 *
 *      处理ARP请求
 *      Hardware type  Protocol type
Hardware address length  Protocol address length  Opcode
Source hardware address :::
Source protocol address :::
Destination hardware address :::
Destination protocol address :::
Data :::
 *
 */

#include “sniffer.h“

void handle_arp (const u_char* packet)
{
//ARP 头
struct nast_arp_hdr *arp;
struct libnet_ethernet_hdr *eptr;
u_short ether_type;

eptr = (struct libnet_ethernet_hdr *) packet;
arp = (struct nast_arp_hdr *) (packet+offset);
ether_type = ntohs(eptr->ether_type);
if (ether_type == ETHERTYPE_ARP)
{
fprintf(logfile “\n---[ ARP ]-----------------------------------------------------------\n“);
fprintf(logfile “%s -> “ nast_hex_ntoa (eptr->ether_shost));
fprintf(logfile “%s\n“ nast_hex_ntoa (eptr->ether_dhost));

switch (ntohs(arp->ar_op))
  {
   case 1:
       {
  fprintf(logfile “类型: ARP 请求: “);
  fprintf(logfile “Who has %d.%d.%d.%d? “arp->__ar_tip[0]arp->__ar_tip[1]arp->__ar_tip[2]arp->__ar_tip[3]);
  fprintf(logfile “Tell %d.%d.%d.%d\n“arp->__ar_sip[0]arp->__ar_sip[1]arp->__ar_sip[2]arp->__ar_sip[3]);
       }
     break;
   case 2:
       {
  fprintf(logfile “类型: ARP 应答: “);
  fprintf(logfile “%d.%d.%d.%d is at %s\n“arp->__ar_sip[0]arp->__ar_sip[1]arp->__ar_sip[2]arp->__ar_sip[3] nast_hex_ntoa (eptr->ether_shost));
       }
     break;
   case 8:
     fprintf(logfile “类型: InARP 请求“);
     break;
   case 9:
     fprintf(logfile “类型: InARP 应答\t“);
     break;
   default:
     fprintf(logfile “类型: 未知操作符“);
     break;
  }

fprintf(logfile “硬件大小: %d - “ arp->ar_hln);
fprintf(logfile “协议大小: %d\n“ arp->ar_pln);

}
 else  if (eptr->ether_type == ETHERTYPE_REVARP)
 {
fprintf(logfile “\n---[ RARP ]----------------------------------------------------------\n“);
fprintf(logfile “%s -> “  nast_hex_ntoa (eptr->ether_shost));
fprintf(logfile “%s\n“ nast_hex_ntoa (eptr->ether_dhost));
switch (ntohs(arp->ar_op))
  {
   case 3:
     fprintf(logfile “类型: RARP 请求“);
     break;
   case 4:
     fprintf(logfile “类型: RARP 应答\t“);
     break;
   case 8:
     fprintf(logfile “类型: InARP 请求“);
     break;
   case 9:
     fprintf(logfile “类型: InARP 应答\t“);
     break;
   default:
     fprintf(logfile “类型: 未知操作符“);
     break;

  }

fprintf(logfile “\t硬件大小: %d - “arp->ar_hln);
fprintf(logfile “协议大小: %d\n“arp->ar_pln);

 }

}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     615705  2009-10-04 17:03  项目报告1.pdf

     文件       2680  2009-07-08 13:42  src\arp.c

     文件       2462  2009-07-08 13:42  src\common.c

     文件        800  2009-07-08 13:24  src\device.c

     文件        918  2009-07-07 21:15  src\ethernet.c

     文件       4977  2009-07-08 15:05  src\find_gateway.c

     文件       7581  2009-07-08 13:02  src\icmp.c

     文件       1965  2009-07-07 22:16  src\igmp.c

     文件       3730  2009-07-08 15:06  src\main.c

     文件        112  2009-07-08 20:43  src\makefile

     文件       7828  2009-07-08 13:17  src\port.c

     文件      38158  2009-07-08 22:38  src\sniffer

     文件       4052  2009-07-08 12:56  src\sniffer.c

     文件       2611  2009-07-08 14:28  src\sniffer.h

     文件       3776  2009-07-07 22:20  src\tcp.c

     文件       1834  2009-07-07 22:22  src\udp.c

     目录          0  2009-08-09 14:35  src

----------- ---------  ---------- -----  ----

               699189                    17


评论

共有 条评论