c语言实现 网络嗅探程序代码,一个简易网络嗅探器的实现源代码.doc
一个简易网络嗅探器的实现源代码
摘要:本文介绍一个用C语言和网络数据包分析开发工具实现的简易网络Sniffer。 要害词:网络;数据包;Sniffer 引言 目前,已经有不少的Sniff工具软件,如Windows环境下,最富盛名的工具是Netxray和Sniffer pro,用它们在 Windows环境下抓包来分析,非常方便。在UNIX环境下如Sniffit,Snoop,Tcpdump,Dsniff 等都是比较常见的。这里介绍一个用C语言和网络数据包和分析开发工具libpcap及winpcap实现的简易网络Sniffer。 网络嗅探器程序框图 首先给出流程如图1所示。
图1 流程图
网络嗅探器程序实现 在c环境下编程,源码如下:
/* June 2nd,2002* Project for graduation qualification By Bby Team 19 */#include <stdio.h>#include <conio.h> //必须加路径,必须把头文件packet32.h包含进去#include "..\..\Include\packet32.h"#include "..\..\Include\ntddndis.h"#define Max_Num_Adapter 10// Prototypes原形//发包void PrintPackets(LPPACKET lpPacket);//设备列表char AdapterList[Max_Num_Adapter][1024];// 主程序开始int main(){ //define a pointer to an ADAPTER strUCture设备指针 LPADAPTER lpAdapter = 0; //define a pointer to a PACKET structure包指针 LPPACKET lpPacket; int i; DWord dwErrorCode; DWORD dwVersion; DWORD dwWindowsMajorVersion; //Unicode strings (WinNT) WCHAR AdapterName[8192]; //网络适配器设备列表 WCHAR *temp,*temp1; //ASCII strings (Win9x) char AdapterNamea[8192]; //网络适配器设备列表 char *tempa,*temp1a; int AdapterNum=0,Open; ULONG AdapterLength; char buffer[256000]; // 容纳来自驱动器的数据的缓冲区 struct bpf_stat stat; // 获得本机网卡名 AdapterLength=4096; printf("Packet.dll test application. Library version:%s\n", PacketGetVersion()); printf("Adapters installed:\n"); i=0;
下面这段代码是用来在不同版本下得到网络适配器名: Win9x 和WinNT中的网卡名称是分别用ASCII和UNICODE实现的,所以首先要得到本地操作系统的版本号:
dwVersion=GetVersion();dwWindowsMajorVersion= (DWORD)(LOBYTE(LOWORD(dwVersion))); 这里首先用到的Packet.dll函数是PacketGetAdapterNames(PTSTR pStr,PULONG BufferSize,通常它是与驱动程序通信并被调用的第一个函数,它将返回的用户本地系统中安装的网络适配器的名字放在缓冲区pStr中;BufferSize是缓冲区的长度:
if (!(dwVersion >= 0&& dwWindowsMajorVersion >= 4)){ //是Windows NT // 找不到设备列表 if(PacketGetAdapterNames(AdapterName,&AdapterLength)==FALSE){ printf("Unable to retrieve the list of the adapters!\n"); return -1; } // 找到设备列表 temp=AdapterName; temp1=AdapterName; while ((*temp!='\0')(*(temp-1)!='\0')) {
c语言实现 网络嗅探程序代码,一个简易网络嗅探器的实现源代码.doc相关推荐
- libpcap编程-编写自己的网络嗅探程序
Programming with Libpcap --Sniffing the Network Author: Luis Martin Garcia =-=-=-=-=-=-=-=-=-=-=-=-= ...
- 访问samba服务器提示“无任何网络提供程序接受指定的网络路径”的一个解决办法
我刚开始的配置信息如下: [global] workgroup = WORKGROUP server string = %h server \(Samba, Ubuntu\) security = s ...
- 无任何网络提供程序接受指定的网络路径解决方法
无任何网络提供程序接受指定的网络路径解决方法 今天遇到一个问题在开始菜单中输入\\ip地址突然没法访问,后来百度和google一把,问题找到了,不知道什么原因把Microsoft网络客户端 协议没有被 ...
- 问题解决:“无任何网络提供程序接受指定的网络路径”的解决方法
今天碰到这个问题,打开 \\192.168.1.19 ,往常可以打开的共享,这会居然不行,提示: \\192.168.1.19\ 无任何网络提供程序接受指定的网络路径. 遂搜之,找到原因并且找到了解 ...
- “无任何网络提供程序接受指定的网络路径”的解决办法
症状: 1.可以正常上网,浏览网页,登陆msn等,但无法访问局域网,通过ip地址可以ping通局域网机器,但无法通过pcname ping通: 2."开始" "运行&qu ...
- “无任何网络提供程序接受指定的网络路径”问题的几个解决方法
服务器访问内网共享文件时,即在运行中输入\\192.168.1.11时提示"无任何网络提供程序接受指定的网络路径"在网上查了好多办法试了都没能解决. 因为考虑到之前的网络共享都可以 ...
- 无任何网络提供程序接受指定的网络路径的解决
无任何网络提供程序接受指定的网络路径 当使用//192.168.1.2的时候,总是提示"无任何网络提供程序接受指定的网络路径",经过检测,网络上大家说的我都做了,包括开启相关的服务 ...
- 打开局域网共享 提示无任何网络提供程序接受指定的网络路径
服务器访问内网共享文件时,即在运行中输入//192.168.1.11时提示"无任何网络提供程序接受指定的网络路径"在网上查了好多办法试了都没能解决.因为考虑到之前的网络共享都可以使 ...
- 无任何网络提供程序接受指定的网络路径”问题的几个解决方法
服务器访问内网共享文件时,即在运行中输入\\192.168.1.11时提示"无任何网络提供程序接受指定的网络路径"在网上查了好多办法试了都没能解决. 因为考虑到之前的网络共享都可以 ...
最新文章
- 修复错误ModuleNotFoundError: No module named ‘pip‘
- tablib把数据导出为Excel、JSON、CSV等格式的Py库(写入数据并导出exl)
- 一段echats 饼状图刷新代码
- css样式图片、渐变、相关小知识
- hfss螺旋平面_利用HFSS设计平面等角螺旋天线
- 使用C#控制远程计算机的服务[转]
- web前端开发最佳实践_Web开发人员和设计师的最佳黑色星期五优惠
- java.util.zip.ZipException:invalid distance distance too far back
- 再遇soundmix.dll,小试pe_xscan
- 编写递归算法,计算二叉树叶子结点的数目。
- 计算机系统的性能能被准确测量吗,信息技术 基于计算机的软件系统的性能测量与评级...
- PHP pdf转化为图片(PNG)
- svchost.exe占用网速多
- 解决cannot resolve symbol TextView
- STM32—串口通讯详解
- Excel:批量将某字符替换为“换行符”
- JAVA我的世界突然没声音_我的世界电脑版没声音怎么办
- ios友盟错误_iOS 2017友盟错误统计及分析
- 大学生创业之火如何再次燎原
- Android 实现京东秒杀功能详解