原始套接字编程UDP Python

编程入门 行业动态 更新时间:2024-10-27 15:28:28
本文介绍了原始套接字编程UDP Python的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

如何以SOCK_RAW格式在python中添加IP和UDP标头之类的自定义字段?我想在数据包中有一个自定义字段并在计算中使用该字段.

How can I add custom fields like IP and UDP headers in python in the SOCK_RAW format?I want to have a custom field in the packet and use that field in computation.

推荐答案

您未指定要在何处使用该自定义字段.此示例使您可以随意构建UDP标头(至少在Linux上-可能存在与操作系统有关的行为):

You didn't specify where you want that custom field. This example lets you build the UDP header at will (at least on Linux - there might be OS-dependent behaviour):

from socket import * import struct s = socket(AF_INET, SOCK_RAW, IPPROTO_UDP) data = 'string' sport = 4711 # arbitrary source port dport = 45134 # arbitrary destination port length = 8+len(data); checksum = 0 udp_header = struct.pack('!HHHH', sport, dport, length, checksum) s.sendto(udp_header+data, ('', 0));

经过测试:

# socat -u UDP:localhost:4711 - & # netstat -up Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name udp 0 0 localhost:45134 localhost:4711 ESTABLISHED 2663/socat # tcpdump -ilo -vv -x 11:32:07.409163 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 34) localhost.4711 > localhost.45134: [no cksum] UDP, length 6 0x0000: 4500 0022 0000 4000 4011 3cc9 7f00 0001 0x0010: 7f00 0001 1267 b04e 000e 0000 7374 7269 0x0020: 6e67

更多推荐

原始套接字编程UDP Python

本文发布于:2023-11-15 13:22:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1594811.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:原始   UDP   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!