send pkt

IP包的生成和发送接口(转载) IP包的生成和发送接口(转载)作者:collide  原文地址:http://blog.youkuaiyun.com/collide/articles/127616.aspx(1) Linux内核中有3种基本的IP包生成器, 它们分别为ip_build_xmit(), ip_queue_xmit(),ip_build_and_send_pkt(). ip_build_and_send_pkt()是一简单的IP 阅读详情
SendPkt快速入门
作者:
gashero
电邮:
harry.python@gmail.com
原文地址:
http://gashero.yeax.com/?p=26
项目主页:
http://sendpkt.googlecode.com
日期:
2007-10-03
版本:
sendpkt 0.2
修订版:
1
目录
1 简介
2 使用SendPkt的流程
3 SendPkt发送数据包的简单例子
4 SendPkt发送ARP查询包的例子
5 参考
1 简介
摘自 SendPkt 项目wiki。
SendPkt是一套同时可以运行在Linux/Win32的发送链路层数据包的Python扩展库。
SendPkt在Linux和Win32下实现方式是不同的,但是提供对Python的相同接口,确保Python程序可以不经过修改就可以移植。
在Win32下SendPkt使用WinPcap?中的 pcap_sendpacket() 函数发送数据包。
在Linux下SendPkt使用libnet的 libnet_adv_write_link() 函数发送数据包。
同时SendPkt还提供了查找网络接口设备的功能,以供发送数据包时选择。在Linux下虽然可以使用libnet自动选择的网络接口设备,但是在Win32下,默认的网络设备总会导致发包失败。所以为了可移植性,你必须在发送数据包时指定使用哪个网络设备接口。
2 使用SendPkt的流程
选择合适的网络接口以发送数据包,因为Win32于Linux的不同,需要专门选择。
对于Win32,通过libpcap取得的第一个网络设备接口(网卡)是一个虚拟网卡,无法发送数据包,而一般选择第二个网口,可以通过os.name判断操作系统并选择合适的网口。
得到的网络设备接口列表,是一个字符串列表,最终提供给发送函数的网口标志也是字符串。
构造数据包。推荐使用dpkt。
dpkt是python界通用的数据包组包和解包库,在分层构造数据包时从高层(应用层)向底层依次构造数据包。并且把高层数据包的数据作为下一层数据包的data字段来使用。
对于高性能应用,手工构造数据包也未尝不可,因为哪种方式都需要对数据包格式的深入了解。
发送数据包,使用 sendpkt.sendpacket() 。
例子见下面的代码。调用方式为 sendpkt.sendpacket(packet,device) 。第一个参数为数据包,为字符串对象,以太网帧。第二个参数为网络设备名,通过第一步获得。
3 SendPkt发送数据包的简单例子
参见SendPkt项目的单元测试 test.py 。:
import sendpkt
#构造一个需要发送的数据包
packet=”a”*80
#查找所有可用网络设备接口
devlist=sendpkt.findalldevs()
#根据操作系统选择合适的网络设备
if devlist:
if os.name==”nt”:
device=devlist[-1] #\\NPF\\….
elif os.name==”posix”:
device=devlist[0] #eth0
else:
device=devlist[0]
else:
device=”"
raise OSError,”You must run in root mode”
#发送数据包
sendpkt.sendpacket(packet,device)
4 SendPkt发送ARP查询包的例子
ARP查询包的op字段为1,表示查询一个IP地址对应的MAC地址。如下是查询过程。:
#! /usr/bin/env python
# -*- coding: UTF-8 -*-
# File: arpquery.py
# Date: 2007-09-21
# Author: gashero
# Copyright@1999-2007, Harry Gashero Liu.
“”"
ARP查询的测试
“”"
from socket import inet_aton,inet_ntoa
import dpkt
import sendpkt
LOCALMAC=”111111″
LOCALIP=inet_aton(”192.168.1.104″)
REMOTEMAC=”"
REMOTEIP=inet_aton(”192.168.1.1″)
def main():
global LOCALMAC
global LOCALIP
device=sendpkt.findalldevs()[0] #for linux is eth0
arp=dpkt.arp.ARP(
hrd=1,
pro=2048,
hln=6,
pln=4,
op=1,
sha=LOCALMAC,
spa=LOCALIP,
tha=”\x00″*6,
tpa=inet_aton(”192.168.1.1″)
)
ether=dpkt.ethernet.Ethernet(
dst=”\xff”*6,
src=LOCALMAC,
type=0×0806,
data=arp
)
#print ether
#print repr(dpkt.ethernet.Ethernet(str(ether)))
sendpkt.sendpacket(str(ether),device)
return
if __name__==”__main__”:
main()
5 参考
【feature_column处理】- indicator_column(指示列)和embedding_column(嵌入列) 1. 开胃菜 我们先来了解一下tf.feature_column.input_layer def input_layer(features, feature_columns, weight_collections=None, trainable=True, cols_to_vars=None, cols_to_output_tensors=None) 阅读详情

相关推荐

Unreal Engine鸿蒙移植实战:环境配置、构建流程与性能优化指南

游戏引擎移植是跨平台开发中的关键技术环节,其核心原理在于通过适配目标操作系统的底层接口和工具链,实现同一套代码在不同硬件和软件环境下的高效运行。这项技术的价值在于最大化代码复用率,降低多平台维护成本,并能让应用快速触达新兴生态系统的用户。在移动游戏和XR应用领域,随着鸿蒙HarmonyOS生态的快速发展,将成熟的商业引擎如Unreal Engine迁移至此平台,成为开发者探索新市场机会的重要路径。本文聚焦于Unreal Engine项目向鸿蒙系统的移植实践,详细解析了从环境搭建、源码适配到构建打包的全链路流

weixin_29011395的博客 411

DIY TCP/IP IP模块和ICMP模块的实现3

上一篇:DIY TCP/IP IP模块和ICMP模块的实现2 8.5 IP数据帧的发送 本节为构造好的ICMP (Ping) Reply添加IP头部,根据目标IP地址查找ARP模块的ARP表,在IP头部前面再添加以太网头部,最终通过DIY TCP/IP的网络设备模块把Echo (Ping) Reply发送到对方主机。本章一直沿用的测试都是在与运行DIY TCP/IP的主机A,处于同一局域网的另外一...

Gannicus.Guo的博客 424

计算机三级考试嵌入式系统重点精简汇总

第一章 嵌入式系统概论 1.1.1嵌入式系统 (1)特点:(1)专用性;(2)隐蔽性;(3)资源受限;(4)高可靠性;(5)实时性;(6)软件固化。 (2)应用:(1)冰箱、洗衣机、电饭煲、空调、摄影机、DVD播放器等;(2)数控机床、飞机、汽车、电梯、X光机、血压计等;(3)电话机、传真机、打印机、pos机、GPS导航仪、路由器等。 1.1.2嵌入式系统组成与分类 (1)逻辑组成:硬件和软件,分为处理器、存储器、I|0设备与I|O接口,数据总线; (2)处理器:分为主处理器(CPU)和协处

chemkrik的博客 1万+

SendPkt快速入门[Python]

SendPkt快速入门作者:gashero电邮:harry.python@gmail.com原文地址:http://gashero.yeax.com/?p=26项目主页:http://sendpkt.googlecode.com日期:2007-10-03版本:sendpkt 0.2修订版:1目录1 简介2 使用SendPkt的流程3 SendPkt发送数据包的简单例子4 Se...

weixin_33690963的博客 347

Arduino MLX90393磁力计驱动库:高精度三轴霍尔传感器开发指南

三轴霍尔效应磁力计是嵌入式系统中实现无接触角度检测、电子罗盘与电流传感的核心器件。其工作原理基于霍尔电压随外磁场矢量变化的物理特性,通过I²C接口输出高分辨率(16/20-bit)XYZ轴原始数据,并集成温度补偿与数字滤波功能。技术价值体现在确定性响应、低功耗(典型0.5 μA待机)及强抗干扰能力,适用于电池供电设备与实时操作系统环境。典型应用场景包括电机位置反馈、永磁体旋转角度解算、工业编码器和地磁导航。本库专为Arduino生态优化,深度封装MLX90393寄存器协议与自校准流程,同时兼容STM32、E

weixin_29363791的博客 642

Neo4j Desktop新手必看:3分钟搞定CSV数据导入(附常见报错解决方案)

本文详细介绍了在Neo4j Desktop中高效导入CSV数据的三种主流方法,包括图形化界面操作、命令行批量导入和Python驱动编程导入,并提供了常见报错解决方案和性能优化技巧,帮助新手快速构建知识图谱。

lambda的博客 648

DIY TCP/IP TCP模块的实现8

上一篇:DIY TCP/IP TCP模块的实现7 9.10 TCP滑动窗口的实现2 9.8节实现了TCP三步握手数据帧的交互,完成了TCP连接的建立。主机A关闭GRO后,DIY TCP/IP可以正确接收到携带数据的TCP帧。在实现TCP滑动窗口之前,先完成对携带数据的TCP帧的接收。本节的目标是,接收到携带数据的TCP帧时,检验TCP帧的序号是否是希望接收到的序号,构建TCP ACK,确认收到TC...

Gannicus.Guo的博客 417

K2P padavan固件下宽带与IPTV融合

举例说下,假如你的IPTV是拨号的,IPTV端口直接连到笔记本电脑的网口,IP是自动分配的情况下,在VLC里面是可以直接播放“rtp://239.XXX.XXX.XXX:XXXX”的,即使IPTV是DHCP模式,按道理也是可以播放的。家里很少看电视,基本上就是看看春晚,然后平时老人在家没事看看,所以就把广电的机顶盒停掉了,换了一个N1的盒子刷了CoreELEC系统,既可以通过m3u8文件看网络电视,也可以看本地的多媒体,很方便,完全满足了自己的需求。在上图的第三步中,端口设置成大于1024的端口即可。

aplsc的专栏 63万+

【验证小白】只有SV+modelsim学验证(1)——把平台搭起来

前言 最近转战验证方向,想起了初学验证时候的心酸和迟迟不能跑通一个验证平台的苦恼,因此想写这个博客。不借助UVM、VMM等验证方法学,凭着system verilog和modelsim尝试着搭一个能够跑通、能够明白原理、能够直观看到波形的验证平台,或许对于我这样的验证初学者也是有好处的。 最简单的验证平台 常见的验证平台如下图所示,这几个模块可以说是最基础的元素了: gen负责生成某一cl...

moon9999的博客 1万+

AIDD机器学习深度学习药物发现与设计教程总结

AIDD(AI Drug Discovery & Design):是近年来非常火热的技术应用,且已经介入到新药设计到研发的大部分环节当中,为新药发现与开发带来了极大的助力。倾向于机器对数据库信息的自我学习,可以对数据进行提取和学习,一定程度上避免了化合物设计过程中的试错路径,同时还会带来很多全新的结构,为药物发现打破常规的结构壁垒。覆盖了机器学习和深度学习,能与新药研发相结合并实质性的应用到靶点预测、高通量筛选、药物设计、药物的ADMET性质预测等;且算力方面,由早期应用于药物发现领域的决策树、随机

wutianlin0723的博客 6818

别再只接个放大器了!压电传感器测量电路(电压/电荷放大器)的5个实战配置要点

本文深入解析压电传感器测量电路中的5个关键实战配置要点,包括电缆长度选择、输入阻抗匹配、过载保护设计、低频噪声抑制及放大器选型策略。特别针对电压放大器和电荷放大器的应用场景差异提供工程实践建议,帮助工程师有效解决信号失真、噪声干扰等常见问题,提升测量精度和系统可靠性。

weixin_26869081的博客 302

Scapy工具使用测试(一)

Scapy是一个可以让用户发送、侦听和解析并伪装网络报文的Python程序。这些功能可以用于制作侦测、扫描和攻击网络的工具。换言之,Scapy是一个强大的操纵报文的交互程序。它可以伪造或者解析多种协议的报文,还具有发送、捕获、匹配请求和响应这些报文以及更多的功能。Scapy可以轻松地做到像扫描(scanning)、路由跟踪(tracerouting)、探测(probing)、单元测试(unit tests)、攻击(attacks)和发现网络(network discorvery)这样的传统任务。

hqq2312的博客 1619

在 SAP BTP ABAP Environment 里把 ATC 跑成流水线:定时检查 + 告警邮件,一次打通

摘要 本文介绍了如何在SAP BTP ABAP环境中实现ATC检查的自动化流程。通过将ATC与质量体系结合,构建从检查到通知的完整闭环:使用Custom Code Analysis Project定义检查范围,通过Application Jobs实现定时调度,利用标准CDS View读取结果,最后开发通知作业发送告警邮件。文章重点阐述了云环境下不同于On-Premise的实现思路,包括Test Variant设计、作业编排模板应用等关键环节,并提供了可落地的代码示例。这种自动化方案能有效解决人工检查的滞后性

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 168

FFmpeg send_packet / receive_frame EAGAIN状态拆解

本文深入解析了FFmpeg解码器API中avcodec_send_packet和avcodec_receive_frame的工作机制,重点分析了EAGAIN状态出现的条件和原因。解码流程涉及buffer_pkt、BSF过滤器、in_pkt和buffer_frame等多个数据缓冲区。当buffer_pkt非空时send会返回EAGAIN;receive返回EAGAIN表示当前无帧可输出,但内部可能已消耗输入数据。文章还解释了三个draining状态的区别:draining_started标记输入结束意图,av

Garllic的博客 211

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ffmpeg avcodec_send_packet avcodec_receive_frame解码接口使用讲解

解码demo 通常来说,一个packet会被解码出一个frame,不过也存在一个packet被解码出多个frame或者多个packet才能解码出一个frame的情况,甚至也有些解码器在输入以及输出端上可能会有延迟。因此原来的API在某种程度上存在对调用者误导的可能,使得调用者认为输入的一个或者多个Packet就对应着解码器所输出的一个frame,但实际上可能并非如此。 新的API完全隐藏了“解码”这一概念,只提供一个输入packet的接口以及输出frame的接口,如此一来调用者可以不必了解解码器的具体细节,

weixin_41176628的博客 7571

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

benchmark

在pkt.py中,mod_pkts类中实现了对数据负载进行打包并基带调制、发送的过程,打包时可以由用户设定包的头部,默认是AKA同步矢量;调制过程为基带调制,输出复基带信号,在调制中又可以选择差分或者不差分。demod_pkt类实现拆包、解调的过程。 在mod_pkt中,过程如下: 数据负载——>通过send_pkt函数进行打包并传递给messa...

weixin_34221773的博客 235

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

学习记录 实验

学习记录 实验

qq_51535789的博客 163

学习Linux-4.12内核网路协议栈(3.2)——网路层的发包处理

上篇文章介绍了接口层将IP包传给网络层以后的处理过程,主要是包括传给上层,转发和丢包处理。这篇文章将介绍传输层怎么将包传递给网络层,以及传给网络层以后的处理过程。这里主要分两部分:TCP包的发送和UDP包的发送。 在TCP中,将TCP段打包成IP数据报的方法根据TCP段类型的不同而有多种接口,最常用的就是ip_queue_xmit,而ip_build_and_send_pkt和ip_send

奔跑的路 2515

Qt使用avcodec_send_frame和avcodec_receive_packet程序段错误

报错 The inferiorstoppedbecause it triggered anexception. Stopped in thread 9 by: Exception at 0x75cd4e3f,code:0xc00000005:read accessviolation at: 0x1, flags=0x0. int got_picture = 0; int ret = 1; /* encode the image */ if(pkt == nullptr) { ...

YUUKK的博客 1651

7 android QMI机制---modem消息发送

原文:https://blog.youkuaiyun.com/u012439416/article/details/74277592  7 modem消息发送 一般BP侧处理完请求后,都会回应一个响应给AP,一般是用宏QMI_SVC_PKT_PUSH将要作为响应 的消息发送出去。qmi_svc_utils.h中QMI_SVC_PKT_PUSH定义如下, #define QMI_SVC_PKT_PUSH...

keyanting_2018的博客 856

IP 层收发报文简要剖析4--ip 报文发送

无论是从本地输出的数据还是转发的数据报文,经过路由后都要输出到网络设备,而输出到网络设备的接口就是dst_output(output)函数 路由的时候,dst_output函数设置为ip_output ip_mc_output等 1、TCP输出接口 L4 层在发送数据时会根据协议的不同调用上面提到的几个辅助函数之一,tcp协议打包成ip数据包文的方法根据tcp段的不同而选择不同...

weixin_30276935的博客 340

ARM TCP/IP协议栈驱动开发与网络接口实现

TCP/IP协议栈是现代嵌入式系统的核心组件,其通过分层架构实现网络通信的抽象与封装。在ARM架构下,协议栈驱动开发主要涉及硬件抽象层(HAL)与协议接口层的协同工作,其中硬件初始化、中断管理、DMA缓冲区配置是关键环节。从技术原理看,驱动通过注册函数指针(如n_init、pkt_send)与协议栈交互,同时维护MIB-II统计信息用于网络监控。在实际应用中,这种设计显著提升了嵌入式设备的网络性能,特别是在工业控制、物联网终端等场景。以以太网驱动为例,开发者需要处理MAC地址过滤、协议类型注册等核心功能,同

weixin_33714884的博客 463

ESP8266零网络模式无线通信:基于MAC层的轻量级点对点库

在嵌入式物联网开发中,无线通信常受限于Wi-Fi协议栈开销与网络依赖。SimplePair作为一种运行于数据链路层(Layer 2)的极简方案,绕过TCP/IP、IP地址分配和AP/STA连接流程,直接调用ESP8266底层`wifi_send_pkt_freedom()`接口构造802.11帧,实现真正的‘无线串口’式点对点交互。其技术价值在于将通信回归物理层信号收发本质,显著降低启动延迟(<200ms)、内存占用(<1.2KB RAM)与功耗,适用于电池供电传感器、产线配对及教学实验等场景。结合信道动态

weixin_33193177的博客 106

libcurl库 ftp上传文件到服务器

libcurl主要功能就是用不同的协议连接和沟通不同的服务器。libcurl当前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。 今天主要是记录项目中libcurl ftp的使用,关于libcurl的API描述,这个链接已经描述的很详细了:https://curl.haxx.se/libcurl/c/allfuncs.html

opkg list 3056

keepalived vrrp报文机制

keepalived vrrp报文机制 vrrp通告报文发送机制 vrrp_send_adv() 每次通告报文发送前需要调用更新函数,更新优先级和目的IP等值 vrrp_update_pkt() 完成报文更新后,调用发送函数完成发送 vrrp_send_pkt() 发送函数可以实现单播,组播。 1.带unicast_peers参数时,只会对目标内都地址发送; 2.当参数为NULL默认对组播地址进行组播。 每个vrrp实例创建和完成初始化时vrrp_complete_instance(),就已经对vrrp报文

lj1169799526的博客 704

F´ Svc::TlmPacketizer 组件完全解析:遥测打包、命令字典与实现原理

Svc::TlmPacketizer 是 F´(F Prime)飞行软件与嵌入式系统框架中负责将遥测(Telemetry)通道按预定义报文打包下行的核心组件。本文以该组件的官方文档字典([Svc/TlmPacketizer/docs/TlmPacketizer.md](https://link.gitcode.com/i/7d6b0b5585f84ab6d4b166ff17d1ac93))为骨架,

gitblog_00371的博客 923
上一篇: Python模块——struct(字节流,组包拆包实现)
下一篇: python usefull lib
killmice
博客等级 码龄14年 119粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值