![image](https://private-user-images.githubusercontent.com/39737245/262547901-f20db515-4e9e-4c4d-aec9-ed4a310a0f34.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTQ2MDQyMTksIm5iZiI6MTcxNDYwMzkxOSwicGF0aCI6Ii8zOTczNzI0NS8yNjI1NDc5MDEtZjIwZGI1MTUtNGU5ZS00YzRkLWFlYzktZWQ0YTMxMGEwZjM0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA1MDElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNTAxVDIyNTE1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWU2NGE4NjIyMmQ4MTQwMWJkZGFhOGFmMzA0NjliYTBkYzJlMDEwNTBkY2I1MTY3NjExZjgyNTA2NjY1YWNkNDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.pkpsg2aOi7EAoJDwAF0pK_czptmH6MJGBtdhOulMnJs)
Xtools 是一款 Sublime Text 插件,同时是一款简单的资产处理工具,在渗透测试实战过程中,有很多重复的操作,所以思考着写一款小工具来减少重复的劳动。
日常渗透中使用过一款资产文本清洗工具,使用起来感觉不错,并且添加了一些额外功能和修改了暗黑主题,在此感谢 xinyu2428 师傅。
https://github.com/xinyu2428/HTML_TOOLS
在日常使用过程中,总感觉缺少了点什么。思考着继续补充 javascript 代码,发现无法和命令行进行交互,遂放弃。一番挣扎过后,发现很多时候都在使用 Subliem Text 编辑器,嗯,最后的思路就是集成在 Sublime Text 插件。这样一来,同时减少了很多的 ctl+c 和 ctl+v。
![1](https://private-user-images.githubusercontent.com/39737245/252866724-e3f15d93-f6c7-4baf-9d44-ca01dfbab00d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTQ2MDQyMTksIm5iZiI6MTcxNDYwMzkxOSwicGF0aCI6Ii8zOTczNzI0NS8yNTI4NjY3MjQtZTNmMTVkOTMtZjZjNy00YmFmLTlkNDQtY2EwMWRmYmFiMDBkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA1MDElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNTAxVDIyNTE1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTE2MTgwZTJkMDY2Y2IyNjMzZTIwMmU3ZDlhZWZkOTA4Y2Q2ZTNlMDEzNTA4ZjM2ZGY5OWY5ZGU4OWMyZDg1YmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Y4CD7Z8nJ-n6ET5z1MmL8jFC4fccfQELJgOepgkSXdM)
- IP、domain、url 处理
- 提取 IPv4 (内网、外网、IP段)
- IPv4 和 C 段互转
- 提取 domain(根域名、根域名|子域名)
- 提取 url(有路径、无路径)
- 提取 router(js、text)
- 过滤 CDN 和 DNS 域名和IP(需补充域名和IP)
- 简单文本处理
- 删除特殊字符、空格、
[*]
、(*)
(* 表示括号内的所有内容) - 按行提取指定内容
- 按行删除指定内容
- 替换指定字典的 key 和 value
- 删除特殊字符、空格、
- 简单编码和解码
- base64 编码和解码
- url 编码和解码
- md5 加密
- 调用系统命令执行
- curl 下载文件
- sqlmap
- ......(自行配置)
- 整理工具扫描结果
- 转换 nmap|masscan xml结果为 host:port 格式
- 整理和分类 fscan 扫描结果
- 整理和高亮 httpx 和 nuclei 扫描结果
- 渗透测试辅助模块
- 返回文件上传数据包,方便测试文件上传接口
- 提供反弹 shell 命令生成
- 在文本中提取 IP。
- 按行进行 base64 编码。
- 按字典进行 key 和 value 替换。
- 打开终端调用 sqlmap。
- curl 批量下载文件,会在桌面自动创建 work 文件夹,并保存下载结果。
- 在处理需要输入时,选择 Input Text 即可打开输入框。
选择 Setting Config 即可打开配置文件,并在注释的范围内添加需要的系统命令。统一格式为 "args": {"cmd":"sqlmap -r target.txt"}
, 比如 slqmap,httpx,nuclei、dirscan 对应不同字典。
/* 通过 <args->cmd> 设置命令, 设置目标为 target.txt, 运行时自动替换为临时文件
eg: httpx -l target.txt
*/
{
"caption": "httpx [GET]",
"command": "run_cmd",
"args": {"cmd":"httpx -x GET -sc -title -l target.txt"}
},
{
"caption": "httpx [POST]",
"command": "run_cmd",
"args": {"cmd":"httpx -x POST -sc -title -l target.txt"}
},
{
"caption": "nuclei",
"command": "run_cmd",
"args": {"cmd":"nuclei -l target.txt"}
},
{
"caption": "sqlmap",
"command": "run_cmd",
"args": {"cmd":"sqlmap -r target.txt"}
},
{
"caption": "dirscan (dir1.txt)",
"command": "run_cmd",
"args": {"cmd":"dirscan -w /.../dicts/dir1.txt -l target.txt"}
},
{
"caption": "dirscan (dir2.txt)",
"command": "run_cmd",
"args": {"cmd":"dirscan -w /.../dicts/dir2.txt -l target.txt"}
},
/* -- END -- */
/* 通过 <args->cmd> 设置命令, 设置目标为 target.txt, 运行时自动替换为临时文件
eg: httpx -l target.txt
*/
{
"caption": "httpx",
"command": "run_cmd",
"args": {"cmd":"C:\\Users\\kali\\httpx\\httpx -sc -title -l target.txt"}
},
/* -- END -- */
比如配置 httpx 命令,或者把 httpx 命令添加到环境变量。
![image](https://private-user-images.githubusercontent.com/39737245/253837092-ecc36edb-c1d0-40d2-907c-7fd90bce36ac.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTQ2MDQyMTksIm5iZiI6MTcxNDYwMzkxOSwicGF0aCI6Ii8zOTczNzI0NS8yNTM4MzcwOTItZWNjMzZlZGItYzFkMC00MGQyLTkwN2MtN2ZkOTBiY2UzNmFjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA1MDElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNTAxVDIyNTE1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWU0NDVjNDY2YThiZDdlOWJjZmZkYjFiMzIwZDcwNmUyZTA4ODAxOTgxODdkYTBjYmM5OWU2MjAwNTk1ZmZhM2UmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.AM9JTPR5xjhzXVtJb-OsUgh3MgYT8QKHFSRHIct8UXE)
按照 ip:port、web-poc、weak-password、web-info 等分类 fscan 的结果,且对部分结果进行颜色处理,方便浏览。
![image](https://private-user-images.githubusercontent.com/39737245/324456654-3c581ae2-bcc9-4e67-8fd4-63dda6645d13.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTQ2MDQyMTksIm5iZiI6MTcxNDYwMzkxOSwicGF0aCI6Ii8zOTczNzI0NS8zMjQ0NTY2NTQtM2M1ODFhZTItYmNjOS00ZTY3LThmZDQtNjNkZGE2NjQ1ZDEzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA1MDElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNTAxVDIyNTE1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU1ZmRkMDVmOTE0N2RhNWVhYjM5M2ZjYTZiMmRmOTdlNmNlZDY0NTk3M2IxYjBlYTczNjkxMDhmOTkwOTQ5MDUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.eHXMRS4_1U0zCLqIdpO1mIINUadeL4fCtVFICPAiIp8)
web 相关信息按照状态码进行排序、指纹信息标红处理、弱口令分类处理等。
![image](https://private-user-images.githubusercontent.com/39737245/324460180-02aca0de-9cb3-4b15-aaac-d92b3f70b9b7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTQ2MDQyMTksIm5iZiI6MTcxNDYwMzkxOSwicGF0aCI6Ii8zOTczNzI0NS8zMjQ0NjAxODAtMDJhY2EwZGUtOWNiMy00YjE1LWFhYWMtZDkyYjNmNzBiOWI3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA1MDElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNTAxVDIyNTE1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFhMjIxM2Y1ZmY4YTgzNGY3MDA5ZDMyOTJhOWIwNTQwYjE5MDlkZTNhNTQ2ZGIwMGUxNTcxNDk3ZGQ2M2JjNjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.AWbA1cK-ZgPLmrwkNxxZsTAYjyHZ5nXvvUG_dO64bGM)
httpx|nuclei 工具的扫描结果保存在 txt 文件中,在二次查看时,总是白茫茫一遍,容易错过重点资产,因此对相关信息进行排序和高亮处理,提高浏览的舒适性。
![image](https://private-user-images.githubusercontent.com/39737245/324463353-02a9fb31-5f82-4029-9edc-9d8464ddc679.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTQ2MDQyMTksIm5iZiI6MTcxNDYwMzkxOSwicGF0aCI6Ii8zOTczNzI0NS8zMjQ0NjMzNTMtMDJhOWZiMzEtNWY4Mi00MDI5LTllZGMtOWQ4NDY0ZGRjNjc5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA1MDElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNTAxVDIyNTE1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM4MjI5Y2Y1MTQzZjQxYjQ1OTUzNDk3M2NlOGRmNTkwOGZiMmNjZTYzMDIzZTdjOWYwZjgxZWFmNjNhZGM5YzMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.h4jH90pTffuIZZjDul9sdtc7r8eivMWHSQkh6YP7drA)
![image](https://private-user-images.githubusercontent.com/39737245/324465765-e956e7e1-567e-458c-a877-3c4f7b9993d6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTQ2MDQyMTksIm5iZiI6MTcxNDYwMzkxOSwicGF0aCI6Ii8zOTczNzI0NS8zMjQ0NjU3NjUtZTk1NmU3ZTEtNTY3ZS00NThjLWE4NzctM2M0ZjdiOTk5M2Q2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA1MDElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNTAxVDIyNTE1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ5NTVlZTRiMTJlM2M2NTYyMjY1M2YyMDNkNGJkZjY0MDQ4ZTdhMWM1MWE0NzM4M2Y4ODdiZmU5MDg4OGE5YjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.TUHshpRByUWbxHfobd_h79UOLWw92xLsFZqC8NPQrE8)
下载源码,github 下载后文件名 Xtools-main.zip,解压后需重命名为 Xtools,否则可能某些路径出错。
进入到 Sublime Text 插件目录:Preferences->Browse Packpages,把 Xtools 放在该目录下即可。
注意:python 调用 masOS 终端需要 applescript 模块,请勿删除
最近有师傅反馈,window 11 安装时出现错误,功能无法正常使用。经过调试,发现是师傅的系统用户名是中文。如果系统的用户名是中文且安装不成功,可以尝试在 xtools.py 文件自定义系统用户名。
if platform == 'windows':
HOME = os.environ['HOMEPATH']
else:
HOME = os.environ['HOME']
'''
-> 如果系统的用户名是中文且安装不成功,可以尝试在 xtools.py 文件设置系统的 "<用户名>"
-> 删除 # 注释
Eg:
HOME = "C:\\Users\\" + u"中文"
'''
#HOME = "/Users/" + u"<用户名>" # osx
#HOME = "/home/" + u"<用户名>" # linux
#HOME = "C:\\Users\\" + u"<用户名>" # windows
workdir = os.path.join(HOME,'.xtools')
- 检查系统用户名是否为 中文
- 检查工具文件夹名称是否为 Xtools
- 检查 applescript 压缩包是否解压
- 查看 issues
https://github.com/chasingboy/Xtools/issues
在新版本的 Sublime Text(版本4166~4199)中,部分接口有变化导致 xtools 部分功能失效。可以通过修改 xtools.py 中的代码修复 Bug。
# 修改 new_view 函数
# 注释 new_view.insert(edit, 0, text.strip())
# 使用 new_view.run_command('insert', {'characters': text.strip()})
# 新版本
def new_view(view, edit, text):
new_view = view.window().new_file()
new_view.set_scratch(True)
# 旧版本 Sublime Text
# new_view.insert(edit, 0, text.strip())
# 新版本 Sublime Text
new_view.run_command('insert', {'characters': text.strip()})
view.window().focus_view(new_view)
new_view.run_command('insert', {'characters': text.strip()})
新旧版本都兼容,Xtools 最新版本默认启用
![image](https://private-user-images.githubusercontent.com/39737245/290793931-2c255868-fa2c-4e57-a6f3-c61e9a9e8e3f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTQ2MDQyMTksIm5iZiI6MTcxNDYwMzkxOSwicGF0aCI6Ii8zOTczNzI0NS8yOTA3OTM5MzEtMmMyNTU4NjgtZmEyYy00ZTU3LWE2ZjMtYzYxZTlhOWU4ZTNmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA1MDElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNTAxVDIyNTE1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTUyMGRmODQ0OTIxZDk2ZDY4ODFiYzE0MzE5ZTUzZjFjZDU3YzUyNjMwMTg2MzZlZjQzMTkyZGI3ZTMwMzY2YzcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.LKV7eAwGCCrDHfRTff-PCvMgVb0xaHVR7-r4nMNWBrI)
在 Xtools 目录下,删除原有 Context.sublime-menu
文件,然后把文件 中文版-Context.sublime-menu
重命名为 Context.sublime-menu
即可。
![image](https://private-user-images.githubusercontent.com/39737245/293672943-62fdb335-21fb-46f8-b659-e3144974db59.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTQ2MDQyMTksIm5iZiI6MTcxNDYwMzkxOSwicGF0aCI6Ii8zOTczNzI0NS8yOTM2NzI5NDMtNjJmZGIzMzUtMjFmYi00NmY4LWI2NTktZTMxNDQ5NzRkYjU5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA1MDElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNTAxVDIyNTE1OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTE5NGNkY2ZjMWM1M2IxNTE3NDUzZDU4MTc0MjhlYmYxNmM5MjdmMDA1ZWExZTUyNWRmN2MxYmI3ZjFiNzZkMDAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.W7sbfUtB6O6d4dDi3IPH98OdjK7Gkk5Sn8X91GauJFg)
xinyu2428@ https://github.com/xinyu2428/HTML_TOOLS
linkfinder@ https://github.com/GerbenJavado/LinkFinder
ZororoZ@ https://github.com/ZororoZ/fscanOutput/tree/main
aaaaa_ascii@ https://blog.csdn.net/aaaaa_ascii/article/details/131956793
[+] 2023-07-15 增加 Windows 命令行调用支持。
[+] 2023-07-18 增加一键排序去重、提取 javascript 文件路由。
[+] 2023-08-28 增加提取 IP 段、转换 ipv4 支持 192.168.1.1-10 格式
[+] 2023-12-15 修复新版本 Sublime Text 中部分功能 Bug。
[+] 2024-01-02 增加 URL编码解码、nmap 扫描结果转换、反弹shell命令生成
[+] 2024-01-02 增加中文版配置文件、临时记事本
[+] 2024-01-03 修改 applescript 模块为解压状态,不需要手动解压
[+] 2024-04-14 把panel显示转为新文件显示,适应新版本 Sublime Text
[+] 2024-04-22 增加 fscan|httpx|nuclei 结果整理功能