首页 > 编程问答 >Python、Scapy 并导出到 .exe

Python、Scapy 并导出到 .exe

时间:2024-07-27 08:56:43浏览次数:6  
标签:python pyinstaller scapy

目前我会玩一点 scapy、Qt 和 python。到目前为止,使用 VSC 启动程序时一切正常。 现在我尝试使用 PyInstaller 制作 .exe。它也有效,我得到了一个 .exe 文件,可以打开它并显示我的 Qt-Windows。但是当我使用 scapy 函数时,程序崩溃,没有任何消息,并且窗口关闭。 我激活了日志记录并发现,每当我们到达以下代码行时,程序都会崩溃:

ans, unans = sr(query, timeout=5)

使用此行应该发送存储在查询变量中的 DNS 数据包。这一步仅在 exe 中失败。

这些是我的 scapy-imports:

from scapy.layers.inet import IP, UDP
from scapy.layers.dns import DNS, DNSRR, DNSQR, DNSRROPT
from scapy.sendrecv import sr
from scapy.all import get_if_addr, conf

这是我用于构建 .exe 的命令行:

-m PyInstaller --onefile -w --exclude=PySide6 --hidden-import=scapy.layers.dns --hidden-import=scapy.layers.inet --hidden-import=scapy.sendrecv --hidden-import=scapy.all
 --hidden-import=PyQt6 .\main.py

任何人有任何想法吗? 我很迷失,这是我尝试构建 exe 的第一个应用程序..

非常感谢! 丹尼斯


将 Scapy 与 PyInstaller 一起使用打包成 .exe 文件可能会很棘手,因为 Scapy 依赖于在运行时加载的低级网络功能。 sr() 函数(用于发送和接收数据包)尤其容易出现此类问题。以下是一些可能解决方案的故障排除步骤:

  1. 使用 --onefile 时要小心: 尽管 --onefile 创建了一个整洁的单一可执行文件,但它有时会使调试依赖关系变得更加困难。首先使用 --onedir 选项构建一个目录包。如果这样可行,可以稍后再进行 --onefile 的故障排除。

  2. 明确导入 winpcap Scapy 在 Windows 上使用 winpcap 库进行数据包捕获。PyInstaller 可能无法自动检测到此依赖项。尝试明确导入:

python import scapy.all # 你的其他 scapy 导入 import scapy.arch.windows # 显式导入 winpcap 相关模块

  1. 以管理员身份运行: Scapy 中的原始套接字操作和数据包注入通常需要管理员权限。尝试以管理员身份运行你的 .exe 文件,看看是否能解决问题。

  2. 检查 PyInstaller 版本和挂起的更新: 旧版本的 PyInstaller 过去在处理 Scapy 时存在已知问题。确保你使用的是最新版本的 PyInstaller 和 Scapy。

  3. 详细的 PyInstaller 日志记录: 为 PyInstaller 启用更详细的日志记录,以帮助查明问题。使用 --log-level=DEBUG 选项运行 PyInstaller。日志文件(build 文件夹中)可能包含有关崩溃原因的线索。

  4. 使用 tcpdump 或 Wireshark 进行测试: 要隔离问题是否与数据包发送本身有关,请尝试使用 tcpdump 或 Wireshark 等外部工具在发送数据包时监控你的网络接口。这可以帮助你确定你的应用程序是否真的在发送数据包。

  5. 简化并逐步测试: 从最小的 Scapy 示例开始,逐步向你的应用程序添加更多功能。这可以帮助你查明哪个特定部分导致了问题。

如果在尝试了这些步骤后问题仍然存在,请提供以下附加信息,以便我进一步帮助你:

  • 你正在使用的 Python、Scapy 和 PyInstaller 的确切版本。
  • 完整的 PyInstaller 构建日志。
  • 你的 sr() 函数调用的更完整的代码片段,包括 query 变量的定义。

祝你好运,不要犹豫,如有任何其他问题,请告诉我!

标签:python,pyinstaller,scapy
From: 78797985

相关文章

  • 使用 python 检测鼠标是等待还是忙碌
    我正在用Python2.7创建一个脚本。该脚本在应用程序内自动执行鼠标单击。有一些情况,在单击鼠标后,鼠标光标将“等待”,我想等到鼠标光标恢复正常后再进行操作我进入代码中的下一步。Python中是否可以检测鼠标是否正在等待?在Python中没有内置方法可以检测......
  • ValueError:在带有 GATT 的 Python 中,以 16 为基数的 int() 的文字无效:b'0f 18 '
    我正在使用Python和GATT库pxexpect来处理一些数据,但在尝试将十六进制值转换为整数时遇到问题。这是我看到的具体错误:print(int(gatt.before,16)),^^^^^^^^^^^^^^^^^^^^ValueError:invalidliteralforint()withbase16:b'0f18'这是产生错误的代......
  • 我看不懂这个python脚本?
    用于加载.dat文件的Python脚本importcsvfromdjango.core.management.baseimportBaseCommandfromrecommender.modelsimportUser,Artist,Tag,UserArtist,UserTaggedArtist,UserFriendimportosfromdjango.confimportsettings#Definethepathtothedatab......
  • 使用操作系统工具通过 Python 3 扫描图像
    我正在使用python构建一个应用程序,它需要能够连接到扫描仪并处理生成的pdf/jpeg/其他文件中的数据。我一直在尝试找到一种连接到扫描仪以请求扫描的方法,但没有真正的进展。我已经查看了我能找到的所有选项,包括这个答案:我想连接我的图像扫描仪程序我发现的大多......
  • Python,pandas从字符串中解析数字和字符串
    在Python中,我想解析一个字符串并将数字部分(可能有也可能没有小数点)作为浮点数返回,并将后缀作为字符串返回。示例为:7.1英寸->7.1,英寸7.1”->7.1,“7英寸->7.0,英寸-10dB->-10.0,dB-10.2dB->-10.2,dB数字部分和后缀之间没有空格。另外,我想将其应......
  • 如何在 Python 中加载站点的所有资源,包括 AJAX 请求等?
    我知道如何使用Python请求网站并读取其文本。过去,我曾尝试使用像BeautifulSoup这样的库来发出对网站上链接的所有请求,但这并没有得到看起来不像完整URL的内容,例如AJAX请求和大多数对原始域(因为“http://example.com”将丢失,更重要的是,它不是<ahref='url'>......
  • 使用Python进行PDF旋转
    使用python旋转扫描的pdf后,它工作得很好,但将pdf发送给第三方后,第三方仍然将pdf检测为90度pdf有什么办法可以解决旋转和这个问题importPyPDF2withopen('input.pdf','rb')asfile:#CreateaPDFreaderobjectreader=PyPDF2.PdfReader(file)......
  • Python win32serviceutil QueryServiceStatus:返回值是什么意思?
    我正在学习使用pywin32,并尝试在64位Python3.6.4上使用win32serviceutil模块以下代码:importwin32serviceutilasserviceserviceStatus=service.QueryServiceStatus("WinDefend")print(serviceStatus)返回以下元组:(16,4,197,0,0,0,0)我对wind......
  • Python request-html 未下载 Chromium
    importrequestsfrombs4importBeautifulSoupfromrequests_htmlimportHTMLSessionurl="https://dmarket.com/ingame-items/item-list/csgo-skins?title=recoil%20case"sesion=HTMLSession()response=sesion.get(url)response.html.render()soup=B......
  • VS Code 不改变 python 环境
    我正在使用VS-Code和anaconda环境作为python解释器。我通过ctrl+shift+`选择准确的anaconda基础环境,它也反映在vscode的下侧面板中。但是,当我检查python版本时,它显示我系统的默认python环境3.7.9如果您看到下面的截图,anaconda环境是3.......