一个简易网络嗅探器的实现源代码

摘要:本文介绍一个用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相关推荐

  1. libpcap编程-编写自己的网络嗅探程序

    Programming with Libpcap --Sniffing the Network Author: Luis Martin Garcia =-=-=-=-=-=-=-=-=-=-=-=-= ...

  2. 访问samba服务器提示“无任何网络提供程序接受指定的网络路径”的一个解决办法

    我刚开始的配置信息如下: [global] workgroup = WORKGROUP server string = %h server \(Samba, Ubuntu\) security = s ...

  3. 无任何网络提供程序接受指定的网络路径解决方法

    无任何网络提供程序接受指定的网络路径解决方法 今天遇到一个问题在开始菜单中输入\\ip地址突然没法访问,后来百度和google一把,问题找到了,不知道什么原因把Microsoft网络客户端 协议没有被 ...

  4. 问题解决:“无任何网络提供程序接受指定的网络路径”的解决方法

    今天碰到这个问题,打开 \\192.168.1.19 ,往常可以打开的共享,这会居然不行,提示: \\192.168.1.19\  无任何网络提供程序接受指定的网络路径. 遂搜之,找到原因并且找到了解 ...

  5. “无任何网络提供程序接受指定的网络路径”的解决办法

    症状: 1.可以正常上网,浏览网页,登陆msn等,但无法访问局域网,通过ip地址可以ping通局域网机器,但无法通过pcname ping通: 2."开始" "运行&qu ...

  6. “无任何网络提供程序接受指定的网络路径”问题的几个解决方法

    服务器访问内网共享文件时,即在运行中输入\\192.168.1.11时提示"无任何网络提供程序接受指定的网络路径"在网上查了好多办法试了都没能解决. 因为考虑到之前的网络共享都可以 ...

  7. 无任何网络提供程序接受指定的网络路径的解决

    无任何网络提供程序接受指定的网络路径 当使用//192.168.1.2的时候,总是提示"无任何网络提供程序接受指定的网络路径",经过检测,网络上大家说的我都做了,包括开启相关的服务 ...

  8. 打开局域网共享 提示无任何网络提供程序接受指定的网络路径

    服务器访问内网共享文件时,即在运行中输入//192.168.1.11时提示"无任何网络提供程序接受指定的网络路径"在网上查了好多办法试了都没能解决.因为考虑到之前的网络共享都可以使 ...

  9. 无任何网络提供程序接受指定的网络路径”问题的几个解决方法

    服务器访问内网共享文件时,即在运行中输入\\192.168.1.11时提示"无任何网络提供程序接受指定的网络路径"在网上查了好多办法试了都没能解决. 因为考虑到之前的网络共享都可以 ...

最新文章

  1. 修复错误ModuleNotFoundError: No module named ‘pip‘
  2. tablib把数据导出为Excel、JSON、CSV等格式的Py库(写入数据并导出exl)
  3. 一段echats 饼状图刷新代码
  4. css样式图片、渐变、相关小知识
  5. hfss螺旋平面_利用HFSS设计平面等角螺旋天线
  6. 使用C#控制远程计算机的服务[转]
  7. web前端开发最佳实践_Web开发人员和设计师的最佳黑色星期五优惠
  8. java.util.zip.ZipException:invalid distance distance too far back
  9. 再遇soundmix.dll,小试pe_xscan
  10. 编写递归算法,计算二叉树叶子结点的数目。
  11. 计算机系统的性能能被准确测量吗,信息技术 基于计算机的软件系统的性能测量与评级...
  12. PHP pdf转化为图片(PNG)
  13. svchost.exe占用网速多
  14. 解决cannot resolve symbol TextView
  15. STM32—串口通讯详解
  16. Excel:批量将某字符替换为“换行符”
  17. JAVA我的世界突然没声音_我的世界电脑版没声音怎么办
  18. ios友盟错误_iOS 2017友盟错误统计及分析
  19. 大学生创业之火如何再次燎原
  20. Android 实现京东秒杀功能详解

热门文章

  1. 大数据开发笔记(五):Zookeeper
  2. 大数据平台基本功能有哪些
  3. 什么是大数据平台和大数据
  4. python与Labview进行数据通信(UDP)
  5. lisp将图元追加选择_AutoLISP入门7 - 图元资料的取得与活用技巧(二)
  6. 相机内参_5张动图速学相机模型和内参
  7. C语言把输入值放入数组,//从键盘上输入若干整数,并将其存入数组中,并统计输入数据的个...
  8. Python数值特征转换
  9. SparkSql性能测试案例
  10. OpenCV之滑动条的创建和使用