You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scapy中PPPoED_Tags的使用方法及参数传递问题咨询

PPPoED_Tags 参数传递规范

所有PPPoED标签都遵循TLV三元组结构,不管你用哪种框架构造数据包,参数传递都要符合以下规则:

  • 类型字段:按RFC 2516定义的标签类型赋值,常用类型包括:
    • 0x0000:End-Of-List,标记标签列表结束
    • 0x0101:Service-Name,指定请求的服务名
    • 0x0102:AC-Name,接入集中器名称
    • 0x0103:Host-Uniq,主机唯一标识
    • 0x0104:AC-Cookie,接入集中器下发的验证cookie
  • 长度字段:直接填后续值字段的字节长度,不需要包含类型和长度字段自身的4字节
  • 值字段:按对应标签的要求填入二进制或字符串内容,字符串类型不需要额外补终止符

如果用scapy构造PPPoE发现阶段数据包,可参考以下示例:

from scapy.layers.ppp import PPPoED, PPPoETag

# 构造标签列表
tags = [
    PPPoETag(type=0x0101, len=len("internet"), value=b"internet"), # Service-Name标签
    PPPoETag(type=0x0103, len=4, value=b"\x12\x34\x56\x78"), # Host-Uniq标签
    PPPoETag(type=0x0000) # End-Of-List标签,不需要填长度和值
]

# 封装到PPPoED数据包
pkt = PPPoED(code=0x09, sessionid=0, tags=tags) # code=0x09对应PADI请求

如果是用C语言调用libpcap/raw socket构造,直接按TLV结构逐字节拼接即可,不需要做额外的字节序转换,PPPoE协议规定所有字段都按网络字节序(大端)传输。

你提到的官方提示里的参数要求,实际就是要求你按[类型1][长度1][值1][类型2][长度2][值2]...的顺序拼接所有标签,最后以End-Of-List标签收尾即可。

内容的提问来源于stack exchange,提问作者BeQuite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:06:04