利用原始套接字抓取数据

为了满足项目需求,通过原始套接字在Ubuntu系统中实现了链路层的数据抓取,以完成网络登录认证功能的分析。参考了两篇相关文章,顺利完成了任务,现将此信息整理保存,方便后续查阅。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目需求,需要从链路层抓包,分析实现网络登录认证功能,现在网上找到两个不错的抓包程序,参考此文章,顺利完成任务,现将此文章收藏与此,便参考,同时感谢文章版主,谢谢!

 

一:抓包分析:http://blog.youkuaiyun.com/aaa6695798/archive/2009/03/20/4008322.aspx

 

二:原始套接字抓包分析

 

原始套接字的创建

方法1: socket(PF_INET,SOCK_RAW,IPPROTO_TCP|IPPROTO_UDP)
采用这样的方法创建的套接字,是在IP层接收的数据
数据的数据结构格式为:

第三个参数协议若是指定,那么该套接字只能接受符合指定协议的数据包:IPPROTO_TCP接收采用tcp传输的数据包,IPPROTO_UDP接受采用udp传输的数据包,这一项决定了接受到的数据包中的IP数据包头struct iphdr中的protocol值,为IPPROTO_TCP或者IPPROTO_UDP.

struct iphdr+struct tcphdr+数据//若struct iphdr中的protocol值为IPPROTO_TCP
struct iphdr+struct udphdr+数据//若struct iphdr中的protocol值为IPPROTO_UDP
采用这样的方法接收到的数据都是发往本机的数据,不能接受从本机发出去的数据,要抓取发送出去的数据,需要采用以下的方法

而且,我们抓取的数据只是数据的拷贝,不会说阻碍数据的传送,把数据给拦截了

方法2:socket(PF_PACKET,SOCK_RAW, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ARP|ETH|RARP))
      socket(PF_PACKET,SOCK_DGRAM, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ARP|ETH|RARP))
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值