简单的嗅探 收藏
由于本人很菜,这个代码是改别人的.呵呵.可以在公司的局域网里搞搞坏,呵呵.
我是在ubuntu8.04下的,需要gcc编译.
#include <string.h>
#include <ctype.h>
#include <stdio.h>
#include <netdb.h>
#include <sys/file.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <sys/signal.h>
#include <net/if.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <netinet/if_ether.h>
#define BUFFER_MAX 2048
int open_fd(int fd) {
int s;
struct ifreq ifr;
/*接口名*/
strcpy(ifr.ifr_name, "eth0");
/*获取接口标志*/
if ((s = ioctl(fd, SIOCGIFFLAGS, &ifr)) < 0) {
close(fd);
return (-1);
}
/*设置接口为混杂模式*/
ifr.ifru_flags |= 0x100; // 关闭 ifr.ifr_flags &= ~IFF_PROMISC;
/*设置接口标志*/
if ((s = ioctl(fd, SIOCSIFFLAGS, &ifr)) < 0) {
return (-1);
}
printf("Setting interface ::: %s ::: to promisc\n\n", intf);
return (fd);
}
int main(int argc, char *argv[]) {
int sock, readnum, proto;
char buffer[BUFFER_MAX];
char *ethhead, *iphead, *tcphead, *udphead, *icmphead, *p;
sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP));
while (1) {
readnum = recvfrom(sock, buffer, 2048, 0, NULL, NULL);
/*
14 6(dest)+6(source)+2(type or length)
+
20 ip header
+
8 icmp,tcp or udp header
= 42
MAC: 00:1D:7D:45:1C:09==>00:19:5B:74:27:3B
IP: 192.168.0.182 => 192.168.0.23
Protocol: TCP,source port: 1637,dest port: 22
*/
if(readnum < 42) {
fprintf(stdout, "Incomplete header, packet corrupt\n");
continue;
}
ethhead = buffer;
p = ethhead;
printf("--------------------------------------------------------------------\n");
printf("MAC: %.2X:%02X:%02X:%02X:%02X:%02X==>%.2X:%.2X:%.2X:%.2X:%.2X:%.2X\n",
p[6]&0XFF, p[7]&0XFF, p[8]&0XFF, p[9]&0XFF, p[10]&0XFF, p[11]&0XFF,
p[0]&0XFF, p[1]&0XFF, p[2]&0XFF,p[3]&0XFF, p[4]&0XFF, p[5]&0XFF);
iphead = ethhead + 14;
p = iphead + 12;
printf("IP: %d.%d.%d.%d => %d.%d.%d.%d\n",
p[0]&0XFF, p[1]&0XFF, p[2]&0XFF, p[3]&0XFF,
p[4]&0XFF, p[5]&0XFF, p[6]&0XFF, p[7]&0XFF);
proto = (iphead + 9)[0];
p = iphead + 20;
printf("Protocol: ");
switch(proto) {
case IPPROTO_ICMP:
printf("ICMP\n");
break;
case IPPROTO_IGMP:
printf("IGMP\n");
break;
case IPPROTO_IPIP:
printf("IPIP\n");
break;
case IPPROTO_TCP :
case IPPROTO_UDP :
printf("%s,", proto == IPPROTO_TCP ? "TCP": "UDP");
printf("source port: %u,",(p[0]<<8)&0XFF00 | p[1]&0XFF);
printf("dest port: %u\n", (p[2]<<8)&0XFF00 | p[3]&0XFF);
break;
case IPPROTO_RAW :
printf("RAW\n");
break;
default:
printf("Unkown, please query in include/linux/in.h\n");
}
}
}
分享到:
相关推荐
c#写的简单嗅探器,查找出当前本机IP,然后侦听所有端口,并带有解析结果的处理。适合于刚开始学习Socket的童鞋~
一个简单嗅探软件的实现 C++源码。。。。。。。。。
vc 实现的嗅探器 mfc界面程序 可以解析常见格式的IP数据
基于C#实现的简单网络嗅探器源码,可以抓到本机上满足指定IP地址的数据包,分析源,目的IP地址,源,目的端口,基础协议类型以及16进制包数据,对于学习C#和TCP/IP很有帮助。
由VC++实现的简单的网络包捕抓并分析,供初学者学习
基于MFC的嗅探器 采用了skinmagic进行了界面优化
给予winpcap实现的简单的网络嗅探器,对协议包进行分析,并利用snmp实现简单的网络拓扑功能
用c++基于winPcap开发的嗅探器,用mfc做了一个简单的界面
一个简单的FLV嗅探和下载的例子,Http分析的一些展示
简单的网络嗅探器
简单网络嗅探器的设计 要求:设计并实现程序,捕获网络上的相关数据包,并分析这些数据包应用的协议、网络地址、端口号、数据包长度、协议头部信息等内容。 用命令行执行,显示相关结果并将数据写入日志文件。如运行...
嗅探器在Windows上使用Scapy和PyQt5的简单嗅探器。(可选)通过鼠标时简要介绍有效信息。 去做 入门只需下载所有文件并运行main.py 先决条件Windows 10 Python 3.6 修改的scapy3k用于多处理目的。 只需从这里直接...
简单的网络嗅探器及源码,时时的抓包;简单的网络嗅探器及源码,时时的抓包
一个简单的嗅探器含源码,支持UDP,TCP,ICMP,IGMP过滤选择抓包;一个简单的嗅探器含源码,支持UDP,TCP,ICMP,IGMP过滤选择抓包;
esp8266-简单嗅探器
捕获网络上的相关数据包,并分析这些数据包应用的协议、网络地址、端口号、数据包长度、协议头部信息等内容
嗅探器简单实验
简单的网络嗅探器 Linux 下的socket 编程的实践 libnet libcap 的应用 附简单的项目文档
该软件不仅能找出隐藏在网页中的媒体文件的网络地址,还能让影视软件上的流媒体地址无处遁形,并且该软件还能找出众多其他资源文件的网络地址,操作方法也非常简单。此软件可用于本地网络安全、网页、电影地址嗅探...
基于控制台的网络嗅探程序,x和t在十六进制和文本格式间切换数据显示方式,p暂停。完整源代码。