局域网嗅探程序

在LINUX系统环境下通过Raw Socket编程,设计实现局域网嗅探程序。

程序实例部分核心代码:

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <linux/in.h>
#include <unistd.h>
#include <linux/if_ether.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,”eth0”,IFNAMSIZ);//Interface Name size
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************%d packet %d bytes ************\n”,no,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,”,
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”,
(iphead[20]<<8)+ iphead[21],( iphead[22]<<8)+ iphead[23]);
if(iphead[9]==6) printf(“TCP\n”);
else if(iphead[9]==17) printf(“UDP\n”);
else printf(“protocol id:%d\n”, iphead[9]);
}
}
}
时间: 2024-10-24 18:36:00

局域网嗅探程序的相关文章

用L脚本语言开发一个简单的局域网聊天程序

#scp #这是一个简单的局域网聊天程序的例子 定义:字符串,string1 定义:字符串,string2 #addr1是对方的地址 #addr2是自己的地址 #如果addr1和addr2相同,就是自己和自己聊天 定义:地址,addr1,127.0.0.1,27015 定义:地址,addr2,127.0.0.1,27015 定义:整数,字节数,0 #在自己的UDP端口上监听 定义:网络连接,conn2,UDP 监听:conn2,addr2 #连接对方的UDP端口 定义:网络连接,conn1,UD

局域网嗅探原理及工具

嗅探只能发生在局域网,局域网内通信是通过MAC地址寻址的,通过IP寻址在发生在局域网间的. ARP协议,在计算机A中会发送ARP广播来寻找通讯对象计算机B的MAC地址,如果有个计算机C,冒充双方的IP,并且把自己的MAC发送给A 和 C,就可以实现数据包转发,继而实现嗅探或监听.这就是局域网嗅探的原理. ARP -a 可查看ARP表,ARP表中静态表比动态表优先级高,可通过ARP -s ip mac绑定静态表. 原理图

【Python】iichats —— 命令行下的局域网聊天程序

转载请声明出处:http://www.cnblogs.com/kevince/p/3941728.html   ——By Kevince ii系列工具第三弹,命令行下的局域网聊天程序 原理: 程序启动时向全网(255.255.255.255)BACKPORT端口广播自己的主机名以及状态(上线). 如果接受收到的上线状态,则将其加入通信列表,同时返还一个数据包,使自己也将对面加入其通信列表. 程序退出时向全网广播自己的下线状态,如果收到该下线状态则将其从自己的通信列表中删除 为了防止在输入过程中被

kali 局域网嗅探

1.局域网图片嗅探 工具  arpspoof arpspoof -i eth0 -t 192.1681.10(网卡 目标地址) 192.168.1.1 局域网网关,如果在Windows中可以使用局域网扫描工具  Advanced ip Scanner linux中 扫描局域网在线的主机 fping -asg 192.168.1.0/24                      欺骗的同时不能是对方断网,使用流量转发  echo 1 >/proc/sys/net/ipv4/ip_forward

C# 异步通信 网络聊天程序开发 局域网聊天室开发

Prepare 本文将使用一个NuGet公开的组件技术来实现一个局域网聊天程序,利用组件提供的高性能异步网络机制实现,免去了手动编写底层的困扰,易于二次开发,扩展自己的功能. 在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台输入下面的指令安装: Install-Package HslCommunication NuGet安装教程  http://www.cnblogs.com/dathlin/p/7705014.html 技术支持QQ群:592132

嗅探、中间人sql注入、反编译--例说桌面软件安全性问题

嗅探.中间人sql注入.反编译--例说桌面软件安全性问题 今天这篇文章不准备讲太多理论,讲我最近遇到的一个案例.从技术上讲,这个例子没什么高深的,还有一点狗屎运的成分,但是它又足够典型,典型到我可以讲出很多大道理用来装逼.So,我们开始吧. 1.1 一个公司内部专用的CRM系统 CRM系统是什么,如果你不知道的话,请自行Google.从数据的角度讲,它包含了一个公司所有往来客户的机密资料,如果泄露的话,后果很严重.下面是我无意中发现的一个网站,挂着一个CRM软件的下载链接.开始的时候我以为这个是

linux下的socket通信小程序分享

最近学习unix网络编程,感觉东西零零碎碎,比较混乱.因此决定整理以下,发一个小博客.一来可以与大家分享以下,二来可以总结提高一下所学的东西.话说:竹子为什么长的高,因为它喜欢总结阿--^_^ 废话不多说了,上代码.小弟半路出家,入行不深,过路大神不喜勿喷阿,嘿嘿--^_^ 程序是一个基于tcp的 C/S .简单回显功能( 声明以下,不要以为注释是英语就说我是在哪里下载的,原因是我运行程序 汉字老显示乱码,就改成蹩脚英语了 ). 首先是一个自己的库 1 #ifndef MYLIB_H 2 #de

局域网通信

标 题: 局域网通信作 者: itdef链 接: http://www.cnblogs.com/itdef/p/3989918.html 欢迎转帖 请保持文本完整并注明出处 最近没些什么 看了看JAVA 语言以及使用其语言的设计模式介绍  都是学习基本的东西  没什么好写的 还是写下最近写的C版本的小代码 模仿IPMSG 写了个简单版本的局域网通信程序 准备将来用于局域网客户端性能监控中 其实就是使用UDP 进行通讯 开启程序便UDP广播本机ID上线信息 关闭程序之前则广播本地下线 同时固定时间

10款程序员必备的免费开源安全工具

开源最前线(ID:OpenSourceTop) 猿妹整编 原文链接 信息安全工程师.网络安全产品以及相关的技术和流程都需要耗费企业大量的成本,对于大部分企业来说, 往往会缩减这一部分的支出,因此许多开发人员都会首选免费的开源安全工具. 事实上,无论是学习,试验,还是在生产基础上进行部署,安全专业人员长期以来都将开源软件视为其工具包的重要组成部分. 本文我们将盘点10个你应该知道的IT安全工具包: 1.Nessus 对于几代IT安全专业人士来说,意识到网络的脆弱性始于Tenable的Nessus.