3行Python代码,我让隔壁红队小哥的扫描器直接“躺平”
你是不是还在用现成工具傻傻扫端口? 我当年也这样,直到我发现,自己写脚本,效率能翻10倍,还能把工具玩出花来。
上周,我用一个不到50行的Python脚本,自动化处理了2000个IP的端口扫描结果,省了至少8小时手工整理时间。今天,我就把这套“从零搭建Python环境到写出第一个实战脚本”的保姆级教程,连同我压箱底的10个脚本,一次性打包给你。
🚀 核心干货:从装环境到写脚本,三步到位
第一步:搭建“不报错”的Python环境(避坑90%新手)
别再用系统自带的Python了!版本混乱、权限问题,分分钟让你“从入门到放弃”。用Miniconda,环境隔离才是王道。
# 1. 下载安装Miniconda(Linux/macOS示例)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 安装时一路回车,问你是否初始化conda,一定要选“yes”!
# 2. 创建一个专用于安全的虚拟环境
conda create -n sec_scripts python=3.9
conda activate sec_scripts # 激活环境,你的专属沙箱
# 3. 安装必备库(网络请求+文件处理的核心)
pip install requests beautifulsoup4 pandas
# requests:发HTTP请求,爬虫、爆破、API调用全靠它
# beautifulsoup4:解析HTML,挖信息泄露一绝
# pandas:处理CSV/Excel,分析扫描结果神器
记住:一个项目一个环境,就像一次任务用一个虚拟机,干净又卫生。
第二步:写出第一个“能打”的脚本(网络请求实战)
理论都是纸老虎,直接上能跑的代码。下面这个脚本,能批量检测URL是否存在某个敏感文件(比如.git泄露)。
import requests
import concurrent.futures
def check_git_leak(url):
"""
检查目标URL是否存在.git目录泄露
思路简单粗暴,但非常有效
"""
target = url.rstrip('/') + '/.git/HEAD' # 拼接敏感路径
headers = {'User-Agent': 'Mozilla/5.0 (Security Scanner)'}
try:
resp = requests.get(target, headers=headers, timeout=5, verify=False)
# verify=False 跳过证书验证,内网必备,但生产环境慎用!
if resp.status_code == 200 and 'ref:' in resp.text:
print(f'[!] 发现.git泄露: {target}')
return target
else:
print(f'[-] 安全: {url}')
return None
except Exception as e:
print(f'[x] 请求失败: {url}, 错误: {e}')
return None
if __name__ == '__main__':
# 从文件中读取目标URL列表
with open('targets.txt', 'r') as f:
urls = [line.strip() for line in f if line.strip()]
# 使用线程池并发,速度提升N倍
with concurrent.futures.ThreadPoolExecutor(max_workers=20) as executor:
executor.map(check_git_leak, urls)
把脚本跑起来,你就能体验到“自动化”的第一波快感。 这比你在浏览器里一个个点,快得不是一星半点。
第三步:文件处理——让结果“自己说话”
脚本跑完了,结果散落在命令行里?太不专业了。高手都会把结果规规矩矩存起来,方便后续分析。
import csv
import json
from datetime import datetime
def save_results(results, format='csv'):
"""
将扫描结果保存为文件
results: 列表,里面是字典,例如 [{'url': 'xxx', 'vuln': 'git泄露'}]
"""
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
if format == 'csv':
filename = f'scan_results_{timestamp}.csv'
with open(filename, 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=results[0].keys())
writer.writeheader()
writer.writerows(results)
print(f'[+] 结果已保存至: {filename}')
elif format == 'json':
filename = f'scan_results_{timestamp}.json'
with open(filename, 'w', encoding='utf-8') as f:
json.dump(results, f, indent=4, ensure_ascii=False)
print(f'[+] 结果已保存至: {filename}')
数据处理是安全工作的“最后一公里”,跑得快不如收得好。
🚨 老司机翻车实录:我被自己的脚本“反杀”
去年给一个客户做内网评估,我写了个脚本批量测试SMB弱口令。为了图快,我没设超时时间,也没限制并发数。脚本一跑,直接把目标域控给打挂了,触发了全网的警报。客户IT部门电话秒到,场面一度十分尴尬。
血泪教训:
- 一定要加超时(timeout):
requests.get(timeout=5) - 控制并发(ThreadPoolExecutor):别把人家服务当DDoS靶场。
- 添加随机延迟(time.sleep):
import random; time.sleep(random.uniform(0.5, 2))
脚本是武器,用不好先伤己。
🎉 读者证言:看完就会,用了就出活
“@风清扬:昨天刚照着文章搭好环境,写了个爬取JS里API密钥的脚本,今天就在测试站点里挖到一个泄露的AWS Key,人生第一个高危!!”
“@小白不白:以前最怕处理Nmap的XML结果,用你给的Pandas例子改了几行,现在自动生成漂亮报表,老大都夸我效率高。”
💰 限时福利(48小时有效)
关注本公众号,在后台回复【Python脚本】,立即免费领取:
- 我整理的《10个网络安全实战Python脚本》(价值199元),涵盖端口扫描、目录爆破、数据提取、日志分析等。
- 专属“脚本小子”进阶交流群入口(仅限前50名回复者),群里不定期分享独门技巧和内部工具。
🗣️ 留言区互动
你在学习或使用Python脚本时,踩过最大的坑是什么? 或者分享你的第一个自动化小成果!
留言点赞最高的前3位朋友,将获得我的《红队内部速查笔记》电子版一份。
👉 如果这篇对你有帮助,点个在看,让更多兄弟告别重复劳动(卷死他们)。
🥚 彩蛋预告
下期更狠:《别再用Nmap了!我用Scapy手搓了一个隐身扫描器,全网无报警》。我会拆解如何用Python的Scapy库构造原始数据包,实现完全静默的端口探测和指纹识别。想提前上车?加我私人微信:haojun_sec (备注“脚本”),拉你进内部讨论群,下期草稿抢先看。
📢 关注「学习捷径站」,每天更新硬核干货
👉 点击这里直接关注公众号[1]
(关注后回复 脚本基础Py 即可领取本文配套工具包)
如果无法点击,请长按识别下方二维码
引用链接
[1]点击这里直接关注公众号: weixin://follow?username=esxxfwt