实验目的
目前的局域网基本上都采用以广播为技术基础的以太网,任何两个节点之间的通信数据包,
不仅为这两个节点的网卡所接收,也同时为处在同一以太网上的任何一个节点的网卡所截
取。因此, 黑客只要接入以太网上的任一节点进行侦听, 就可以捕获发生在这个以太网上的
所有数据包,对其进行解包分析,从而窃取关键信息,这就是以太网所固有的安全隐患。网
上主要的免费黑客攻击工具如 SATAN 、ISS、NETCAT 等均将以太网侦听作为基本的手段。
本实验实现一个局域网截包程序, 目的在于使学生能更好地理解网络的工作机制 (包括封包
机制、协议分析等) ,该实验是对《计算机网络》课程一个有益的补充。
实验内容
在一个局域网环境中,用 C 语言实现下面的基本功能:
(1)确定截包的方法:包括 RAW 模式 SOCKET 、PACKET32 以及直接作为驱动程序挂在
NDIS 上
(2)要求截获以下包的类型并分析:以太网帧格式、 IP 包、 ICMP 包、 TCP 报文段、 UDP
报文等相关字段进行描述。
实验步骤和注意事项
实验按下述步骤进行:
(1) 熟悉 RAW 模式的 SOCKET 编程
(2) 熟悉 PACKET32 的工作机制
(3) 熟悉 WINDOWS 2000 环境下 NDIS 驱动程序的编写方法
(4) 编写基于上述某一机制的局域网截包的实现程序;
(5) 在模拟实现环境下调试并运行自己编写的协议实现程序;
(6) 如出现异常情况,在实验报告中记录并分析可能的原因
#define RCVALL_ON 1
#define MAX_ADDR_LEN 16 // 点分十进制地址的最大长度
#define MAX_PROTO_TEXT_LEN 16 // 子协议名称 (如"TCP") 最大长度
#define WINSOCK_VERSION MAKEWORD(2, 2)
#pragma comment(lib, "Ws2_32.lib")
#include <stdio.h>
#include <winsock2.h>
#include <mstcpip.h>
#include <conio.h>
typedef struct iphdr //定义 IP 首部
{
unsigned char h_lenver; //4 位首部长度 +4 位 IP 版本号
unsigned char tos; //8 位服务类型 TOS
unsigned short total_len; //16 位总长度(字节)
unsigned short ident; //16 位标识
unsigned short frag_and_flags; //3 位标志位
unsigned char ttl; //8 位生存时间 TTL
unsigned char proto; //8 位协议 (TCP, UDP 或其他 )
unsigned short checksum; //16 位 IP 首部校验和
unsigned int sourceIP; //32 位源 IP 地址
unsigned int destIP; //32 位目的 IP 地址
}IPHeader;
评论0
最新资源