linux网络包截获,用C实现截获网络数据包

现在进入第二步,捕获数据包。从第20行开始,我们进入了一个死循环,while(1),在第24行,recvfrom(sock, buffer, sizeof buffer, 0, (struct sockaddr *)&from, &fromlen),这个函数要做的就是接收数据,冰把接收到的数据放入buffer中。就是这么简单,已经完成了我们要捕获数据包的任务。

到了第三步,分析数据包。27行,ip = (struct ip *)buffer,使我们在头文件中的IP结构对应于所接收到的数据,接下来判断在网络层中是否使用的是TCP协议,if(ip-> ip_protocol == 6) ,如果答案是,tcp信息包从整个IP/TCP包 buffer + (4*ip-> ip_length) 地址处开始,所以31行 tcp = (struct tcp *)(buffer + (4*ip-> ip_length)),然后对应结构把你所需要的信息输出。

/*************************headers.h**************************/

/*structure of an ip header*/

struct ip {

unsigned int ip_length:4; /*little-endian*/

unsigned int ip_version:4;

unsigned char ip_tos;

unsigned short ip_total_length;

unsigned short ip_id;

unsigned short ip_flags;

unsigned char ip_ttl;

unsigned char ip_protocol;

unsigned short ip_cksum;

unsigned int ip_source; unsigned int ip_dest;

};

/* Structure of a TCP header */

struct tcp {

unsigned short tcp_source_port;

unsigned short tcp_dest_port;

unsigned int tcp_seqno;

unsigned int tcp_ackno;

unsigned int tcp_res1:4, /*little-endian*/

tcp_hlen:4,

tcp_fin:1,

tcp_syn:1,

tcp_rst:1,

tcp_psh:1,

tcp_ack:1,

tcp_urg:1,

tcp_res2:2;

unsigned short tcp_winsize;

unsigned short tcp_cksum;

unsigned short tcp_urgent;

};

/*********************EOF***********************************/

另外一个例子:

#include

#include

#include

#include

#include

#include

#include

int main(int argc, char **argv)

{

int sock, n;

char buffer[2048];

unsigned char *iphead, *ethhead;

if ( (sock=socket(PF_PACKET, SOCK_RAW,htons(ETH_P_IP))) <0)

{

perror( "socket ");

exit(1);

}

while (1) {

printf( "----------\n ");

n = recvfrom(sock,buffer,2048,0,NULL,NULL);

printf( "%d bytes read\n ",n);

/* Check to see if the packet contains at least

* complete Ethernet (14), IP (20) and TCP/UDP

* (8) headers.

*/

if (n <42) {

perror( "recvfrom(): ");

printf( "Incomplete packet (errno is %d)\n ",

errno);

close(sock);

exit(0);

}

ethhead = buffer;

printf( "Source MAC address: "

"%02x:%02x:%02x:%02x:%02x:%02x\n ",

ethhead[0],ethhead[1],ethhead[2],

ethhead[3],ethhead[4],ethhead[5]);

printf( "Destination MAC address: "

"%02x:%02x:%02x:%02x:%02x:%02x\n ",

ethhead[6],ethhead[7],ethhead[8],

ethhead[9],ethhead[10],ethhead[11]);

iphead = buffer+14; /* Skip 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,Dest ports %d,%d\n ",

(iphead[20] < <8)+iphead[21],

(iphead[22] < <8)+iphead[23]);

printf( "Layer-4 protocol %d\n ",iphead[9]);

}

}0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487769.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动驾驶的实现之路——几大关键传感器应用解析

来源&#xff1a;MEMS随着近两年来智慧汽车、车联网等等概念的兴起&#xff0c;汽车自动驾驶的各种科技进展不断占据媒体版面&#xff0c;引起了全球的关注和各国政府的支持。对于大部分人来说&#xff0c; “吃着火锅唱着歌”轻轻松松地直达目的地绝对是美好的愿望&#xff0c…

探索“植物人”语言能力和意识水平

来源&#xff1a;脑科学与智能技术卓越创新中心2020年5月25日&#xff0c;中国科学院脑科学与智能技术卓越创新中心&#xff08;神经科学研究所&#xff09;、中国科学院灵长类神经生物学重点实验室王立平研究组与复旦大学附属华山医院神经外科毛颖/吴雪海团队在《自然-神经科学…

探臻实录 | 戴琼海:搭建脑科学与人工智能的桥梁

来源&#xff1a;探臻科技评论人工智能作为21世纪最具有影响力的技术&#xff0c;正在包括诸如机器人、语言识别、图像识别、自然语言处理等诸多领域发挥着重要作用。脑科学被誉为“人类科学最后的前沿”&#xff0c;认识脑的奥秘是对人类的终极挑战。而更重要的是&#xff0c;…

linux下的单机工具,Linux下单机模式的Hadoop部署

需要软件&#xff1a;ssh&#xff1a;fedore 9 自带。jdk&#xff1a;http://java.sun.com/javase/downloads/index.jsp&#xff0c;下最近版本jdk-6u18-linux-i586Hadoop&#xff1a;http://apache.etoak.com/hadoop/core/hadoop-0.20.1/&#xff0c;最新版本0.20.1&#xff0…

全球顶尖计算机科学家排名,中科大上榜人数全国第一

来源&#xff1a;今日头条一年一度的全球顶尖计算机科学家TOP1000榜单出炉&#xff0c;这份由Guide2Research发布的计算机科学家排名中&#xff0c;中国科学技术大学以16人入选力压清华、北大、浙大等计算机科学强校&#xff0c;高居全国第一&#xff01;中科大张亚勤等13位本科…

CentOS6实现路由器功能

网络之间的通信主要是依靠路由器&#xff0c;当然生成环境中是拥有路由器的&#xff0c;但是系统中的路由配置也是需要了解一下地&#xff0c;今天讲解一下在CentOS6环境下搭建路由器&#xff0c;此乃入门级的简单实验。拓扑如上图已经规划好&#xff0c;暂且使用静态路由演示。…

在近期,美众议院为何密集提出了15项新兴技术法案?

来源&#xff1a;资本实验室近期&#xff0c;美国众议院能源和商业委员会及消费者保护与商业小组委员会密集提出了15项与新兴技术相关的法案议程。这些法案开宗明义&#xff0c;建立了明确的目标&#xff1a;确保美国在新兴技术领域的领导地位&#xff0c;以在全球竞争力方面战…

求助马斯克实现载人飞行,NASA省了近300亿美元

出品 | 网易科技《知否》栏目组当美国宇航局&#xff08;NASA&#xff09;的宇航员于当地时间5月27日搭乘SpaceX的载人龙飞船升空时&#xff0c;他们将不仅仅是进入太空&#xff0c;还将开启一个可能具有变革意义的新时代&#xff0c;因为此前没有任何私人公司将人类送入轨道。…

linux基础操作与实践,Linux操作系统基础与实践

《21世纪高等院校计算机网络工程专业规划教材:Linux操作系统基础与实践》由清华大学出版社出版。19.18定价&#xff1a;29.50(6.51折)/2014-06-01《Linux劋作系统基础与实践/21世纪高等院校计算机网络工程专业规划教材》内容共分10章&#xff0c;第1章主要讲解劋作系统概述、劋…

MIT机器学习种菜项目永久关停

来源&#xff1a;IEEE电气电子工程师Photo: Harry Goldstein麻省理工学院媒体实验室的开放农业计划&#xff08;Open Agriculture Initiative&#xff09;&#xff0c;由首席科学家Caleb Harper领导&#xff0c;于2020年4月30日被该大学永久关闭。媒体关系总监Kimberly Allen在…

万字总结,知识蒸馏如何在推荐系统中大显身手?

来源&#xff1a;AI科技评论作者 | 张俊杰编辑 | 丛 末本文首发于知乎 https://zhuanlan.zhihu.com/p/143155437随着深度学习的快速发展&#xff0c;优秀的模型层出不穷&#xff0c;比如图像领域的ResNet、自然语言处理领域的Bert&#xff0c;这些革命性的新技术使得应用效果快…

【模板】快速幂取模

快速幂取模的模板&#xff0c;要注意所有变量都要开成long long类型的防溢出&#xff1a; #include<cstdio> #include<algorithm> #include<cstring> typedef long long LL; const LL mod1e97; using namespace std; LL a,b; LL mi(LL x,LL y) {LL res1;whil…

linux vim debugger,Vim 调试:termdebug 入门

简介termdebug 是从 Vim 8.1 开始内置的调试插件&#xff0c;仅支持 GDB。本教程仅在 Linux 下(Ubuntu 16.04)测试通过。安装将 Vim 升级至 8.1 或以上版本。GDB 需升级至 7.12 或以上版本。启动默认情况下需手动加载 termdebug 插件&#xff1a;:packadd termdebug假设我们有一…

时空大数据可视化表达分析,看MapGIS七大“超能力”

文章转载自微信公众号中地数码MapGIS&#xff0c;版权归原作者及刊载媒体所有。伴随着人们探索空间的过程&#xff0c;信息的获取范围也从局部地面、全球地表、地球各个圈层扩展到地球内外的整个空间&#xff0c;从原有的二维平面空间基准逐步演变到三维空间基准&#xff0c;进…

深扒ASML 的玩法,对工控企业生态圈的思考

来源&#xff1a;中国传动网自从美国的新一轮技术封锁发生后&#xff0c;普天之下的吃瓜群众为华为操碎了心&#xff0c;甚至卖菜的大妈偶尔讨论这件事。由此可见&#xff0c;半导体对国家科技、工业的影响有多大。半导体制造产业中&#xff0c;光刻机是核心设备&#xff0c;对…

2019-2020年人工智能产业发展深度报告

来源&#xff1a;华泰证券人工智能市场格局人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是利用机器学习和数据分析方法赋予机器模拟、延 申和拓展类人的智能的能力&#xff0c;本质上是对人类思维过程的模拟。AI 概念最早始于 1956 年 的达特茅斯会…

c语言求字符串复制函数,快速上手系列-C语言之字符串处理函数(一)

C语言中常用的字符串操作函数&#xff0c;有比如计算字符串长度、字符串拷贝&#xff0c;字符串比较等这样的整体操作函数&#xff0c;有字符串查询函数&#xff0c;也有字符串转换函数等等&#xff0c;这里先介绍字符串整体操作函数。字符串整体操作函数实际编程中&#xff0c…

宇宙的第一推动力,必然存在吗?

《创造世界与逐出乐园》&#xff08;The Creation of the World and the Expulsion from Paradise&#xff09;&#xff0c;乔万尼迪保罗&#xff08;Giovanni di Paolo&#xff09;&#xff0c;1445年&#xff0c;© 公共领域文/StillJustJames译/苦山校对/光明左使原文/m…

良好编程习惯的养成

在开发中&#xff0c;一个良好的编程习惯对这个团队也是一种带动作用&#xff0c;今天在网上看到了一坨这样的代码和屎&#xff0c;他恶心了&#xff01;再次强调 一定要注意代码的缩进和格式化&#xff01;&#xff01;切记&#xff01;切记&#xff01;&#xff01; 一定 不可…

科技部:学术不端零容忍!违规人员所获职称、奖金等全部清退归零

文章 | 募格学术来源 | 科技部、科奖中心、新京报国务院新闻办公室2020年5月19日下午举行新闻发布会&#xff0c;介绍加快建设创新型国家、支撑引领高质量发展有关情况。科技界的学风和作风一直都是各方高度关注的问题&#xff0c;科技部是如何加强科技界的作风和学风建设的&am…