添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

下载安装scapy库( https://blog.csdn.net/qq_23977687/article/details/88046257 )

安装完后:

ls()  命令可以查看所有支持的协议
ls(IP) 命令列出ip协议头部字段格式,只要想查看哪个协议的参数,括号里就填哪个协议
IP().show() 列出ip包的信息
lsc() 命令列出scapy的所有命令
conf 命令列出scapy 的配置参数

二、scapy用法

scapy是python中一个可用于网络嗅探的非常强大的第三方库,可以用它来做 packet 嗅探和伪造 packet。 scapy已经在内部实现了大量的网络协议。如DNS、ARP、IP、TCP、UDP等等,可以用它来编写非常灵活实用的工具。

换言之,Scapy 是一个强大的操纵报文的交互程序。它可以伪造或者解析多种协议的报文,还具有发送、捕获、匹配请求和响应这些报文以及更多的功能。Scapy 可以轻松地做到像扫描(scanning)、路由跟踪(tracerouting)、探测(probing)、单元测试(unit tests)、攻击(attacks)和发现网络(network discorvery)这样的传统任务。它可以代替 hping 、arpspoof 、arp-sk、arping,p0f 甚至是部分的Namp、tcpdump 和 tshark 的功能。

1.1、得到数据

有两种方式,实时抓包,读取 pcap文件
1.1.1 实时抓包 :scapy抓包使用 sniff() 函数,这个函数有很多参数

def sniff(count=0, store=1, offline=None, prn=None,filter=None, L2socket=None, timeout=None, opened_socket=None, stop_filter=None, iface=None,*args,**kargs)

  count:抓包的数量,0表示无限制;
  store:保存抓取的数据包或者丢弃,1保存,0丢弃
  offline:从 pcap 文件读取数据包,而不进行嗅探,默认为None
  prn:为每一个数据包定义一个函数,如果返回了什么,则显示。例如:prn = lambda x: x.summary();    (  packct.summar()函数返回的是对包的统计性信息 )
  filter:过滤规则,使用wireshark里面的过滤语法
  L2socket:使用给定的 L2socket
  timeout:在给定的时间后停止嗅探,默认为 None
  opened_socket:对指定的对象使用 .recv() 进行读取;
  stop_filter:定义一个函数,决定在抓到指定数据包后停止抓包,如:stop_filter = lambda x: x.haslayer(TCP);
  iface:指定抓包的接口

   实例:(eth0是要检测的网卡名,count是抓包的数量)

from scapy.all import *
packets = sniff(iface=eth0, count=1)

  1.1.2 读取pcap文件:利用这个库中的 rdpcap()方法来实现

import scapy.all as scapy
packets = scapy.rdpcap(xx.pcap)


 2.1、解析结果

  2.1.1 使用scapy的内置函数 show() 打印结果

for p in packets:
    p.show()
###[ Ethernet ]### 
  dst       = 14:43:d0:65:ae:a2
  src       = 88:b8:5d:bd:0d:7f
  type      = IPv4
###[ IP ]### 
     version   = 4
     ihl       = 5
     tos       = 0x0
     len       = 40
     id        = 28350
     flags     = 
     frag      = 0
     ttl       = 128
     proto     = udp
     chksum    = 0x0
     src       = 192.168.1.56
     dst       = 192.144.236.192
     \options   \
###[ UDP ]### 
        sport     = 59297
        dport     = ms_wbt_server
        len       = 20
        chksum    = 0x6f27
###[ Raw ]### 
           load      = '\xae;\xf8\x01\x04\x00\x04\x04\x00\x01\x07\x00'

  通过上述输出结果,我们可以看得出每个层的数据包有哪些属性可以取出。
  这里P代表的是Ethernet层。P.dst (取出dst属性)、P.src (取出src属性)、P.type (取出type属性)

  每一层都有一个 payload 属性,可以不断进入下一层。

  p.payload:IP层(可用 p.payload.*  取出IP层的属性)
  p.payload.payload:TCP/UDP层(可用 p.payload.payload.*  取出TCP/UDP层的属性)
  p.payload.payload.payload:RAW层(可用 p.payload.payload.payload.*  取出RAW层的属性)

  
  2.2 根据列表标签查找输出

  我们可以查看第一个数据包:package[0]是查看第一个数据包的数据,package[0].show()是查看第一个数据包的详细信息,scapy是按照按照 TCP/IP 四层参考模型显示详细包信息的,即:链路层 [Ethernet]、网络层[IP]、传输层[TCP/UDP]、应用层[RAW] 。我们还可以通过协议来查看指定的包:

  package[UDP][0].show() ,因为我们这里只有UDP的数据包,所以就没有这样使用。,而我们也可以直接只获取指定层的数据,如: pcap[UDP][1][Ether].dst   这个包里面是等于ff:ff:ff:ff:ff:ff

from scapy.all import *
package=sniff(iface='eth0',count=10)  #扫描eth0网卡的数据包,总数为10个
print(package)
print(package[0])   #查看第一个数据包的数据
print(package[0].show())  #查看第一个数据包的详情 
######################################################################
<Sniffed: TCP:0 UDP:9 ICMP:0 Other:1>
b"\xff\xff\xff\xff\xff\xff\xc8[v\xec5\xed\x08\x00E\x00\x01#8G\x00\x00@\x11\x17=\n`\n\x88\n`\n\xff\xd6\x83\xd6\x83\x01\x0fN\xa0\x00qu-PC\x00\x00H\xb6\x1d\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x1dF\x02\x00\x00\x00\x00\xd0\xb5\x1d\x07\x00\x00\x00\x003'\x00\x00\x00\x00\x00\x00\xd0\x1dF\x02\x00\x00\x00\x00\xc02\xc5\x05\x00\x00\x00\x00|j\x85`\x00\x00\x00\x00p\xa4/a\x00\x00\x00\x00\xf9\xb9\x1d\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\xfe\xcc\x05\x00\x00\x00\x00D\xb6\x1d\x07\x00\x00\x00\x00`\xb6\x1d\x07\x00\x00\x00\x00H\xaa {efdced0c-1ada-40e0-a13e-2968030599d4}\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00@\xb6\x1d\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00n\x00\xc5\xac"
###[ Ethernet ]### 
  dst       = ff:ff:ff:ff:ff:ff
  src       = c8:5b:76:ec:35:ed
  type      = 0x800
###[ IP ]### 
     version   = 4
     ihl       = 5
     tos       = 0x0
     len       = 291
     id        = 14407
     flags     = 
     frag      = 0
     ttl       = 64
     proto     = udp
     chksum    = 0x173d
     src       = 10.96.10.136
     dst       = 10.96.10.255
     \options   \
###[ UDP ]### 
        sport     = 54915
        dport     = 54915
        len       = 271
        chksum    = 0x4ea0
###[ Raw ]### 
           load      = "\x00qu-PC\x00\x00H\xb6\x1d\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x1dF\x02\x00\x00\x00\x00\xd0\xb5\x1d\x07\x00\x00\x00\x003'\x00\x00\x00\x00\x00\x00\xd0\x1dF\x02\x00\x00\x00\x00\xc02\xc5\x05\x00\x00\x00\x00|j\x85`\x00\x00\x00\x00p\xa4/a\x00\x00\x00\x00\xf9\xb9\x1d\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\xfe\xcc\x05\x00\x00\x00\x00D\xb6\x1d\x07\x00\x00\x00\x00`\xb6\x1d\x07\x00\x00\x00\x00H\xaa {efdced0c-1ada-40e0-a13e-2968030599d4}\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00@\xb6\x1d\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00n\x00\xc5\xac"
一、工具准备  下载安装scapy库(https://blog.csdn.net/qq_23977687/article/details/88046257)二、scapy用法  1.1、得到数据  有两种方式,实时抓包,读取 pcap文件  实时抓包:利用sniff方法来实现(eth0是要检测的网卡名,count是抓包的数量)from scapy.all import...
任务 数据包伪造 通过伪造数据包使得目标主机无法确定攻击来源是黑客常用的一种攻击手法。Scapy库为我们提供了大量伪造数据包的方法,它能够构造或者解码大量的数据包协议,发送、捕获数据包并匹配请求和回复。本次的任务是对某个目标主机伪造多个不同ip地址的数据包使得目标主机不能很快的分析出攻击的IP地址。 任务 数据包伪造 任务知识点 Scapy模块 知识点:Scapy模块 Scapy模块 Scapy模块 Scapy(网址为/)是一个功能强大的交互式网络分组处理模块。 Scapy能够构造或者解码大量的数据包协议,发送、捕获数据包并匹配请求和回复。 Scapy能轻松地处理像扫描、追踪、探测、单元测试、攻击或者网络发现等大多数常见的任务,因而在网络攻防和渗透测试中受到广泛的应用。 Scapy模块 Scapy模块安装 Scapy模块 伪造数据包 发送数据方法:send()发送三层包和sendp()发送二层包。 Scapy模块 伪造数据包 发送数据方法:send()发送三层包和sendp()发送二层包。 数据包伪造 数据包伪造 Scapy模块
欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体...
包含以下信息。 Pyshark Or Wireshark 如果只是想要所有packet的[src_IP, dst_IP, src_MAC, dst_MAC, Protocol, TimeStamp, Info]等信息,可以直接打开Wireshark导出这个操作也可以用Pyshark库完成。 使用 PyShark 和 scapypcap 文件中读取字段并填充 CSV pcap 中的每个数据包都呈现到 csv 文件的一行中。要提取的特
scapy模块 from scapy.all import * //来自scapy.all文件,导入所有函数 python交互模式中:ls()=Ether、IP、ICMP、TCPUDP、ARP 等等,查看可以配置的参数 1.构建包:不同层之间用/分隔(常用) Ether = Ether(src=“源mac”,dst=“目的mac”) //以太网层 = 二层 IP = IP(src=“源ip”,dst=“目的ip或者URL
目录下载安装Scapy 的使用DHCPv6报文构造发送报文1. 只发不收2. 发且收报文过滤 Scapy是一款强大的交互式数据包处理工具、数据包生成器、网络扫描器、网络发现工具和包嗅探工具。能灵活地构造各种数据包、发送数据包、包嗅探、应答和反馈匹配等功能。 官网:https://scapy.net/ github地址:https://github.com/secdev/scapy 官方文档:https://scapy.readthedocs.io/en/latest/ pip install sc
所以就希望将文件中所有packet提取出来,汇成一个txt文件,方便查看 import pyshark cap = pyshark.FileCapture('xxxxx.pcap', use_json=True, include_raw=True) with open('raw.txt', 'a') as f: for packet in cap: f.write(str(packet.get_raw_packe import scapy.all as scapy from scapy.layers.http import HTTPRequest, HTTPResponse, HTTP import json # pcap_file = r'C:\Users\cmcc\Desktop\test.pcap' pcap_fi...
你可以使用Python中的Scapy库来解析pcap数据包,使用该库可以方便地提取数据包中的各种信息。对于距离信息,需要先确定数据包中所包含的协议类型,然后根据协议类型提取相应的字段。最后,将提取到的距离信息写入CSV文件中即可。以下是一个简单的示例代码: ```python from scapy.all import * import csv # 读取pcap文件 packets = rdpcap('example.pcap') # 定义CSV文件的列名 fieldnames = ['distance'] # 打开CSV文件并写入列名 with open('output.csv', 'w', newline='') as csvfile: writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() # 遍历每个数据包 for packet in packets: # 判断协议类型 if packet.haslayer('UDP'): # 提取距离信息 distance = packet[UDP].sport # 写入CSV文件 writer.writerow({'distance': distance}) 注意:以上代码仅供参考,具体实现可能需要根据数据包的具体格式进行调整。
[code=python] str_hex = str(binascii.b2a_hex(pkt_tcp))[2:-1] res = textwrap.fill(str_hex, width=2) re=res.split() [/code] 我是用的这段代码把十六进制的payload转换成wireshark里面那种两位数一组的数组的,希望对你有帮助~ python之用scapy分层解析pcap报文(Ethernet帧、IP数据包、TCP数据包、UDP数据包、Raw数据包) 凤凰磐涅: 请问解决了嘛? TCP/IP的层次结构、各层数据封装过程、数据包结构--解析 gongrong1226: 二、TCP/IP各层数据封装过程 图中的46~1500 标错了吧,应该是IP层的长度而不是以太网帧 python之用scapy分层解析pcap报文(Ethernet帧、IP数据包、TCP数据包、UDP数据包、Raw数据包) ctotalk: python之用scapy分层解析pcap报文(Ethernet帧、IP数据包、TCP数据包、UDP数据包、Raw数据包) Mr_chenweida: 您好,load是\x00qu-PC\x00\x00H\xb6\x1d\x07\x00这样的,该怎么转换成string