Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用libpcap和libnet解码ICMPv4包

用libpcap和libnet解码ICMPv4包
EN

Stack Overflow用户
提问于 2022-01-12 12:56:52
回答 1查看 64关注 0票数 1

我的程序从无线接口捕获数据包,我可以使用类似于十六进制-C的函数查看所有人类可读的字节。首先,我无法破解BPF字符串的正确语法,因此所有发送到我的机器的数据包都在不过滤的情况下涌入--只是我没有使用杂乱模式。让我们假设我有BPF字符串,因为它只会使事情进一步复杂化。

因为我只想要ICMP回显回复,所以我并行运行Wireshark和我的程序。我通过检查回环接口上的Wireshark中的数据包来验证ICMP回送请求和答复是否有效。但是,程序转储头字段,这些字段不能是ICMP回送答复,并且与Wireshark中看到的有效数据包不匹配。

编辑:我应该注意到,pcap_hdl正在监听所有设备;包括用于测试的回送接口。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pcap_t *pcap_hdl;
struct pcap_pkthdr cap_info;
const u_char *reply_pkt;
struct libnet_icmpv4_hdr *icmp_hd;
...
...
...

reply_pkt = pcap_next(pcap_hdl, &cap_info);
if(reply_pkt == NULL)
        printf("skipped - no response.\n");
else {
        icmp_hd = (struct libnet_icmpv4_hdr *) (reply_pkt + LIBNET_IPV4_H);
        dump((const unsigned char *) reply_pkt, cap_info.caplen);
        printf("%d bytes; icmp_seq=%d\n", cap_info.caplen, icmp_hd->icmp_seq);
}

当我发送ICMP Echo请求时,我定义了序列号。它从1开始,并且一个ICMP回波响应共享相同的序列,它是下一个ICMP回声请求增加。但是,即使没有BPF字符串,我也可以通过执行以下有用的检查来最小化输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(icmp_hd->icmp_type == ICMP_ECHO_REPLY)

如果这是真的,则很有可能数据包是ICMP Echo回复。一个ICMP_ECHO_REPLY等于零,很多数据包都包含空字节,所以不能保证。尽管如此,这将使我能够更容易地识别ICMP Echo答复。我发现,序列号通常超过10,000,甚至对于与我在Wireshark中观察到的数据包大小相似的数据包也是如此。

另外,我尝试过的BPF字符串是:

icmp-echoreply

  • ip

  • ip proto icmp和ICMP = proto ICMP.
  • ip proto \icmp .
  • ip proto \ICMP \ICMP.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-13 07:01:59

过滤器icmp[icmptype] == icmp-echoreply应该完成这项工作,至少它与tcpdump一起工作,所以它也应该与libpcap一起工作。使用以下命令sudo tcpdump -i any "icmp[icmptype] == icmp-echoreply"测试它。不需要指定IP协议应该是ICMP,而是在对icmptype进行过滤时隐式检查。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70688317

复制
相关文章
数据包发送与嗅探
实验过程中采用过libnet与libpcap,最后全部转为Raw Socket发送与嗅探。
公众号guangcity
2019/09/20
2.6K0
数据包发送与嗅探
分析RTP码流卡顿问题的工具
在基于RTP的实时码流传输过程中,经常会遇到音视频卡顿、花屏的现象。对于这类问题,如何定位? 下面这个工具可以帮助分析类似问题:
coderhuo
2020/01/20
4.8K0
分析RTP码流卡顿问题的工具
linux ettercap,CentOS下安装ettercap
http://ettercap.sourceforge.net/download.php
全栈程序员站长
2022/09/14
1.2K0
linux ettercap,CentOS下安装ettercap
LAMP Linux路由和Libpcap配置
1、Ubuntu安装:sda会覆盖MBR,选择这个,sda1会导致找不到系统 2、配置路由 在/etc/rc.local 开机时候自动加载 sudo iptables -F  //清除所有规则 sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -t nat POSTROUTING -o eth1 -j MASQUERADE 具体内容忘记了 eth1 为 wan口网卡
星哥玩云
2022/06/30
4.2K0
libpcap试玩
libpcap驱动了tcpdump,和wireshark这类抓包工具.提供了高度灵活的包过滤语言. 据wikipedia,高性能的包过滤最早是在bsd上作为一个问题被解决,被称为bpf,在内核实现了一个解释器,进行包匹配,用户态提供一个字符设备, linux作为后来者,支持与bsd基本相同的packet filter,称为lpf,不同的是,linux是通过在一个raw socket来支持包过滤的,通过setsockopt来SO_ATTACH_FILTER,挂载过滤器. strace 可知,libpcap实际上进行了如下syscall:
byronhe
2021/06/25
7180
Nemesis:一款功能强大的网络数据包制作与数据注入工具
Nemesis是一款功能强大的网络数据包制作与数据注入工具,该工具旨在为类UNIX和Windows系统提供一个基于命令行的可移植人工IP堆栈。该套件按协议划分,并允许广大研究人员根据自己的需求制作目标网络数据包,或通过简单的Shell脚本向目标数据包中注入其他数据。
FB客服
2023/08/08
4350
Nemesis:一款功能强大的网络数据包制作与数据注入工具
arp欺骗攻击原理_arp攻击的原理及防范
以上显示了接口172.20.10.4对应的局域网内所有主机IP地址,其中,172.20.10.11作为攻击主机,172.20.10.12作为被攻击主机。
全栈程序员站长
2022/11/10
4.6K0
arp欺骗攻击原理_arp攻击的原理及防范
黑客入侵 linux 系统常用手段,有你不知道的没?
下面开始欺骗,由于是服务器端,因此我们欺骗网关:(网络环境如下,邮件服务器ip:192.168.0.11 网关:192.168.0.1 本机:192.168.0.77)
民工哥
2020/09/16
6390
谷歌Fabricius用机器学习解码古埃及象形文,包学不包会
关注的人都知道,谷歌“Arts & Culture”总会发布些有趣的应用来增强人们与艺术和历史间的互动,很有意义。比如在2018年,就推出了个能让用户通过自拍,找出与自己长相相近艺术品人物的功能。最近,还放出了可模仿梵高或达芬奇等大师风格的滤镜。
大数据文摘
2020/08/10
1.2K0
谷歌Fabricius用机器学习解码古埃及象形文,包学不包会
想要如何入侵linux服务器?这几个命令够用了
写个php一句话后门上去: [jobcruit@wa64-054 rankup_log]$ echo -e "<?php @eval(\$_POST[md5])?>" >rankuplog_time.
用户6543014
2019/10/25
1K0
黑客常用linux入侵常用命令,有你不知道的没?
写个php一句话后门上去: [jobcruit@wa64-054 rankup_log]$ echo -e "<?php @eval(\$_POST[md5])?>" >rankuplog_time.
马哥linux运维
2019/05/14
5960
黑客常用linux入侵常用命令,有你不知道的没?
写个php一句话后门上去: [jobcruit@wa64-054 rankup_log]$ echo -e "<?php @eval(\$_POST[md5])?>" >rankuplog_time
小小科
2018/11/08
7060
SendPkt快速入门[Python]
SendPkt快速入门 作者: gashero 电邮: harry.python@gmail.com 原文地址: http://gashero.yeax.com/?p=26 项目主页: http://
py3study
2020/01/07
9140
如何入侵linux服务器?这几个命令够用了
写个php一句话后门上去: [jobcruit@wa64-054 rankup_log]$ echo -e "<?php @eval(\$_POST[md5])?>" >rankuplog_time.
马哥linux运维
2019/02/28
3.1K0
黑客常用linux入侵常用命令,有你不知道的没?
写个php一句话后门上去: [jobcruit@wa64-054 rankup_log]$ echo -e "<?php @eval(\$_POST[md5])?>" >rankuplog_time.
小小科
2018/09/28
1.3K0
​用机器学习和神经科学解码大脑信号
人脑是一个非常了不起的器官,它大约三磅重,却能控制着我们身体的所有功能。它处理我们所有的思想,它是人类智力、创造力、情感和记忆的神经生物学基础。我们的大脑分为几个部分,每个部分都有一个主要的功能。
脑机接口社区
2020/07/20
6400
Libpcap PACKET_MMAP内存分配
libpcap为了提高效率,调用setsockopt(handle->fd, SOL_PACKET, PACKET_RX_RING,(void *) &req, sizeof(req))时采用kmalloc分配内存。 可以参考: https://www.kernel.org/doc/Documentation/networking/packet_mmap.txt kmalloc底层依赖linux的slab内存分配机制,在2.6.22内核之后,slub取代slab成为默认的内存分配器。空间和时间上都有所提升。
happy123.me
2018/06/04
1.4K0
用docker部署jar包_war包和jar包部署区别
对于springboot项目运行,直接是 java -jar 的方式运行,如果想要放到docker中运行,有三种方式:
全栈程序员站长
2022/11/02
2.2K0
Linux 手动安装Ettercap
或者去官网下载:https://www.ettercap-project.org/downloads.html
风骨散人Chiam
2022/04/13
2.1K0
Linux 手动安装Ettercap
Netty 粘包 & 拆包 & 编码 & 解码 & 序列化
Netty 作为一个网络框架,对 TCP 连接中的问题都做了全面的考虑,比如粘包拆包导致的半包问题,如何编解码,如何实现私有协议,序列化等等。
用户5224393
2019/08/13
8730

相似问题

有没有libpcap和libnet的例子?

12

是否可以用libnet写入数据包,由libpcap读取?在c区?

25

用libpcap检测重传数据包

13

用libpcap读取数据包数据

20

libpcap包大小

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文