问题标签 [packet-injection]

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 投票
1 回答
2240 浏览

tcp - tcp 数据包注入 - ?

我在主机 192.168.1.13 上有 TCP 客户端,从静态 ip 176.132.74.74 读取数据...我需要将精心制作的数据包注入此连接以测试我的防火墙是否可以过滤掉欺骗性流量。我从主机 192.168.1.15 尝试了“nemesis”1.4beta3: nemesis tcp -v -D 192.168.1.13 -S 176.132.74.74 -fS -fA 但出现错误:“无法分配套接字描述符” TCP 紧急指针: 0 我在使用 nemesis 时犯了一些错误,或者我只能从同一主机(192.168.1.13)使用它?是否有其他类似的工具可以用于此目的?我很感激一些建议:我在使用 nemesis 时找不到太多建议

0 投票
1 回答
3988 浏览

c++ - 用于数据包注入的 Libnet 与原始套接字

我需要更有经验的网络程序员关于 GNU/Linux 系统上的数据包注入的一些意见/建议。我正在开发一个用于数据包注入和嗅探的开源 C++ 库。该库是libcrafter。在页面上有一些示例可以查看该库的工作原理。

我有一个两难境地,并会感谢你的想法。目前,库“提供”两种在线写入数据包的方法。首先,构造数据包:

1) 然后使用 Send() 函数发送:

2)或使用 RawSocketSend() 函数(这是我用于基准测试但可供用户使用的“实验性”函数):

其中 sd 是套接字描述符。如果数据包具有链路层协议(如以太网),则 sd 应该是 PACKET 套接字描述符。如果不是,则应该是 RAW 套接字描述符。

发送数据包的标准和记录方法是使用 Send() 方法。目前,Send() 方法使用libnet将数据包写入网络。

问题是 Send() 函数比 RawSocketSend() 慢得多......我经常不得不做很多棘手和烦人的事情来调整 libcrafter 处理协议字段的方式以正确使用 libnet_build*函数(这会导致性能损失)。每次我实现一个协议时,我都必须查看 libnet 文档,这使得开发过程变得非常乏味和缓慢。所以,我想停止使用 libnet 进行数据包注入,并在 Send() 函数中直接使用 RAW/PACKET 套接字。

Libcrafter 旨在以透明的方式为用户处理所有繁琐的数据包制作工作(校验和计算、字节排序、标头长度等)。在使用 RAW/PACKET 套接字(RawSocketSend 函数)的最流行的 GNU/Linux 系统(Ubuntu、Fedora、Debian)上一切正常。

我使用 libnet 的唯一原因是出于可移植性问题。但是我没有将 libcrafter 移植到其他系统而不是 GNU/Linux 系统的知识或意图。

我的问题是:

  1. 在 GNU/Linux 的数据包注入库上使用 RAW/PACKET 套接字是否谨慎且安全?
  2. 如果我决定停止使用 libnet,您是否知道关于 GNU/Linux 发行版之间的 RAW/PACKET 套接字的可移植性我应该考虑的一些问题?
  3. RAW/PACKET 套接字接口可能会在未来的内核版本中发生变化?

非常感谢 :-)

0 投票
2 回答
547 浏览

network-programming - 即时修改 HTTP url

是否可以将用户的 HTTP 请求修改为

代替

我的场景是大约 30000 个用户连接到我公司的网络骨干网,我想在骨干网交换机和 Radware LoadProof 之间添加一个或多个服务器(使用我目前正在处理的代码)来完成这项工作。

谷歌搜索了一夜之后,我没有线索,但还有一些问题:

  1. 我不需要通过网络拦截每个数据包。借助 iptables 之类的帮助,我可以过滤掉我想要的包。我在使用 iptables 之前已经完成了。但是,数据包不等于 HTTP 流。我需要重新构建 HTTP 吗?
  2. 如果我成功找到修改 HTTP 请求 URL 内容的方法,我仍然应该将其放回网络流。据我所知,TCP 数据包有一个校验和,在我修改内容后它一定是错误的。如何计算新的校验和并将数据包放回网络?

这是我第一次做网络编程或数据包处理开发。任何建议都值得赞赏。

0 投票
1 回答
2506 浏览

python - Python Scapy 引入一个 TCP 选项

我正在尝试使用称为用户超时的 TCP 选项构建数据包。scapy 支持这个吗?添加诸如 MSS 之类的选项似乎非常简单。这是该选项的 RFC:https ://www.rfc-editor.org/rfc/rfc5482#section-2

任何指针?

0 投票
2 回答
1030 浏览

clang - Libnet11 手动构建 IPv6 数据包

我正在尝试使用Libnet11功能:

在网络层注入 IPv6 数据包。我创建了 IPv6 数据包并使用 Wireshark 捕获它。Wireshark 报告: 格式错误的数据包(wireshark 说 IPv6 中的下一个标头值是错误的,并且我认为有效负载大小太大)

我希望有人可以通过最少的代码示例帮助我,展示如何使用 libnet11 (libnet_write_raw_ipv6()) 手动构建 IPv6 数据包(带有 ICMPv6 扩展标头)。

我假设最小的代码可能如下所示:

我试图找到代码示例但没有成功。先感谢您。

马丁

0 投票
2 回答
6808 浏览

sockets - 使用 SIOCGIFINDEX 获取接口索引时出错

嗨,我正在尝试使用原始套接字进行数据包注入,我在使用 ioctl 的 SIOCGIFINDEX 命令获取接口索引时遇到问题。我使用 ubuntu 12.04 作为我的操作系统。请帮助代码是:

0 投票
1 回答
1025 浏览

perl - 将二进制数据从 perl 变量传递到命令

对于与安全性、DNS 缓存中毒和 Kaminsky 攻击相关的家庭作业,我正在构建一个 Perl 脚本,该脚本使用Nemesis将数据包发送到本地 DNS 服务器(这一切都在一个封闭的、仅限主机的 VMWare 网络上完成)。我已经完成了所有事情,以使调用 nemesis 的过程自动化。

我专门使用 Perl 来选择随机 DNS 事务 ID,将它们添加到我之前制作的 DNS 有效负载中。现在,有效负载不是 DNS 答案,而只是一个查询,因此我可以完善制作有效负载的 ID 部分并使用 Perl 将其推送到克星的方法。

我的代码目前是...

我遇到的问题是,nemesis 正在将数据作为字符串读取,这当然是 echo 所做的。所以我需要做的是将数据作为二进制数据而不是 ASCII 传递给克星。

我想我可以用pack()写一个二进制文件然后使用“cat /foo/bar/file | nemesis -...”来执行有效载荷,但这不是一个最佳解决方案,因为我不想要额外的 IO在收到(假设的,它永远不会到达)真实响应之前,我可以尝试多少次恶意 DNS 响应。

我可以研究哪些方法可以让我以二进制格式将这些数据提供给克星?

0 投票
1 回答
4285 浏览

c - hping怎么能这么快发包呢?

我比较了两个工具的发送数据包速度,hping以及packETHcli. packETHcli 的命令行选项是

而对于 hping 是

但是在iptraf中显示hping的发包速度比packETHcli快10倍左右。

两种工具都使用原始套接字,但为什么会有如此大的差异?

这是获取源代码的链接。

hping:http ://wiki.hping.org/

packETHcli:http: //sourceforge.net/projects/packeth/

编辑: 我注意到hping使用 AF_INET 原始套接字,有效负载是 TCP。packETHcli使用 PF_PACKET 原始套接字,在我的示例中,有效负载是带有 ICMP 有效负载的 IP 数据包。它会影响数据包发送速度吗?

编辑2

这次,我使用 ifconfig 来查找运行前后的 TX 数据包计数hping3差异packETHcli。并且发现这两个工具的数据包生成率接近。hping3大约是每秒 100000 个数据包,packETHcli大约是每秒 80000 个数据包。

我也vnstat用来测量数据包的生成率。结果与我从中得到的数字一致ifconfig

所以,这似乎是iptraf谎言。并且我iptraf用来监控一个TCP数据包的重复重发,而不更新IP ID号和TCP序列号。iptraf认为我的数据包发送速率是每秒 0 个数据包。可能iptraf不计算重复的数据包?

0 投票
1 回答
2175 浏览

tcp - tcpreplay:-T 选项

其中tcpreplay有一个非常有用的功能,根据官方常见问题解答,使用参数调用-T

数据包长度(在这种情况下为 8892 字节)大于传出接口上的最大传输单元 (MTU)。Tcpreplay 必须跳过数据包。或者,您可以指定-T 选项tcpreplay 会将数据包截断为 MTU 大小,修复校验和并发送

不幸的是,-T手册页中似乎有所不同:

在更新版本的 tcpreplay 中是否删除了此选项?

0 投票
1 回答
796 浏览

encryption - 解密 tor 流量

我在本地网络的 mashine 上使用了一个 Tor 客户端,因此我捕获了所有流量。我还可以重定向任何服务器/客户端上的所有 Tor 流量,在网络中添加一些客户端,修改或注入来自这个 mashine 的每个数据包。

那么,有没有办法解密这个 tor 流量或只查看请求的资源?