raw-sockets 相关问题

一个Internet套接字,允许直接发送和接收包含所有头的原始网络数据包。它们与TCP / IP或UDP等协议不同。

socket.recvfrom()返回的结果

我在 python-3.5 中有这个简单的代码: 进口插座 sock = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.ntohs(3)) raw_data,addr = sock.recvfrom(65536) recvfrom() 返回接收到的数据...

回答 1 投票 0

发送到原始套接字

sendto 函数我们必须传递目标 struct sockaddr 或 sockaddr_in 但目的是什么? 不是吗,如果我们使用原始 Socket,我们会创建自己的标头,这意味着我们将指定地址...

回答 1 投票 0

如何在RAW套接字的缓冲区中提取数据包?

我正在使用 RAW 套接字发送 ARP 数据包。这是代码: #包括 #包括 #包括 #包括 #包括 我正在使用 RAW 套接字发送 ARP 数据包。这是代码: #include <iostream> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <linux/if_ether.h> #include <arpa/inet.h> #include <stdio.h> using namespace std; uint16_t hard_type = 1; uint16_t proto_type = 0x0800; uint16_t op_code = 1; struct sockaddr_in socket_address; struct arp_header{ uint16_t hardware_type = htons(hard_type); uint16_t protocol_type = htons(proto_type); uint8_t hardware_length = 6; uint8_t protocol_length = 4; uint16_t opcode = htons(op_code); uint8_t sender_hardware_address[6] = {0x00,0x45,0xe2,0x7a,0x01,0x53}; uint32_t sender_protocol_address; uint8_t target_hadrware_address[6] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; uint32_t target_protocol_address; }arp_req; void ipv4_address_assign(){ const char *source_ipv4 = "192.168.1.7"; const char *dest_ipv4 = "192.168.1.1"; uint32_t src_ip_ver_4; uint32_t dst_ip_ver_4; inet_pton(AF_INET,source_ipv4,&src_ip_ver_4); inet_pton(AF_INET,dest_ipv4,&dst_ip_ver_4); arp_req.sender_protocol_address = htonl(src_ip_ver_4); arp_req.target_protocol_address = htonl(dst_ip_ver_4); } int main() { int sockfd = socket(AF_PACKET,SOCK_RAW,htons(ETH_P_ALL)); if (sockfd == -1) { cout << "Cannot open socket"<< endl; return 0; } ipv4_address_assign(); sendto(sockfd,&arp_req,sizeof arp_req,0,(struct sockaddr*)&socket_address,sizeof socket_address); char buffer[sizeof arp_req]; socklen_t len = sizeof arp_req; cout<<"Waiting For Arp Packet"<<endl; recvfrom(sockfd,buffer,sizeof arp_req,0,(struct sockaddr*)&socket_address,&len); cout<<"Arp Packet Have Been Receive"<<endl; return 0; } 我使用Wireshark查看数据包发送情况是否良好,结果没有问题,而且我还在Wireshark中看到了ARP响应,这是我想要的。 但问题是如何在监视器中以十六进制形式显示标头,甚至提取一些信息并将其存储在某个变量中,而且我还应该需要将其从网络字节顺序转换为主机字节顺序,但如何做到这一点? 这是输出缓冲区值的方法: #include <array> #include <iostream> #include <format> int main() { std::array<std::uint8_t,8> values{0,1,2,3,11,12,13,15}; for(const auto byte : values ) std::cout << std::format("{:02X} ",byte); } 输出将是: 00 01 02 03 0B 0C 0D 0F

回答 1 投票 0

网络标头如何在位级别表示

位表示的标头结构如何让我们以 icmp 标头为例,因为该 icmp 的字段最少。 |类型 |代码 |校验和| 内容 举例来说,然后让我们分配...

回答 1 投票 0

使用 WinPcap 获取原始 WiFi 数据包

考虑使用 WinPcap 发送单个原始数据包的简单 C 代码。与构建数据包标头相关的行以以下注释开头: /* 假设在以太网上,设置 mac

回答 1 投票 0

PHP - 为 TCP 套接字准备数据包

我正在尝试编写一个 PHP TCP 客户端来连接到 Unreal Engine 5 RCON 服务器。我正在使用 GitHub 上的现有 C# 项目作为参考,但在准备要发送的数据包时遇到了问题。吉...

回答 1 投票 0

为什么使用 ETH_P_ALL 的所有协议都没有通过原始套接字接收数据包?

包主要 进口 ( “FMMT” “系统调用” ) 函数主() { ` fd, err:= syscall.Socket(syscall.AF_PACKET, syscall.SOCK_RAW, syscall.ETH_P_ALL) //打开原始套接字 如果(错误!=零...

回答 1 投票 0

MacOS SO_REUSEADDR/SO_REUSEPORT 与 Linux 不一致?

考虑这段代码: #包括 #包括 #包括 #包括 #包括 #包括 #包括<...

回答 1 投票 0

Linux 原始套接字和 DPDK 如何将数据传递到用户空间之间的区别?

我想了解 DPDK 如何将数据包数据传递到用户空间与 Linux 原始套接字之间的区别? 原始套接字的手册页暗示内核不进行数据包处理: 数据包

回答 1 投票 0

使用 TCP 协议将原始套接字绑定到地址会终止进程

使用 socket2 库 https://crates.io/crates/socket2 只需使用 TCP 绑定到具有原始套接字的地址即可终止进程。如果我创建一个套接字并简单地尝试通过它发送,我会得到一个 os er ...

回答 0 投票 0

欺骗本地应用程序之间的udp数据包的源ip和端口

我的服务器和客户端之间有一个白名单。我希望我的客户通过我的白名单连接到我的服务器。我的白名单的要点是忽略任何不...

回答 0 投票 0

检测客户端是否使用RAW套接字发送数据包到服务器。

检测客户端是否使用RAW套接字向服务器发送数据包,有时客户端使用WPE等工具向服务器发送数据。有时客户端使用WPE和其他工具向服务器发送数据,检测客户端是否使用RAW套接字向服务器发送数据。

回答 1 投票 -2

为什么我在windows 8上使用IPPROTO_TCP协议的原始套接字会出现异常?

我在我的windows 8机器上使用raw sockets。我创建了一个套接字,如下 s=socket(AF_INET,SOCK_RAW,IPPROTO_TCP) s.bind((gethostname(),0)) s.ioctl(SIO_RCVALL,RCVALL_ON) 但是在绑定时......

回答 1 投票 0

在python中模拟类似路由器的组件

根据我的理解,路由器接收数据包流,并通过保留已连接设备的表并进行一些查找和ll(非常好...)来将其重定向到最终设备(非常好...

回答 1 投票 -1

从使用golang连接到网络接口的原始套接字读取

我正在尝试使用golang读取我的wifi卡接收的链路层数据包。我编写的程序可以成功编译并运行,没有任何错误,但是尝试从...

回答 1 投票 1

[C ++ TCP套接字发送速度

我正在使用简单的锁定TCP套接字将消息发送到远程服务器,而我遇到的问题是,每条消息的发送时间都非常不同。这是我得到的(一些示例):...

回答 3 投票 4

如何以混杂模式打开原始UDP套接字?

我正在尝试打开一个原始套接字以处理udp流量。我需要它是混杂的。我看了很多资源,但我完全感到困惑。这是我的代码:char interface_name [12]; strcpy(...

回答 1 投票 1

在Mac上的golang中使用AF_ROUTE添加路线

我正在尝试使用golang中的AF_ROUTE套接字在Mac机器中添加路由。我在C语言中使用了一个pragram,并尝试将其转换为golang。下面是我的golang程序:package main import(“ bytes” ...

回答 1 投票 1

在Python中构建UDP数据包

[Internet上已经有一个代码,显示了如何使用原始套接字在Python中构建和发送TCP数据包,但是我急切地需要一个有关如何构建UDP的示例。我阅读了此链接http:// ...

回答 1 投票 0


© www.soinside.com 2019 - 2024. All rights reserved.