raw-sockets相关内容

将 Docker 容器连接到网络接口/设备而不是 IP 地址

经过仔细研究、测试和摆弄,我只能通过从 IP/端口转发将 Docker 容器连接到给定接口.这可以通过将 -p Host-IP:Host-Port:Container-Port 添加到 docker run 命令来完成. 我有一个侦听 UDP 广播 (255.255.255.255) 的应用程序,并且无法以这样一种方式配置转发,即我的容器将在不转发我关心的端口上的所有网络流量的情况下接收这些 ..
发布时间:2022-01-22 17:20:19 其他开发

原始套接字帮助:为什么内核 UDP 不接收原始套接字创建的 UDP 数据包?

我正在研究原始套接字.我使用 IP_HDRINCL 选项来构建我自己的 IP 标头.在 IP 标头之后,我正在构建一个 UDP 标头.然后我将数据包发送到我系统的环回地址.我正在运行另一个程序,它将在 UDP 数据包到来时捕获它们.为了检查数据包是否正确形成和接收,我运行了另一个正在读取原始 IP 数据报的进程.我的问题是,虽然第二个进程(读取原​​始数据报)运行良好(所有 IP 和 UDP 字段 ..
发布时间:2022-01-22 16:49:17 其他开发

如何在套接字编程中获取接收到的数据包的 tcp 标头?

我想获取每个接收到的 TCP 数据包的 TCP 头(发往特定程序,即端口)似乎不可能使用 recv() 或 recvfrom() 来使用常规套接字获取 TCP 标头. 所以,我想使用原始套接字使用原始套接字,我可以使用 recvfrom() 接收所有发往主机的 IP 数据包如果主机收到很多数据包,我需要检查每个数据包的端口号,看看是否需要它.那么这可能是非常耗费时间和 CPU 的? whi ..
发布时间:2022-01-19 16:36:54 其他开发

使用 WinPcap 的原始 WiFi 数据包

考虑使用简单的 C 代码发送一个原始数据包WinPcap.与构建数据包头相关的行以以下注释开头: /* 假设在以太网上,设置 mac 目的地为 1:1:1:1:1:1 */ 因此,您可能会猜到,为了发送原始 WiFi 数据包,您应该相应地更改此代码块. 但是,事实并非如此.您无需更改任何一行代码即可发送原始 WiFi 数据包,只需填写正确的 MAC 地址.捕获数据包时也是如此,而 ..
发布时间:2022-01-19 16:33:50 其他开发

使用 TPACKET_V2 时 Vlan id 设置为 0

我对这个 TPACKET_V2 的使用有疑问. 我的问题是,在套接字上设置这种类型的数据包后,当我尝试接收一些数据包时,我无法从数据包中读取 vlan id(当然是从数据包的标头中) vlan_tci 永远为 0. 现在我使用的是 open suse sp1,当我在 sless sp2 上运行我的程序时,我能够使用在 sless sp1 上不起作用的同一程序获取 vlan id,但是奇 ..
发布时间:2022-01-19 16:32:10 服务器开发

时间戳传出数据包

我正在尝试获取传出数据包的准确时间戳(使用原始套接字发送).根据 Linux/Documentation/networking/timestamping.txt, "对于发送时间戳,传出的数据包会循环回套接字的错误队列,并附上发送时间戳.可以使用 recvmsg(flags=MSG_ERRQUEUE) 接收它.". 不幸的是,recvmsg 在原始套接字(使用 socket(PF_INET, ..
发布时间:2022-01-13 09:23:41 服务器开发

原始套接字帮助:为什么内核 UDP 没有接收到原始套接字创建的 UDP 数据包?

我正在研究原始套接字.我使用 IP_HDRINCL 选项来构建我自己的 IP 标头.在 IP 标头之后,我正在构建一个 UDP 标头.然后我将数据包发送到我系统的环回地址.我有另一个程序正在运行,它会在 UDP 数据包到来时捕获它们.为了检查数据包是否正确形成和接收,我有另一个正在读取原始 IP 数据报的进程正在运行.我的问题是,虽然第二个进程(读取原​​始数据报)运行良好(所有 IP 和 UDP ..
发布时间:2022-01-04 22:52:33 其他开发

C 编程 TCP 校验和

我数天以来一直无法为 TCP 校验和.我查看了 Internet 上的许多资源,但我所看到的示例都没有向您展示如何进行 TCP 校验和.我还查看了 RFC 文档,但仍然遇到问题: 下面是我用来生成校验和的代码: unsigned short checksum(unsigned short * buffer, int bytes){无符号长总和 = 0;无符号简答 = 0;int i = 字 ..
发布时间:2021-12-28 12:39:48 其他开发

原始套接字中的连接功能?

我正在尝试在 C 中启动 TCP 三向握手.但是,我想到 connect 可能已经建立了这样的连接或以某种方式进行了干扰.每当调用它的套接字设置了 IPPROTO_TCP 选项时,connect 是否会自动建立 TCP 连接? 解决方案 是的,IPPROTO_TCP 创建 TCP 套接字.要使用原始套接字,您需要将 SOCK_RAW 作为第二个参数传递给 socket 函数. ..
发布时间:2021-09-04 20:06:15 C/C++开发

在 Python 中使用原始套接字

我有这个简单的客户端代码,它向服务器发送消息,然后回显服务器响应. 导入socket、sys、时间主机 = '本地主机'端口 = 11000s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect((主机,端口))msg = raw_input()s.发送(味精)数据 = s.recv(len(msg))s.close()打印“ ..
发布时间:2021-06-26 20:07:54 Python

如何在 Python 中使用原始套接字?

我正在编写一个应用程序来测试处理损坏数据的网络驱动程序.并且我想到使用原始套接字发送这个数据,所以它不会被发送机器的 TCP-IP 堆栈纠正. 我仅在 Linux 上编写此应用程序.我有在系统调用中使用原始套接字的代码示例,但我真的希望尽可能保持我的测试动态,并用 Python 编写大部分(如果不是全部). 我在网上搜索了一些关于在 python 中使用原始套接字的解释和示例,但没有找 ..
发布时间:2021-06-25 19:35:17 Python

如何从 C# 授予 Windows 10 中 Pcap 库的权限?

我使用 SharpPcap 库来实现 GOOSE 协议监听器(EtherType = 0x88B8).它运行良好,但前提是我并行运行 Wireshark,否则我的程序无法捕获 GOOSE 数据包. SharpPcap 示例也不会在 Wireshark 未运行时捕获 GOOSE 数据包.但是 SharpPcap 库捕获了我的广播 UDP 数据包. 解决方案 我不得不以混杂模式打开我的 ..
发布时间:2021-06-14 20:41:37 其他开发

为什么 echo ping 没有到达目的地?

我正在尝试使用原始套接字自己实现 ICMP 回显 ping 数据包.在我的 Linux 机器上执行 tcpdump 时,我发现 Echo ping 请求已成功发送,但是当我使用 Wireshark 观察 Windows 机器中传入的数据包时,没有观察到传入的 ICMP 请求. 我编写了以下代码来实现 ICMP 回显请求和回复. #include #include #include #inc ..
发布时间:2021-06-07 19:42:24 其他开发

使用套接字AF_PACKET/SOCK_RAW,但告诉内核不要发送RST

我的问题已在此处进行了粗略讨论. 而tl; dr解决方案是: iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP 您可以对其进行修改,以仅阻止您正在积极监听的端口. 但正如上述问题和在这里,这些都不是优雅的解决方案. 现在,我不太在乎事物的优雅. 但是我确实很在乎学习.因此,我深入研究了Linux源代码(目前主要对基于 ..
发布时间:2021-05-30 18:34:19 服务器开发

在AF_PACKET套接字上发送数据

如何在SOCK_PACKET套接字上发送数据而不指定绑定到的主机?我已经构造了IP标头以显示它应该去的地方,但是write()无法正常工作. 解决方案 不要.使用write(),使用sendto(). 如果使用PF_PACKET,SOCK_DGRAM,则它将为您构建链接层标头,这通常是您想要的.不过,您仍然需要构建正在使用的更高协议. 您在目标参数中指定了一个sockaddr_ ..
发布时间:2021-05-29 23:10:33 服务器开发

如何在Linux中使用RAW套接字发送802.11管理帧和数据帧

我正在尝试构建一个应用程序,该应用程序将使用原始套接字从用户空间一起发送802.11管理帧和数据帧.我能够使用sendto()函数发送数据帧,但是我也需要发送管理帧,而我大多陷在其中.有什么可行的方法吗? 解决方案 要从无线接口发送管理,数据或任何类型的纯原始数据包,您必须执行以下操作: 确保无线接口硬件在监视模式下支持数据包注入. 将无线接口设置为监视模式.例如 sudo ..
发布时间:2021-05-29 22:50:51 服务器开发

如何刷新原始AF_PACKET套接字以获取正确的已过滤数据包

sock = socket(AF_PACKET,SOCK_RAW,htons(ETH_P_ALL));setsockopt(袜子,SOL_SOCKET,SO_ATTACH_FILTER,& f,sizeof(f)) 使用这个简单的BPF/LPF附加代码,当我尝试在套接字上接收数据包时,将得到一些与过滤器不匹配的错误数据包.似乎那些数据包在我调用setsockopt()之前就已经进入套接字了. ..
发布时间:2021-05-04 21:00:56 服务器开发

可以在同一台计算机上安全地运行多个Android模拟器并使用套接字进行通信吗?

我想在一台笔记本电脑(最坏的情况下)或专用网络上的多台计算机上模拟一小组Android设备。 是否存在一种安全的方法来从Eclipse下的给定应用程序中识别并启动特定的仿真器?我最近安装了Eclipse / Java / ADT,并且正在使用Mark Murphy,Meier和Abelson的各种教程。 解决方案 从Android文档状态中运行多个模拟器实例您可以同时运行多个实例。 ..
发布时间:2020-10-29 05:38:26 移动开发