Python原力觉醒:不装库的安全攻防速成指南
Python原力觉醒:不装库的安全攻防速成指南
大家好,我是你们的老朋友,一位热衷于分享“黑科技”的独立软件开发者,同时也是一位浸淫多年的渗透测试工程师。相信各位早已被市面上那些千篇一律的教学视频和PPT轰炸得体无完肤了吧?动不动就 pip install 一大堆库,搞得环境乱七八糟,简直是程序员的噩梦!
今天,咱们来点不一样的!抛弃那些臃肿的第三方库,回归Python的本质,用最纯粹的Python代码,玩转安全攻防!记住,真正的力量,往往蕴藏于最简单的工具之中。
郑重声明:本教程仅供学习交流,严禁用于非法用途!安全第一,切勿以身试法!
课程目标
- 掌握Python标准库在安全攻防领域的应用技巧。注意是标准库!
- 了解常见的网络安全漏洞和攻击方法。
- 提升安全意识,保护个人和企业的信息安全。
- 摆脱对第三方库的依赖,成为真正的Python原力大师!
课程内容
本课程将重点讲解以下三个“冷门但实用”的方向,并提供具体的代码示例。每个技巧控制在5分钟以内,保证短平快,易上手。
方向一:基于 socket 模块的“隐蔽端口扫描”技巧
端口扫描是渗透测试的第一步,但传统的端口扫描很容易被防火墙发现。今天,我们就来学习如何编写脚本,绕过常见的防火墙规则,探测目标主机开放的端口。核心在于伪造数据包头,以及根据响应时间判断端口状态。
代码示例:
import socket
import time
def stealth_scan(target_host, target_ports):
try:
target_ip = socket.gethostbyname(target_host)
except socket.gaierror:
print(f"无法解析主机名: {target_host}")
return
print(f"开始扫描目标主机: {target_ip}")
for port in target_ports:
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(0.1) # 设置超时时间,避免长时间等待
# 伪造源端口,增加隐蔽性
src_port = 53253 # 随意选择一个高端口
sock.bind(('0.0.0.0', src_port))
start_time = time.time()
result = sock.connect_ex((target_ip, port))
end_time = time.time()
elapsed_time = end_time - start_time
if result == 0:
print(f"端口 {port}: 开放 (耗时: {elapsed_time:.4f}秒)")
else:
# 根据响应时间判断端口状态
if elapsed_time > 0.05:
print(f"端口 {port}: 可能被防火墙过滤 (耗时: {elapsed_time:.4f}秒)")
# else:
# print(f"端口 {port}: 关闭 (耗时: {elapsed_time:.4f}秒)")
sock.close()
except socket.error as e:
print(f"连接端口 {port} 失败: {e}")
# 扫描内网存活主机并发现弱口令服务 (请替换为你的目标)
target_host = '192.168.1.100'
target_ports = [21, 22, 23, 80, 445, 3389] # 常见端口
stealth_scan(target_host, target_ports)
PPT 课件:
- Slide 1: 标题:隐蔽端口扫描
- Slide 2: 代码片段:
socket.socket(socket.AF_INET, socket.SOCK_STREAM)(创建 TCP socket) - Slide 3: 代码片段:
sock.settimeout(0.1)(设置超时时间) - Slide 4: 代码片段:
sock.connect_ex((target_ip, port))(非阻塞连接) - Slide 5: 总结:适用场景:内网渗透、绕过简单防火墙。注意事项:设置合理的超时时间,避免长时间等待。
- Slide 6: 扩展阅读:Nmap (虽然我们不用,但了解一下总是好的)。
案例:扫描内网存活主机并发现弱口令服务。
方向二:利用 hashlib 和 hmac 模块实现“简易口令破解”与“数据完整性校验”
还在用第三方库生成彩虹表?弱爆了!Python标准库 hashlib 和 hmac 就能搞定!我们来演示如何使用Python标准库生成彩虹表,以及如何对常见的文件格式进行完整性校验,防止篡改。
代码示例:
import hashlib
import hmac
import os
def generate_rainbow_table(wordlist_file, hash_algorithm='sha256'):
"""生成彩虹表"""
rainbow_table = {}
with open(wordlist_file, 'r', encoding='utf-8') as f:
for password in f:
password = password.strip()
hashed_password = hashlib.new(hash_algorithm, password.encode('utf-8')).hexdigest()
rainbow_table[hashed_password] = password
return rainbow_table
def verify_file_integrity(file_path, expected_hash, hash_algorithm='sha256'):
"""验证文件完整性"""
hasher = hashlib.new(hash_algorithm)
with open(file_path, 'rb') as f:
while True:
chunk = f.read(4096)
if not chunk:
break
hasher.update(chunk)
file_hash = hasher.hexdigest()
return file_hash == expected_hash
# 生成彩虹表
wordlist_file = 'common_passwords.txt' # 包含常见口令的文件
rainbow_table = generate_rainbow_table(wordlist_file)
# 快速验证下载的软件包是否被恶意修改
file_path = 'example.zip'
expected_hash = 'e5b7e6194818c70a8e5a622734986032c069f424597832d111f371064432321a' # 软件包的预期 SHA256 哈希值
if verify_file_integrity(file_path, expected_hash):
print("文件完整性校验通过!")
else:
print("警告:文件可能已被篡改!")
# 使用 HMAC 进行消息认证
message = b"Important data to protect"
key = b"secret_key"
hmac_obj = hmac.new(key, message, hashlib.sha256)
hmac_digest = hmac_obj.hexdigest()
print(f"HMAC Digest: {hmac_digest}")
PPT 课件:
- Slide 1: 标题:简易口令破解与数据完整性校验
- Slide 2: 代码片段:
hashlib.sha256(password.encode('utf-8')).hexdigest()(计算 SHA256 哈希值) - Slide 3: 代码片段:
hmac.new(key, message, hashlib.sha256).hexdigest()(使用 HMAC 进行消息认证) - Slide 4: 总结:适用场景:口令破解、文件完整性校验、消息认证。注意事项:彩虹表只适用于弱口令,HMAC需要安全地存储密钥。
- Slide 5: 扩展阅读:彩虹表,HMAC
方向三:基于 urllib 模块的 “Web 漏洞快速验证” 方法
想快速验证目标网站是否存在SQL注入漏洞?还在苦苦等待第三方库的安装?别傻了!urllib 模块就能搞定!我们来讲解如何构造特定的HTTP请求,模拟常见的Web攻击场景,例如SQL注入、命令执行等,重点讲解如何分析HTTP响应,判断是否存在漏洞。
代码示例:
import urllib.parse
import urllib.request
def test_sql_injection(target_url, injection_string):
"""测试 SQL 注入漏洞"""
try:
# 构造包含恶意 payload 的 URL
url = target_url + urllib.parse.quote(injection_string)
# 发送 HTTP 请求
response = urllib.request.urlopen(url, timeout=5)
# 读取响应内容
html = response.read().decode('utf-8')
# 分析响应,判断是否存在漏洞 (这里只是一个简单的示例,需要根据实际情况调整)
if 'error' in html.lower() or 'syntax' in html.lower():
print(f"SQL 注入漏洞可能存在!URL: {url}")
else:
print(f"未发现明显的 SQL 注入漏洞。URL: {url}")
except urllib.error.URLError as e:
print(f"请求失败: {e}")
# 无需安装任何第三方库,快速验证目标网站是否存在SQL注入漏洞
target_url = 'http://example.com/index.php?id=' # 替换为你的目标 URL
injection_string = "' OR '1'='1" # 简单的 SQL 注入 payload
test_sql_injection(target_url, injection_string)
PPT 课件:
- Slide 1: 标题:Web 漏洞快速验证
- Slide 2: 代码片段:
urllib.request.urlopen(url, timeout=5)(发送 HTTP 请求) - Slide 3: 代码片段:
response.read().decode('utf-8')(读取响应内容) - Slide 4: 总结:适用场景:Web 漏洞快速验证、渗透测试。注意事项:根据实际情况调整 payload 和响应分析方法。
- Slide 5: 扩展阅读:OWASP (Web 应用安全领域的权威组织)
总结
怎么样,是不是感觉Python标准库也很强大?其实,很多时候我们并不需要过度依赖第三方库,Python标准库就能满足我们的需求。希望通过本课程,大家能够重新认识Python,发现Python的更多可能性。
再次强调:安全第一,切勿用于非法用途!
最后,送给大家一句话:“大道至简,真正的黑客,往往是最懂Python标准库的人!”
GitHub - fengdt08/Python-ppt 提供了《Python 编程:从入门到实践(第三版)》的官方配套图解讲义资源,可以作为入门的补充材料。
上海交通大学Python课件ppt的课件PPT内容详实且实用,对于学习和复习Python编程语言非常有帮助。
《Python基础教程课件全套课件》 通过本课程全套PPT,深入浅出地介绍Python语言从基础到高级的知识点,让您轻松学会编程,并能从中获得乐趣和灵感。
在2026年,依然有许多开发者依赖第三方库,但是学会利用标准库也能解决大部分问题。