python的Scapy库的基础知识点汇总

Scapy 是一个强大的 Python 库,用于网络数据包的操作,包括数据包的生成、解析、嗅探和注入。以下是 Scapy 库的全部知识点汇总:

1. 安装与配置

安装 Scapy

使用 pip 安装:

pip install scapy

验证安装:

from scapy.all import *

2. 基本操作

数据包生成
  • 创建数据包:
pkt = IP(dst="8.8.8.8")/ICMP()
  • 层叠数据包:
pkt = Ether()/IP()/TCP()/"Hello, World!"
数据包字段
  • 查看数据包字段:
pkt.show()
  • 修改数据包字段:
pkt[IP].dst = "8.8.4.4"

3. 数据包发送与接收

发送数据包
  • 发送数据包:
send(pkt)
  • 发送并接收响应:
response = sr1(pkt)
嗅探数据包
  • 嗅探网络数据包:
sniff(filter="icmp", count=10, prn=lambda x: x.summary())
  • 停止嗅探:
packets = sniff(timeout=10)

4. 协议层

链路层
  • Ethernet 数据包:
eth = Ether(dst="ff:ff:ff:ff:ff:ff")
  • ARP 数据包:
arp = ARP(pdst="192.168.1.1")
网络层
  • IP 数据包:
ip = IP(dst="8.8.8.8")
  • ICMP 数据包:
icmp = ICMP()
传输层
  • TCP 数据包:
tcp = TCP(dport=80, flags="S")
  • UDP 数据包:
udp = UDP(dport=53)

5. 高级功能

数据包注入
  • 将数据包注入网络:
sendp(pkt)
数据包重放
  • 重放捕获的数据包:
packets = rdpcap("example.pcap")
sendp(packets)
数据包解析与构建
  • 从二进制数据解析数据包:
raw_pkt = b'\x00\x01\x02...'
pkt = Ether(raw_pkt)
  • 构建自定义协议:
class Custom(Packet):name = "Custom"fields_desc = [ByteField("field1", 0), ShortField("field2", 1)] 

6. 网络攻击与防御

ARP 欺骗
  • 执行 ARP 欺骗:
send(ARP(op=2, pdst="192.168.1.1", psrc="192.168.1.254", hwdst="ff:ff:ff:ff:ff:ff"))
DOS 攻击
  • SYN 洪水攻击:
send(IP(dst="target_ip")/TCP(dport=80, flags="S"))
检测和防御
  • 检测 ARP 欺骗:
def detect_arp_spoof(pkt):if ARP in pkt and pkt[ARP].op == 2:if pkt[ARP].psrc in arp_cache and arp_cache[pkt[ARP].psrc] != pkt[ARP].hwsrc:print("ARP Spoofing Detected!")
sniff(filter="arp", prn=detect_arp_spoof)

7. 工具集成与自动化

结合其他工具
  • 与 nmap 结合使用:
from scapy.layers.inet import IP, TCP
from scapy.sendrecv import sr1for i in range(1, 255):ip = f"192.168.1.{i}"pkt = IP(dst=ip)/TCP(dport=80, flags="S")response = sr1(pkt, timeout=1, verbose=0)if response:response.show()
脚本化任务
  • 自动化网络扫描:
def scan_network(ip_range):for ip in ip_range:pkt = IP(dst=ip)/ICMP()response = sr1(pkt, timeout=1, verbose=0)if response:print(f"{ip} is up")ip_range = [f"192.168.1.{i}" for i in range(1, 255)]
scan_network(ip_range)

8. Scapy工作上使用的实例场景

  • 实例:抓取TCP报文的flags,或者某一帧的以太网报文
from scapy.all import sniff
from scapy.layers.inet import IP, TCPdef packet_handler(packet):if packet.haslayer(TCP) and packet.haslayer(IP):src_ip = packet[IP].srcdst_ip = packet[IP].dstsrc_port = packet[TCP].sportdst_port = packet[TCP].dportflags = packet[TCP].flagsprint(f"Source IP: {src_ip}, Destination IP: {dst_ip}, Source Port: {src_port}, Destination Port: {dst_port}, Flags: {flags}")sniff(filter="tcp", prn=packet_handler)
  • 实例二:捕获TCP包并保存到本地 ,在本地分析包
from scapy.all import sniff
from scapy.utils import wrpcap# 捕获10个TCP包
packets = sniff(filter="tcp", count=10)# 保存到本地文件captured_packets.pcap
wrpcap("captured_packets.pcap", packets)

然后对这个离线包进行解析分析报文

from scapy.all import rdpcap
from scapy.layers.inet import IP, TCPdef packet_handler(packet):if packet.haslayer(TCP) and packet.haslayer(IP):src_ip = packet[IP].srcdst_ip = packet[IP].dstsrc_port = packet[TCP].sportdst_port = packet[TCP].dportflags = packet[TCP].flagsprint(f"Source IP: {src_ip}, Destination IP: {dst_ip}, Source Port: {src_port}, Destination Port: {dst_port}, Flags: {flags}")# 从文件读取数据包
packets = rdpcap("captured_packets.pcap")# 处理每个数据包
for packet in packets:packet_handler(packet)

9. 学习资源与实践

官方文档
  • Scapy 官方文档和教程
书籍
  • 《Scapy 网络安全》
在线课程
  • Udemy、Coursera 等平台的 Scapy 课程
实践项目
  • 捕获与分析网络流量
  • 实现网络扫描器
  • 开发自定义网络工具

通过这些知识点的学习和实践,可以全面掌握 Scapy 的使用,并应用于各种网络安全与数据包操作的任务中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/50556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DNS应用以及扩展知识

(一)DNS正向代理 1.首先在DNS服务器上安装bind包,安装环境 此部分参考上一个笔记 2.修改配置文件 vim /etc/named.conf 在配置文件中加上"any;" 3.然后配置/etc/named.rfc1912.zonesw文件 添加选中部分 选中部分有一个file文…

instanceof介绍及手写instanceof

instanceof 是 JavaScript 中的一个操作符,用于检测一个对象是否在其原型链上有构造函数 prototype 属性。换句话说,instanceof 用来判断一个变量是否是一个特定构造函数的实例。 当你使用 instanceof 操作符时,它会检查左边操作数的原型链中…

c++中的斐波那契数列(Fibonacci Sequence)和背包问题(Knapsack Problem)

前言 hello,大家好啊,我是文宇,不是文字,是文宇哦。 斐波那契数列(Fibonacci Sequence) 斐波那契数列(Fibonacci Sequence)是一个经典的数学问题,其中每个数都是前两个…

24年第三届钉钉杯大学生大数据挑战赛浅析

需要完整资料,请关注WX:“小何数模”! 本次钉钉杯大数据挑战赛的赛题已正式出炉,无论是赛题难度还是认可度,该比赛都是仅次于数模国赛的独一档,可以用于国赛前的练手训练。考虑到大家解题实属不易&#xf…

气膜足球馆:经济高效的室内足球场馆解决方案—轻空间

如果你有一片足球场,想要建一个室内的足球馆,为什么不考虑一下气膜建筑呢?气膜建筑以其独特的优势和高性价比,成为现代体育场馆建设中的一匹黑马。它不仅具有传统建筑无法比拟的经济效益和快速施工优势,还在智能控制、…

vue实现电子签名、图片合成、及预览功能

业务功能:电子签名、图片合成、及预览功能 业务背景:需求说想要实现一个电子签名,然后需要提供一个预览的功能,可以查看签完名之后的完整效果。 需求探讨:后端大佬跟我说,文档我返回给你一个PDF的oss链接…

7.27扣...

知识点补充: 1.StringBuilder StringBuilder 类在 Java 中是一个可变字符序列。与 String 类不同,StringBuilder 可以在创建之后被修改。这意味着你可以向 StringBuilder 对象追加、插入或删除字符,而不需要创建新的对象(辅助数…

企业公户验证API如何使用JAVA、Python、PHP语言进行应用

在纷繁复杂的金融与商业领域,确保每笔交易的安全与合规是至关重要的。而企业公户验证API,正是这样一位默默守护的数字卫士,它通过智能化的手段,简化了企业对公账户验证流程,让繁琐的审核变得快捷且可靠。 什么是企业公…

chrome浏览器驱动(所有版本)

chrome浏览器驱动 114之前版本 https://chromedriver.storage.googleapis.com/index.html 125以后 125以后版本下载链接在此,只有后面status是绿色对勾的才可以下载,驱动大版本一致就可以使用,不需版本号一模一样;下载所需版本只…

语言转文字

因为工作原因需要将语音转化为文字,经常搜索终于找到一个免费的好用工具,记录下使用方法 安装Whisper 搜索Colaboratory 右上方链接服务 执行 !pip install githttps://github.com/openai/whisper.git !sudo apt update && sudo apt install f…

在appium中,如何通过匹配图片来进行断言?

在Appium中进行图片匹配断言,可以使用OpenCV来实现。以下是使用Appium和OpenCV进行图片匹配断言的示例代码。 首先,需要确保安装了必要的库: pip install opencv-python-headless pip install opencv-python pip install numpy然后&#xf…

【区块链+绿色低碳】绿色电力分布式身份管理系统 | FISCO BCOS应用案例

目前,绿色电力场景在身份管理方面存在一些痛点,如:绿色电力交易场景中,主体地理位置分散,主体类型(人、机、 物)差异较大,主体身份认证和管理方式要求差异较大;在着力发展…

高性能 Java 本地缓存 Caffeine 框架介绍及在 SpringBoot 中的使用

在现代应用程序中,缓存是一种重要的性能优化技术,它可以显著减少数据访问延迟,降低服务器负载,提高系统的响应速度。特别是在高并发的场景下,合理地使用缓存能够有效提升系统的稳定性和效率。 Caffeine 是一个高性能的…

《程序猿入职必会(4) · Vue 完成 CURD 案例 》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

Eclipse的一些使用

出错的原因: eclipse中,当声明了变量,没有进行初始化,然后在方法中引用该变量的时候,就会报出如下错误: The local variable XXX may not have been initialized意思是该变量没有进行初始化,解决这个错误就…

【C++刷题】优选算法——队列+宽搜

N 叉树的层序遍历 vector<vector<int>> levelOrder(Node* root) {vector<vector<int>> ret;if (root nullptr) return ret;queue<Node*> q;q.push(root);ret.push_back({root->val});int size 1;while (!q.empty()) {vector<int> v…

【机器学习】Jupyter Notebook如何使用之基本步骤和进阶操作

引言 Jupyter Notebook 是一个交互式计算环境&#xff0c;它允许创建包含代码、文本和可视化内容的文档 文章目录 引言一、基本步骤1.1 启动 Jupyter Notebook1.2 使用 Jupyter Notebook 仪表板1.3 在笔记本中工作1.4 常用快捷键1.5 导出和分享笔记本 二、进阶用法2.1 组织笔…

CSS性能优化:从加载速度到渲染效率的全方位提升

在快节奏的互联网环境中&#xff0c;网页的加载速度和渲染效率直接关系到用户体验和搜索引擎排名。CSS作为网页样式的主要描述语言&#xff0c;其性能优化同样不容忽视。本文将介绍一系列CSS性能优化的策略&#xff0c;帮助开发者从加载速度到渲染效率实现全方位的提升。 1. 压…

从零开始学习网络安全渗透测试之基础入门篇——(二)Web架构前后端分离站Docker容器站OSS存储负载均衡CDN加速反向代理WAF防护

Web架构 Web架构是指构建和管理Web应用程序的方法和模式。随着技术的发展&#xff0c;Web架构也在不断演进。当前&#xff0c;最常用的Web架构包括以下几种&#xff1a; 单页面应用&#xff08;SPA&#xff09;&#xff1a; 特点&#xff1a;所有用户界面逻辑和数据处理都包含…

vscode container

附加到已有容器 终端进程“/sbin/nologin”启动失败(退出代码: 1)。 原因是因为默认vscode container 使用default 这个用户进行登陆。而这个default 是使用shell 的&#xff08;在/etc/passwd中配置&#xff09;。我们要修改vscode 行为&#xff0c;添加默认的bash 终端启动…