序
之前看一些大神都有自己写的pwn题写exp用的python库,想着自己也写一个自用,方便exp的编写
虽然不是什么好东西,也只有几行简单的代码,但本着开源分享的原则,今天研究了一下传到pypi上了
23年暑假写的时候正在狂刷fate,然后直接粉上吾王,于是给库其名为Excalibur。至于为什么有个2 ,传的时候发现重名了……
此博客记录一下这个库的上传和维护过程。
中文文档
Excalibur2
Description
一个打pwn的ctfer的简单集成库
本Python库收录了常见的PWN题函数,旨在简化pwn题中脚本编写的过程呢个,帮助广大pwner节约时间,提高解题效率
十分欢迎各位师傅使用Excalibur,同时欢迎对鄙人的代码提出意见和指导
Install
安装
pip3 install Excalibur2
检查是否有更新版本
python3 -m Excalibur2.__update__
更新
pip3 install Excalibur2 –upgrade
Help
Python内置帮助
python3 -m pydoc Excalibur2
查看帮助文档
import Excalibur2
help(Excalibur2)
查看函数帮助
from Excalibur2 import *
help(function)
more details Please visit https://lmarch2.top/posts/8c945bd4/
Release
2.4, Feb 8, 2024
contextset更名为setcontext
新增prhl函数
proc默认参数设置为./pwn
添加自动计算有基址的地址
修复了csu和ropgadget函数bug
修改部分alias
翻译成英文,txt格式
2.2, Feb 8, 2024
修复了一些由包名称引起的问题
2.1, Feb 8, 2024
支持自定义调试终端,添加检查更新功能
2.0, Feb 8, 2024
本包诞 生之日
将Python库打包至pypi时遇到的坑
2FA验证
首先你需要在pypi上创建账户(testpypi上也是,两个网站服务器相互独立),接着使用TOTP APP身份验证,我选择的是FreeOTP,并且选择在f-droid上下载(安卓手机,没有谷歌商店,懒得编译源码)
步骤
一种使用pyproject.toml,一种使用setup.py,这里跟着官方教程选择pyproject.toml
步骤官方文档里写的很清楚,这里不再赘述,简单来说就是创建如下目录和文件
packaging_tutorial/
├── LICENSE
├── pyproject.toml
├── README.md
├── src/
│ └── example_package_YOUR_USERNAME_HERE/
│ ├── __init__.py
│ └── example.py
└── tests/
强烈建议照着官方教程先在testpypi测试平台上检测上传是否无误,无误后再转战pypi
API令牌验证上传
创建API token(保存好)
执行命令python3 -m build
python3 -m twine upload dist/*
提示输入用户名——__token__
输入密码——刚刚的API秘钥
版本管理
更新版本之后,可以build之后再dist文件夹下创建以版本号为名称的文件夹,把压缩包和whl放到对应文件夹下,上传的时候记得修改路径和pyproject.toml里的版本号
源码
源码有点冗长,不在此占用空间,详见GitHub
https://github.com/lmarch2/Excalibur2
Others
顺便记录一下颜色转义码
定义 ANSI 转义码
- RED = ‘\033[91m’
- GREEN = ‘\033[92m’
- YELLOW = ‘\033[93m
- BLUE = ‘\033[94m
- MAGENTA = ‘\033[95m
- CYAN = ‘\033[96m’
- RESET = ‘\033[0m’
colored_text = Color.RED + text + Color.RESET