内容发布更新时间 : 2025/1/4 1:43:36星期一 下面是文章的全部内容请认真阅读。
信息安全专业 程序实践四
网络安全与网络管理
实践报告
软件学院
实验成绩表
2010年版
1. 实践目的
(1) 掌握sniffer程序原理; (2) 学习Wincap编程
(3) 能够使用Wincap实现数据包的捕获 (4) 设计和实现一个sniffer程序
(5) 掌握ARP欺骗原理,并能够实施ARP欺骗
2. 实践内容
(1)使用Winpcap实现数据包的捕获:;
(2)分析数据包:处理捕获的数据包,解析出其协议类型、源MAC地址、目的MAC地址、源IP地址、目的IP地址、源端口、目的端口和数据部分,然后将这些信息保存在文件中。最终根据文件内容统计以下协议的数据流量:网络层:IP,ICMP;传输层:TCP,UDP。 (3)将捕获的信息存放在数据库中,根据捕获的信息进行流量统计;
(4)ARP欺骗:截获网络上的数据包,对其进行分析,获取源和目的地址,用该数据包的目的IP地址来伪装自己的IP地址,并按照ARP报文格式,对该数据包的发送者发送ARP欺骗包,并验收ARP欺骗成功。
(5)界面化:利用MFC构建图形界面,便于用户操作。
3. 实践过程
1. Sniffer网络嗅探器
使用MFC构建图形界面,工程基于对话框模式建立。工程共有两个对话框,分别
为主对话框IDD_WINCAPA_DLG,其类名为CWincapaDlg,以及新建的对话框IDD_DIALOG,其类名为CAdapaterSelDlg,其作用是在进入主对话框之前选择网卡设备。
类CAdapaterSelDlg:
如截图显示,对话框内使用了Combo Box控件,并在ClassWizard里定义了CComboBox的变量m_selAdapter,在类CAdapaterSelDlg中定义了一个public的变量int m_selIndex。在ClassWizard中添加三个成员函数:
virtual void OnOK();//把选中的设备的序号赋值到m_selIndex中 virtual BOOL OnInitDialog();//初始化对话框,把已经查找出来的网络设备显示在下
拉列表中
virtual void OnCancel();//弹出对话框,并退出程序
获取本地网卡列表所使用的函数以及代码在实验指导书中都有,这里就不过多介绍了。 主对话框:
主对话框中使用了check box控件,list control控件,以及五个button控件。
在ClassWizard里定义变量:list control控件变量CListCtrl m_list,BOOL型的check box变量m_arpFilter; m_icmpFilter; m_ipFilter; m_tcpFilter; m_udpFilter。
在WincapaDlg.cpp中定义结构体:
struct ETHDR{//以太网头部
u_char eh_dst[6]; u_char eh_src[6];
u_short eh_type;//IP?ARP? };
typedef struct ip_header{/* IPv4 header */
u_char ver_ihl; // Version (4 bits) + Internet header length (4 bits) u_char tos; // Type of service
u_short tlen; // Total length u_short identification; // Identification
u_short flags_fo; // Flags (3 bits) + Fragment offset (13 bits) u_char ttl; // Time to live
u_char proto; // Protocol
u_short crc; // Header checksum u_int saddr; // Source address u_int daddr; // Destination address u_int op_pad; // Option + Padding }ip_header;
struct TCPPacketHead {/* TCP header*/
2