CodeEvent/Programming-for-Cyber-Security

GitHub: CodeEvent/Programming-for-Cyber-Security

一套面向网络安全教学的 Python 工具集,通过从零构建的自动化侦察管道,展示了从凭据破解到 DNS 服务器确认的完整安全操作流程。

Stars: 0 | Forks: 0

# Python 网络安全工具集 ![Python](https://img.shields.io/badge/Python-3.x-blue?logo=python&logoColor=white) ![主题](https://img.shields.io/badge/Topics-Brute%20Force%20%7C%20DNS%20Recon%20%7C%20Cryptography%20%7C%20Web%20Scraping-green) ![UWS](https://img.shields.io/badge/UWS-BEng%20Cyber%20Security-darkblue) 两份 Python 课程作业,展示了实用的安全工具开发——从零开始构建,功能完善,并被串联成一个自动化的侦察管道(pipeline)。 ## 本仓库展示了什么 **你能够使用 Python 编写可正常运行的安全工具。** 这不是理论练习——而是能够攻击真实服务器、破解凭据、抓取受保护内容、提取网络 artefacts(痕迹)以及确认存活 DNS 基础设施的实际脚本。这里的每一个工具都是为了解决具体问题而编写的,并能产生真实的输出。 ## 组件 2 — DNS 侦察管道 一个四阶段的自动化管道,从受密码保护的网站开始,以一份已确认的 DNS 服务器列表结束——阶段之间无需任何手动干预。 ``` Protected website → crack PIN → scrape logs → extract IPs → confirm DNS servers ``` ### 阶段 1 — HTTP 暴力破解 [`brute_force.py`] 通过使用**原始 TCP sockets** 枚举所有 10,000 种可能性,破解真实受保护网站上的 4 位 PIN 码——不使用 HTTP 库,逐字节手动构建 HTTP 请求。 ``` # 无 requests,无 urllib — 仅使用 raw socket s = sock_mod.socket(sock_mod.AF_INET, sock_mod.SOCK_STREAM) s.connect((host, port)) s.sendall(b"GET /index.php?uname=admin&password=0342 HTTP/1.1\r\nHost: cyforsec.co.uk\r\nConnection: close\r\n\r\n") ``` **输出:** ``` Correct passcode: 0342 ----- Revealed Page -----

Login Succesful

... ``` ### 阶段 2 — 日志抓取器 [`capture_logs.py`] 使用破解出的凭据进行身份验证,并使用 BeautifulSoup CSS 选择器定位,从受保护的页面中提取服务器访问日志。将原始日志数据写入 `log.txt`。 ``` paragraph_logs = parsed_html.find("p", class_="logs") raw_data = paragraph_logs.get_text() # → 向 log.txt 写入 200+ 行 Apache access log ``` ### 阶段 3 — IP 提取器 [`extract_ips.py`] 使用正则表达式解析 `log.txt` 以识别候选的 IPv4 地址,然后使用 Python 的 `ipaddress` 模块根据 RFC 规范对每个地址进行验证。去重并写入干净的结果。 ``` ip_pattern = r"\b(?:\d{1,3}\.){3}\d{1,3}\b" ip_obj = ipaddress.IPv4Address(ip) # rejects malformed candidates ``` **输出 — 提取了 20 个唯一且经过验证的 IP:** ``` 13.66.139.0 157.48.153.185 54.36.148.92 162.158.203.24 66.249.64.41 ... (20 total) ``` ### 阶段 4 — DNS 确认 [`confirm_dns.py`] 对于每个 IP,运行三项顺序检查——53 端口 TCP 扫描、反向 DNS 查询,以及一次实时的 `dig` 查询,以确认该服务器确实在解析 DNS。只有通过全部三项检查的 IP 才会被写入输出。 ``` socket.connect((ip, 53)) # Check 1: port open? socket.gethostbyaddr(ip) # Check 2: reverse DNS? subprocess.run(["dig", "@"+ip, "google.com", "+short"]) # Check 3: live DNS? ``` **最终输出 — 已确认的 DNS 服务器:** ``` DNS Server at 54.36.148.92 : hydrogen092-ext2.a.ahrefs.com DNS Server at 54.36.148.108 : hydrogen108-ext2.a.ahrefs.com DNS Server at 54.36.148.1 : hydrogen001-ext2.a.ahrefs.com DNS Server at 54.36.149.55 : hydrogen311-ext2.a.ahrefs.com ``` ## 组件 1 — 安全编程作品集 涵盖核心安全编程概念的七个 Python 实现。 | 练习 | 展示内容 | |----------|----------------------| | **Caesar Cipher(凯撒密码)** | 经典加密、模运算、字符级操作 | | **SHA-256 密码哈希** | hashlib、UTF-8 编码、永不存储明文 | | **密码验证** | 哈希比对、无明文暴露的凭据验证 | | **HaveIBeenPwned API** | 实时 API 集成、k-anonymity 模型 | | **命令行工具** | argparse、CLI 设计、操作符处理、错误防护 | | **二分查找** | O(log n) 分治算法 | | **Fibonacci Sequence(斐波那契数列)** | 迭代算法、基于列表的计算 | HIBP 集成正确使用了 k-anonymity 模型——仅将哈希值的前 5 个字符发送给 API,这意味着完整的密码永远不会离开你的系统: ``` response = requests.get(f"https://api.pwnedpasswords.com/range/{hash[:5]}") ``` ## 展示的技术技能 | 技能 | 实现方式 | |-------|---------------| | **原始 socket 编程** | 手动构建 HTTP 请求,不使用库 | | **Web 抓取** | BeautifulSoup4、CSS 选择器、HTML 解析 | | **正则表达式与数据提取** | re 模块、IP 模式匹配、验证管道 | | **网络侦察** | 端口扫描、反向 DNS、实时 DNS 验证 | | **密码学** | SHA-256、SHA-1、Caesar cipher、k-anonymity | | **API 集成** | HaveIBeenPwned、requests、响应解析 | | **CLI 工具开发** | argparse、交互式回退、操作符处理 | | **流程自动化** | subprocess、链式脚本、文件 I/O 管道 | ## 运行管道 ``` pip install requests beautifulsoup4 python brute_force.py # → finds PIN, prints cracked page python capture_logs.py # → writes log.txt python extract_ips.py # → writes ips.txt python confirm_dns.py # → writes confirmed_dns.txt ``` ## 学术背景

标签:BeautifulSoup, Cryptography, DNS侦察, DOS头擦除, HTTP暴力破解, Python安全工具, Python编程, Raw TCP Socket, UWS, VEH, Web Scraping, 主机安全, 凭证枚举, 原始套接字, 字典攻击, 安全工具开发, 安全教育, 密码破解, 数据统计, 日志提取, 端口扫描, 系统侦察, 结构化查询, 网络协议分析, 网络基础设施分析, 网络安全, 网络安全实战, 网络安全课程作业, 自动化安全, 自动化流水线, 隐私保护