博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原始套接字简单应用
阅读量:6271 次
发布时间:2019-06-22

本文共 1850 字,大约阅读时间需要 6 分钟。

/***************SimpelSniffer.c*************/ //auther:duanjigang@2006s //add by wenhao #include 
#include
#include
#include
#include
#include
#include
#include
#include
#define BUFFER_MAX 2048 int main(int argc, char *argv[]) { int sock, n_read, proto; char buffer[BUFFER_MAX]; //char *ethhead, *iphead, *tcphead, // *udphead, *icmphead, *p; char *ethhead,*iphead,*p; //创建原始套接字 if( (sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP))) < 0) { fprintf(stdout, "create socket error\n"); exit(-1); } while(1) { //将接收到的数据都存放在buffer中,接收到字节大小n_read //这里接收到的数据应该是数据链路层的数据 n_read = 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 */ //如果小于42表示我们的数据有问题,重新接收 if(n_read < 42) { fprintf(stdout, "Incomplete header, packet corrupt\n"); continue; } ethhead = buffer; p = ethhead; int n = 0XFF; printf("MAC: %.2X:%02X:%02X:%02X:%02X:%02X==>" "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X\n", p[6]&n, p[7]&n, p[8]&n, p[9]&n, p[10]&n, p[11]&n, p[0]&n, p[1]&n, p[2]&n,p[3]&n, p[4]&n, p[5]&n); 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 /netinet/in.h\n"); } } }

转载地址:http://oplpa.baihongyu.com/

你可能感兴趣的文章
Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
查看>>
Mac OS 10.10.3下Apache + mod_wsgi配置【一】
查看>>
Hibernate基于注解的双向one-to-many映射关系的实现
查看>>
算法竞赛入门经典 例题 3-2 蛇形填数
查看>>
remove-duplicates-from-sorted-list I&II——去除链表中重复项
查看>>
c++ 网络库
查看>>
Linux 格式化扩展分区(Extended)
查看>>
linux echo命令
查看>>
nginx 内置变量大全(转)
查看>>
lakala反欺诈建模实际应用代码GBDT监督学习
查看>>
java 解析excel工具类
查看>>
Google FireBase - fcm 推送 (Cloud Messaging)
查看>>
BBS论坛(二十七)
查看>>
html DOM 的继承关系
查看>>
装饰器的邪门歪道
查看>>
Dubbo常用配置解析
查看>>
【转】C#解析Json Newtonsoft.Json
查看>>
macports的安装及常用命令
查看>>
(转)使用C#开发ActiveX控件
查看>>
spring mvc 基于注解 配置默认 handlermapping
查看>>