问题标签 [libnet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
118 浏览

config - 在 Debian 中编译 honeyd 时出错

我正在尝试安装蜂蜜。配置成功,但$ make给了我这些错误。

我已经添加/etc/ld.config.so到了/usr/local/lib,我已经尝试了所有方法,但错误仍然存​​在。

0 投票
0 回答
74 浏览

c - 套接字接收数据包错误

我编写了一个简单的原始套接字,它应该接收使用 libnet 编写和组装的单个 ipv4 数据包。这是 libnet 数据包的代码,它工作得很好(我认为,没有办法检查发送的实际有效负载):

该程序有效,因为使用 tcpdump 时数据包出现在网络中。现在原始套接字的程序:

现在,套接字设法接收字节,因为打印出的字节值显示了一个数字,也是第一个程序作为数据包大小给出的确切数字(原始 ipv4 标头 + 有效负载 = 40 字节 + 有效负载大小)。只有收到的消息本身似乎存在某种错误,因为无论我在数据包中发送什么,消息的 %s 输出始终是“E”。十六进制输出因数据包而异,但它不会匹配我给定有效负载的十六进制版本(当我以十六进制从数据包程序中打印出有效负载时),而且它肯定没有任何相关值。现在我还想,也许 ipv4 标头也作为消息接收,所以我写了一个版本,它只读取消息缓冲区的 40+ 字节,但结果(“E”和随机十六进制)是相同的。

我究竟做错了什么?可能是错误的recv函数吗?或者我需要对我的消息缓冲区进行一点类型转换吗?或者它甚至可能是我的数据包发送程序中的错误?

0 投票
1 回答
2205 浏览

c - libnet.h 没有这样的文件或目录

所以,我正在尝试使用命令“gcc -o file file.c”编译我的 C 代码,但我得到“错误:libnet.h:没有这样的文件或目录”我包含了 libnet.h (#include) 和我还安装了 libnet。我正在运行 CentOS 7。

0 投票
1 回答
436 浏览

c - 函数返回类型是无符号的,而它返回 -1 表示错误

我已经使用 libnet 一段时间了,我注意到有一些函数的返回值是uint32_t,据我了解,它是无符号类型。但是,在文档中,它说如果发生错误(这是有符号类型)返回 -1 libnet_get_ipaddr4libnet_get_prand例如,请参见。

但是,我可以毫无问题地使用这些功能:

if ((src_ip_addr = libnet_get_ipaddr4(l)) == -1) { /* treat the failure*/ }

我想比较发生在 -1 解释为 unsigned int 与返回值之间,返回值取相同的值;比较是真的。

尽管这显然有效,但我的问题是:这有意义吗?为什么?作为程序员,我应该如何检查返回值以了解是否发生错误?上面显示的代码片段是否正确?

0 投票
1 回答
176 浏览

linux - 如何在安装过程中向 Nemesis 提供 Libnet 标头?

我正在尝试在 Fedora 31 上安装 Nemesis,但它会引发以下错误。
在安装过程中如何提供 Libnet 标头?

检查 arpa/inet.h 可用性... 是
检查 arpa/inet.h 存在... 是
检查 arpa/inet.h... 是
检查 netinet/in.h 可用性... 是
检查 netinet/in.h存在...是
检查 netinet/in.h...是
检查 libnet.h 可用性...不
检查 libnet.h 存在...不
检查 libnet.h...否

错误!找不到 Libnet 标头,从
http://www.packetfactory.net/projects/libnet/
获取它 或使用 --with-libnet-* 选项,如果您将它安装
在不寻常的地方

0 投票
1 回答
135 浏览

c - 使用 libnet 发送的 Rst 数据包不会重置连接

我正在尝试通过使用包含 libcap 和 libnet 的 ac 脚本来进行“第一次劫持”。我使用 libcap 来嗅探所有来自和去往主机的数据包,这些数据包通过命令行作为程序的输入提供。然后 libnet 将第一个数据包发送到尝试连接到指定主机的主机。但是,当我运行脚本并通过 ssh 连接到给定主机时,我可以在不重置连接的情况下执行此操作。我使用的是 Kali Linux 2019.4 64 位版本。这是代码:

当我像这样运行它时,我:

同时通过 ssh 连接到 19.168.74.37 输出告诉我它正在重置连接,但我仍然可以像往常一样在 ssh 连接中使用终端。现在我的问题是是什么导致了这个程序的行为以及如何修复它以正确重置连接?这是运行的输出:

0 投票
0 回答
81 浏览

sh - /bin/sh: 0 在安装 libnet-1.0.2a 期间无法打开 ./configure

我已经下载了 libnet-1.0.2a.tar.gz并尝试按照以下步骤安装它。

libnet-1.0.2a.tar.gz 的位置:

现在解压缩并更改目录:

接下来的命令用于配置和安装:

但在这里我收到了这个错误信息:

/bin/sh:0 无法打开 ./configure

接下来我能做什么?请告诉我安装 libnet-1.0.2a.tar.gz 的正确路径。

0 投票
1 回答
270 浏览

c - 取消引用指向不完整类型'struct tcphdr'的指针?

我正在尝试从 Ubuntu 18.04 上的 NetworkSecurityTools 书中编译“示例 11-9。SYNplescan 工具的源代码”:http: //books.gigatux.nl/mirror/networksecuritytools/0596007949/networkst-CHP-11-SECT -4.html

但它说

我该如何解决?

0 投票
0 回答
68 浏览

c - 与 libnet C 的 TCP 连接

对于一个任务,我必须创建一个 tcp 劫持攻击,我必须采取的第一步是将 TCP 数据包发送到服务器以获取带有序列号的响应。服务器响应 rlogin 请求,我在 tcp 上使用 nping 进行了测试,以从成功的服务器获得响应,但是如果我尝试使用自己创建的 tcp 数据包,我没有得到任何响应。

在图像中,您可以看到我的数据包和 nping 创建的数据包,我没有从我自己的数据包中得到任何响应,但我从 nping 创建的数据包中得到任何响应。我觉得这很奇怪,因为据我所知,数据包应该是相同的。

我不知道如何找到这个问题的原因。

在此处输入图像描述

0 投票
1 回答
33 浏览

c - 使用 libpcap 和 libnet 解码 ICMPv4 数据包

我的程序从无线接口捕获数据包,我可以使用类似于 hexdump -C 的函数查看所有人类可读的字节。一方面,我无法破解 BPF 字符串的正确语法,因此所有发往我机器的数据包都在没有过滤的情况下涌入 - 除了我没有使用混杂模式。假设我确实有 BPF 字符串,因为它只会使事情变得更加复杂。

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

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

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

如果这是真的,那么数据包很可能是 ICMP Echo Reply。ICMP_ECHO_REPLY 等于零,并且很多数据包包含空字节,因此不能保证。尽管如此,这应该让我更容易识别 ICMP Echo Replies。我发现序列号通常超过 10,000,即使对于与我在 Wireshark 中观察到的大小相似的数据包也是如此。

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

  • ip proto icmp 和 icmp[icmptype] = icmp-echoreply
  • ip 原型 ICMP ...
  • ip 原型 \icmp ...
  • ip 原型 \ICMP ...