上述的OK按钮处理函数将弹出软件的关于(About)对话框,这样,在对话框的任意位置按下回车键,将弹出关于对话框,效果如下:
最后,因为程序包括了Winpcap相关.dll及其他.dll的引用,因此,我们应该在程序的适当地方进行如下声明:
#pragma comment(lib,"Packet.lib") #pragma comment(lib,"wpcap.lib") #pragma comment(lib,"Ws2_32.lib")
2、网络黑手终结者的实现
"网络黑手终结者"用于搜索局域网内处于混杂模式的网卡并将其列出,检测其是否正在使用的是"网络黑手"(对方可能使用其他工具使网卡处于混杂模式),如果是,我们可以通过"黑手状态"一列来终结对方正在使用的"网络黑手"。
检测局域网内处于混杂模式网卡的原理如下:
正常的ARP请求使用FF-FF-FF-FF-FF-FF这个MAC地址为目标,这个是一个正规的广播地址,网卡不管处于正常模式还是混杂,都会接收并传递给系统核心。但是,为了侦查混杂模式的网卡,我们以FF-FF-FF-FF-FF-FE为目标发送ARP请求。假设对方网卡处于混杂模式,它就会接受这个ARP请求并提交给系统核心。巧就巧在操作系统在检测MAC层广播地址时,不会检查所有的字节,即它可能认为FF-FF-XX-XX-XX-XX就等同于FF-FF-FF-FF-FF-FF,并给出ARP回复。所有的Windows操作系统都是如此。显然,最保险的是以FF-FF-FF-FF-FF- FE为目标发送ARP请求,处于混杂模式的网卡会接收该报文而正常的网卡则不会接收,混杂模式的网卡接收到ARP请求提交系统核心后,会发送ARP回复,凭此可以确定该节点一定处于混杂模式。ArpKiller软件也是基于上述原理展开的。
"网络黑手终结者"的界面如下:
创建界面中表格及获得网卡列表、对话框初始化的代码如下:
BOOL CNetHackerKillDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX &0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu *pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) {
共15页: 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] 13 [14] [15] 下一页
|