sniffer嗅探

源代码:
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <linux/in.h>
#include <linux/if_ether.h>
#include <net/if.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
int sock, n;
char buffer[2048];
unsigned char *iphead, ethhead;
struct ifreq ethreq;
int no=0;
//设置原始套接字方式为接受所有的数据包
if ( (sock=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP)))<0) {
perror("\n原始套接字建立失败\n");
exit(1);
}
//设置网卡工作方式为混杂模式,SIOCGIFFLAGS请求表示需要获取接口标志
strncpy(ethreq.ifr_name,“ens33”,IFNAMSIZ);
if (ioctl(sock,SIOCGIFFLAGS,&ethreq)-1) {
perror("\n设置混杂工作模式失败\n");
close(sock);
exit(1);
}
//开始捕获数据并进行简单分析
while (1) {
n = recvfrom(sock,buffer,2048,0,NULL,NULL);
no++;
printf("\n\n ******************************\n\n");
//检查包是否包含了至少完整的以太帧(14),IP(20)和TCP/UDP(8)包头
if (n<42) {
perror(“recvfrom():”);
exit(0);
}
ethhead = buffer;
printf(“Dest MAC address:%02x:%02x:%02x:%02x:%02x:%02x\n”,
ethhead[0],ethhead[1],ethhead[2],ethhead[3],ethhead[4],ethhead[5]);
printf(“Source MAC address:%02x:%02x:%02x:%02x:%02x:%02x\n”,
ethhead[6],ethhead[7],ethhead[8],ethhead[9],ethhead[10],ethhead[11]);
iphead = buffer+14; /*跳过Ethernet header */
if (*iphead
0x45) {
/
Double check for IPv4 and no options present */
printf(“Source host: %d.%d.%d.%d\n”,
iphead[12],iphead[13],iphead[14],iphead[15]);
printf(“Dest host: %d.%d.%d.%d\n”,
iphead[16],iphead[17],iphead[18],iphead[19]);
printf(“Source port:%d,Dest port:%d\n”,
(iphead[20]<<8)+iphead[21],(iphead[22]<<8)+iphead[23]);//端口号为int:左移八位
if(iphead[9]==6)
printf(“protocol TCP\n”);
else if(iphead[9]==17)
printf(“protocol UDP\n”);
else
printf(“Not TCP or UDP,protocol id %d\n”,iphead[9]);
}
}
}
运行结果如图:

(1)输入ifconfig:查看本机配置

输入route -n:查看网关IP

(2)Ping网关(192.168.18.2):

运行程序抓包分析:

由上图可知,源MAC地址:00:50:56:f6:0a:ff;目的MAC地址:00:0c:29:97:aa:01;
源IP:192.168.18.2;目的IP:192.168.18.129;
源端口号:0;目的端口号是动态变化的;
可知ping命令发送的包既不是TCP也不是UDP,但是其协议id为1.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很好用的一款中文网络分析软件 一些朋友问这款软件的用途,这里我简单说明一下: sniffer是一款网络监视和嗅探软件,他可以实时监视和分析你的网络上流经的各种数据,通过抓包,你可以看到网络上的数据流(二进制),并由此分析出数据来源,数据目的,对应的传输层端口,上层服务,等等.使用这款软件要求使用者对网络尤其是osi模型比较熟悉. ########################### Sniffer 的网络分析器可以运行于桌面、便携式和笔记本PC,使用了400多种协议解释和强大的专家分析功能,可以对网络传输进行分析,找出故障和响应缓慢的原因。它甚至可以对多拓扑、多协议网络进行分析---所有这些功能都可以自动地实时实现。 Sniffers(嗅探器)几乎和internet有一样久的历史了.他们是最早的一个允许系统管理员分析网络和查明哪里有错误发生的工具.不幸的是,crackers也会运行Sniffers以暗中监视你的网络状况和窃走不同种类的数据.这篇文章讲讨论什嘛是Sniffers,一些比较普遍的Sniffers和如何保护自己不受损失.也讨论一种叫antisniff(防监听)的工具, 它可以自动运行并发现运行在你网络中的Sniffers. 那么什么是Sniffer 在单选性网络中, 以太网结构广播至网路上所有的机器, 但是只有预定接受信息包的那台计算机才会响应. 不过网路上其他的计算机同样会"看到“这个信息包,但是如果他们不是预定的接受者,他们会排除这个信息包. 当一台计算机上运行着sniffer的时候并且网络处于监听所有信息交通的状态, 那么这台计算机就有能力浏览所有的在网络上通过的信息包. 如果你是个internet历史方面的白痴并且在想sniffer这个词从何而来.sniffer是最初是网络的产物.然后成为市场销售的领先者,人们开始称所有的网络分析器为"Sniffers”.我猜测这些人是和管棉签叫q-tip的人一样的. Sniffer便携式分析软件包 实时网络分析 如果要迅速检测和解决网络故障和性能问题,我们的便携式Sniffer将是全球网络工程师的第一选择。它的专家分析功能可以找出网络、数据库和应用程序故障的根本原因。 Sniffer 的网络分析器可以运行于桌面、便携式和笔记本PC,使用了400多种协议解释和强大的专家分析功能,可以对网络传输进行分析,找出故障和响应缓慢的原因。它甚至可以对多拓扑、多协议网络进行分析---所有这些功能都可以自动地实时实现。 部门网采用Sniffer Basic,可以使用Sniffer的监控和解释分析功能。低成本的实时监控和解释功能使得Sniffer Basic成为MIS人员的理想选择,他们可以对小型企业、远程旃液筒棵磐兄С帧M保琒niffer Basic为一线的IS 人员提供了一个可以进行常规故障解决的强大工具。 Sniffer Pro LAN和Sniffer Pro WAN 它们适用于有完整的专家分析和Sniffer先进的协议解释功能要求的网络。Sniffer Pro 对LAN和WAN 网段上的网络传输的所有层进行监测,揭示性能问题,分析反常情况,并推荐解决方案---所有这些功能都可以自动地实时实现。 Sniffer Pro High-Speed 它是用于优化最新的ATM及千兆位以太网性能和其可靠性的工具,Sniffer 独一无二的SmartCapture功能提供了对LAN仿真数据流和IP交换环境的监测。 支持ATM 它在企业网络中,针对每个ATM OC-3和OC-12高速链路,为您提供了一个单独的解决方案。 支持Gigabit它是以全双工速度捕获,解决千兆位协同性问题的唯一的分析器。其强大的处理功能可以提供对千兆位以太网的非对称监测。 Sniffer 分布式分析软件包 集成的专家分析和RMON监控软件包 分布式Sniffer 解决方案对应用程序传输和网络设备状态进行全天候分析,可以使应用程序保持最高的运行效率。其中包括对部门网、校园网和主干网的集中监控、设备级别报告和故障解决。 分布式Sniffer系统 从一个单独的管理控制台启动自动RMON-适应网段监控和故障识别。Sniffer专家分析软件可以使您以最快的速度解决故障---即使有复杂的网络拓扑、协议和应用程序。   企业故障和网络性能管理解决方案--Distributed Sniffer System/RMON 可以对整个网络中的主要网段(LAN、WAN、ATM和千兆位以太网)提供网络监控、协议解释和专家分析功能。基于标准的监控和专家分析的强有力的结合使之成为多拓扑结构和多协议网络的最优管理工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值