python 自定义tcpip协议包工具scapy

22 篇文章 3 订阅

一、介绍
Scapy是一个可以让用户发送、侦听和解析自定义网络报文的Python程序,比如只发物理层报文、只发icmp的报文等等,利用这个可以做很多在socket层数之下的小工具。
教程

二、Scapy下载安装
pip install scapy
在这里插入图片描述
三、使用方法

#导入库
#from scapy import * #linux
from scapy.all import * #windows

#生成各网络层的包
print("生成更网络层的包")
eth_packet = Ether()#生成以太网包
ip_packet = IP()    #生成以IP包
tcp_packet = TCP()  #生成tcp包
udp_packet = UDP()  #生成udp包
icmp_packet = ICMP()#生成icmp包
#查看包内容
print("查看包内容")
raw(eth_packet)# 使用raw()方法查看
hexdump(ip_packet)#使用hexdump()查看。类似Wireshark
Ether(raw(ip_packet))#raw()配合协议类查看。最佳
#raw()配合协议类查看。最佳
Ether(raw(ip_packet))# 查看该数据包以太网层内容(下层内容不层示,上层内容不解析只以load形式展示)
IP(raw(ip_packet))

#自定义字段生成各网络层的包
print("自定义字段生成各网络层的包")
print("在构造时直接传递参数")
ip_packet = IP(src="10.10.6.92",ttl=128)
IP(raw(ip_packet))

print("在生成后重新赋值")
ip_packet.src = "10.10.6.93"
ip_packet.ttl = 200
IP(raw(ip_packet))

print("同时自定义多层协议的字段")
ip_packet = Ether(src="00:00:00:00:00:11")/IP(src="10.10.6.92")
Ether(raw(ip_packet))

tcp_packet = Ether(src="00:00:00:00:00:11")/IP(src="10.10.6.92")/TCP(sport=1234)
Ether(raw(tcp_packet))

app_packet = IP()/TCP()/"GET / HTTP/1.0\r\n\r\n"
IP(raw(app_packet))

#包的发送接收
print("包的发送接收")
print("发送")
try:
    send(IP(dst="10.10.6.92")/ICMP())
except:
    print()
try:
    sendp(Ether()/IP(dst="10.10.6.92")/ICMP())
except:
    print()
print("发送并响应")
try:
    rec_packet = sr1(IP(dst="10.10.6.92")/ICMP()/"abcdefg")
    rec_packet
    print("直接读取某项值")
    rec_packet.src
    print("使用show()方法格式化输出")
    rec_packet.show()
except:
    print()

#syn扫描
print("syn扫描")
rec_packet = sr1(IP(dst="10.10.6.92")/TCP(dport=80,flags="S"))
rec_packet.show()



在这里插入图片描述

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值