当前位置:首页>python>3行Python代码,我让隔壁红队小哥的扫描器直接“躺平”

3行Python代码,我让隔壁红队小哥的扫描器直接“躺平”

  • 2026-09-07 06:18:32
3行Python代码,我让隔壁红队小哥的扫描器直接“躺平”

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部门电话秒到,场面一度十分尴尬。

血泪教训:

  1. 一定要加超时(timeout):requests.get(timeout=5)
  2. 控制并发(ThreadPoolExecutor):别把人家服务当DDoS靶场。
  3. 添加随机延迟(time.sleep):import random; time.sleep(random.uniform(0.5, 2)) 脚本是武器,用不好先伤己。

🎉 读者证言:看完就会,用了就出活

“@风清扬:昨天刚照着文章搭好环境,写了个爬取JS里API密钥的脚本,今天就在测试站点里挖到一个泄露的AWS Key,人生第一个高危!!”

“@小白不白:以前最怕处理Nmap的XML结果,用你给的Pandas例子改了几行,现在自动生成漂亮报表,老大都夸我效率高。”

💰 限时福利(48小时有效)

关注本公众号,在后台回复【Python脚本】,立即免费领取:

  1. 我整理的《10个网络安全实战Python脚本》(价值199元),涵盖端口扫描、目录爆破、数据提取、日志分析等。
  2. 专属“脚本小子”进阶交流群入口(仅限前50名回复者),群里不定期分享独门技巧和内部工具。

🗣️ 留言区互动

你在学习或使用Python脚本时,踩过最大的坑是什么? 或者分享你的第一个自动化小成果! 留言点赞最高的前3位朋友,将获得我的《红队内部速查笔记》电子版一份。

👉 如果这篇对你有帮助,点个在看,让更多兄弟告别重复劳动(卷死他们)。

🥚 彩蛋预告

下期更狠:《别再用Nmap了!我用Scapy手搓了一个隐身扫描器,全网无报警》。我会拆解如何用Python的Scapy库构造原始数据包,实现完全静默的端口探测和指纹识别。想提前上车?加我私人微信:haojun_sec (备注“脚本”),拉你进内部讨论群,下期草稿抢先看。

📢 关注「学习捷径站」,每天更新硬核干货

👉 点击这里直接关注公众号[1]

(关注后回复 脚本基础Py 即可领取本文配套工具包)

如果无法点击,请长按识别下方二维码  

引用链接

[1]点击这里直接关注公众号: weixin://follow?username=esxxfwt

最新文章

随机文章