Python脚本debug-切包

本文介绍了一个Python脚本的调试过程,该脚本用于根据表格内容和流量包进行流量包的切分。文章详细记录了从无法运行到解决各种问题,最终实现正确输出的全过程。

Python脚本debug 切包

过程总结:

拿到了脚本,发现无法运行输出内容,说明也写的非常模糊,脚本要实现的功能是根据一个对应的表格内容和流量包,对流量包进行切分,分为各个漏洞的对应的包

开始debug

1、梳理各部分函数功能与内容

主函数:
在这里插入图片描述分析:
Pcap_dir = sys.argv[1]
sys.argv[]:读取运行时命令行输入的参数
命令行输入时可以输入一个文件夹或者一个pcap结尾的流量包,输入文件夹时会寻找文件夹中的pcap结尾的流量包,然后一个个遍历,进行read函数的操作,如果输入单个包,直接进行read

read函数:
在这里插入图片描述在这里插入图片描述
read函数是主要功能,将表格和流量包的内容生成字典,key为Ip流

然后进行write

write函数:
在这里插入图片描述生成一个pcap包名+_ip的文件夹,如果已经存在就删除(shutil.rmtree),里面存放切好的包

判断两个字典是否有交集,如果有,以漏洞名为包名输出,循环

2、出现的问题解决

1、无输出内容

经过在各个函数部分进行print输出操作后,发现是两个字典没有交集,然后将代码改成了
在这里插入图片描述
此时有了输出,但是包里的IP与表格是无法对应的,经群里大佬指点,才理解这是对字典的交集判断,而不是普通的判断循环。接下来就尝试输出了字典的Key,发现Ip对应不上,查找read函数中关于key和Ip的定义
在这里插入图片描述
row[7]和row[8]并不是表格中对应的Ip值,统一改成row[8]和row[9]后成功输出

2、输出的包数和表格内漏洞的数量对应不上

经过大致浏览表格中的名称,发现有重复名称,经过输出字典内容查看,发现字典中由于key不同,是可以存在同一个名称的漏洞内容,所以问题是出在输出文件时,由于名字重复所以会有覆盖的情况
在这里插入图片描述
进行更改。在此之前,有另一个想法是在生成表格字典时,对表格先进行处理,如对重复的文件进行重命名,然后尝试了一堆操作,可以成功更改并输出,但是由于表格列数众多,最后选择直接改输出的函数
在这里插入图片描述进行修改,但是输出包时数量还是有误,经判断发现表格里有重复三四次名称的文件,这样修改依旧不能全部输出,最后改为如下:
在这里插入图片描述
但是此时仍然数量对应不上,由于给的例子数量众多(1500),先进行了少量筛选,找到一个没有输出的包,然后删除大部分数据,留存了一个没有输出的包和两个重复名称和两个正常输出的包进行试验。对这些包的字典进行打印,查看key值,发现是Ip方向相反,流量包中第一个请求包的方向存在正反两个方向,只有正向的可以输出,询问需求后决定写成两个脚本,正反各运行一次然后合并,反向的只要将Ip方向对调即可

此时仍有一个数量对应不上,1500个中只输出了1499个包
将表格名称与输出的包的名称全部输入到两个txt中,文件夹中所有文件名称输出:dir /b *.pcap > 1.txt
用beyond compare进行对比,找到了没有输出的漏洞的包,在流量包中寻找对应IP,发现没有,所以脚本已经完成没有问题
将debug过程中没有必要的文件删除,在文件中重点处编写注释,并重新编写了使用说明,打包,到此完成。
脚本文件放在:https://github.com/Kamimuka/cut-pacp

<think>首先,用户的问题是关于使用 python-for-android 将项目打成 apk 的方法,特别提到了教程。我需要参考系统提示中的引用部分,但系统提示说:"上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。" 不过,用户上一次的问题没有被提供在这个对话中。看上下文,这是第一个用户消息,所以我应该专注于当前的问题。 系统提示中的引用: - 引用[1]:介绍了 python-for-android(p4a),由 Kivy 团队开发,用于将 Python 应用打成 APK,可通过四步完成。 - 引用[2]:提到通过 p4a 打 APK 的步骤,括目录结构和命名要求(main.py)。 用户的问题是:"我想了解使用python-for-android将项目打成apk的方法 请问使用python-for-android打apk的教程" 所以,我需要提供一个教程式的回答,结构清晰,步骤分明。最好基于系统提示中的信息,但要扩展成一个完整的教程。 系统级指令: - 所有行内数学表达式用 $...$(但这里可能不涉及数学,所以可能不需要)。 - 独立公式用 $$...$$(同样,可能不适用)。 - LaTeX 语法正确(如果使用)。 - 使用中文回答。 - 生成相关问题(在回答结束后添加相关问题)。 - 引用的段落末尾添加引用标识,如 [^1]。 回答结构应清晰,帮助用户逐步解决问题。 大纲回答: 1. **介绍 python-for-android(p4a)**:简要解释什么是 p4a 以及它的用途(基于引用[1])。 2. **前提条件**:列出用户需要安装的东西(如 Python、Kivy 等)。 3. **打步骤**:基于引用中的四步完成,详细展开。 - 引用[1] 说:"打工作可通过四步来完成",但没具体说哪四步。引用[2] 给出了一些细节: - 测试目录结构(如 /home/kivydev/test)。 - Py 文件必须命名 main.py。 - 编译前测试。 - 我应该提供一个通用的教程步骤。标准 p4a 步骤通常括: - 安装 p4a。 - 创建项目。 - 构建 APK。 - 测试。 4. **详细步骤**: - 步骤1: 安装 python-for-android。 - 步骤2: 准备项目(确保 main.py 存在)。 - 步骤3: 使用 p4a 命令打- 步骤4: 测试生成的 APK。 5. **注意事项**:如引用[2]提到的,文件必须命名为 main.py;不同 Python 版本等。 6. **结束语**。 7. **生成相关问题**。 添加引用:在回答中引用部分添加 [^1] 和 [^2]。 最终回答: - 用中文。 - 结构清晰。 - 末尾添加相关问题。 相关问题: - 基于用户查询,生成 2-3 个相关问题。 例如: 1. 如何优化打过程? 2. 如何处理依赖库? 3. Python for Android 的限制是什么? 为了准确,我回想一下 p4a 的标准流程: - 安装:pip install python-for-android - 创建项目:p4a create ... - 构建:p4a apk ... 但引用中说 Kivy 团队开发,所以可能需要 Kivy。 基于引用[2],步骤括: - 进入目录。 - 确保 main.py。 - 测试脚本- 然后打。 所以,教程步骤: 1. 安装 python-for-android 和相关依赖。 2. 准备你的 Python 项目,确保有一个 main.py 入口文件。 3. 测试你的脚本是否能正常运行。 4. 使用 p4a 命令打成 APK。 详细化。 </think>### 使用 python-for-android 将 Python 项目打成 APK 教程 python-for-android(简称 p4a)是一个由 Kivy 团队开发的开源工具链,用于将 Python 应用打为能在 Android 设备上运行的 APK 文件[^1]。它特别适合处理依赖库复杂的 Python 项目(如 Kivy、Pygame 等)。下面我将提供一个清晰的、逐步的教程,基于官方文档和引用内容。整个过程分为四个主要步骤:安装环境、准备项目、打 APK 和测试。在执行前,请确保你的系统已安装: - Python 3.6+(推荐 Python 3.7 或更高); - Java JDK 8+(用于 Android SDK); - Android SDK 和 NDK(可通过 Android Studio 安装); - pip 工具。 #### 步骤 1: 安装 python-for-android 首先,通过 pip 安装 p4a 。打开终端(Linux/macOS)或命令提示符(Windows),运行以下命令: ```bash pip install python-for-android ``` 这将安装最新版本的 p4a。安装完成后,验证是否成功: ```bash p4a --version ``` 如果输出版本号(如 `0.4.0`),表示安装正确。注意,p4a 依赖于 Kivy 或其他库,但你可以只为命令行工具安装它[^1]。 #### 步骤 2: 准备你的 Python 项目 创建一个项目目录,并确保你的主入口文件命名为 `main.py`(这是 p4a 的强制要求,否则打会失败[^2])。项目结构应如下: ``` /my_project/ ├── main.py # 主入口文件,含你的应用代码 ├── requirements.txt # 可选:列出依赖库,如 kivy, numpy └── assets/ # 可选:存放图像、声音等资源文件 ``` 示例 `main.py`(简单 Kivy 应用): ```python import kivy from kivy.app import App from kivy.uix.label import Label class MyApp(App): def build(self): return Label(text="Hello, Android!") if __name__ == "__main__": MyApp().run() ``` 在打前,必须先测试脚本是否能正常运行(确保无语法或依赖错误)[^2]: ```bash python main.py ``` 如果应用正常启动(如显示窗口),说明项目准备好。 #### 步骤 3: 使用 p4a 打成 APK 运行 p4a 命令打。命令的基本格式为: ```bash p4a apk --private /path/to/your/project --package=com.example.myapp --name "MyApp" --version 1.0 --requirements python3,kivy ``` 参数解释: - `--private`: 指定项目路径(如 `/home/user/my_project`)。 - `--package`: 设置应用唯一 ID(格式:com.yourdomain.appname)。 - `--name` 和 `--version`: 应用名称和版本号。 - `--requirements`: 列出依赖库(如 `python3,kivy,numpy`;必须含 `python3`,否则默认 Python 2)。 例如,如果你的项目在 `/home/user/my_project`: ```bash p4a apk --private /home/user/my_project --package=com.example.hello --name "HelloApp" --version 1.0 --requirements python3,kivy ``` 打过程可能需要 10-30 分钟(取决于依赖大小),首次运行会下载 Android SDK/NDK 组件。APK 文件生成在项目目录的 `bin/` 子文件夹中(如 `/home/user/my_project/bin/HelloApp-1.0-debug.apk`)。 #### 步骤 4: 测试生成的 APK 将 APK 文件传输到 Android 设备: - 通过 USB 连接设备,启用开发者模式(设置 > 关于手机 > 点击版本号 7 次)。 - 使用 ADB 安装: ```bash adb install /path/to/apk/HelloApp-1.0-debug.apk ``` - 或在设备文件管理器中直接打开 APK 安装。 运行应用测试功能是否正常。如果遇到崩溃,检查日志: ```bash adb logcat | grep python ``` #### 注意事项 - **文件命名**: 必须使用 `main.py` 作为入口文件,否则打失败[^2]。 - **Python 版本**: p4a 支持 Python 2.7 和 3.x,但推荐 Python 3.x(命令中用 `--requirements python3`)[^2]。 - **依赖管理**: 复杂依赖(如 PIL 或自定义库)需在 `requirements.txt` 列出,并在命令中指定。 - **常见问题**: -失败?确保 Android SDK 和 NDK 路径正确设置(通过 `export ANDROIDSDK=/path/to/sdk`)。 - 应用启动慢?优化代码或减少依赖大小。 - **优化建议**: 对于生产环境,添加 `--release` 参数生成签名 APK(需 Keystore)。 通过以上步骤,你可以高效地将 Python 项目转换为 Android APK。p4a 支持多种框架(如 Kivy、PyQt),但 Kivy 应用兼容性最佳[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值