好的,我们来写一个 Python 脚本,专门针对中文环境的 MySQL 数据库,考虑拼音命名规则。以下脚本会使用 pymysql 库来连接数据库,自动枚举数据库、表和字段,识别可能的敏感信息字段(如姓名、身份证、手机号、地址等),并支持常见的拼音命名规则。

安装依赖(如果需要)

pip install pymysql

Python 脚本示例

import pymysql

# 数据库配置
DB_CONFIG = {
'host': 'localhost',
'user': 'root',
'password': 'yourpassword',
'database': 'your_database',
'port': 3306,
'charset': 'utf8mb4'
}

# 常见敏感字段(中文和拼音)
SENSITIVE_KEYWORDS = [
'name', 'xingming', 'xing_ming', 'username', 'zhanghao', 'account',
'phone', 'shouji', 'mobile', 'tel', 'email', 'dizhi', 'address',
'id', 'sfz', 'sfzh', 'shenfenzheng', 'card', 'bank', 'yinhangka',
'password', 'mima', 'pwd', 'token', 'secret'
]

def connect_db():
"""建立数据库连接"""
try:
conn = pymysql.connect(**DB_CONFIG)
print(" 数据库连接成功")
return conn
except Exception as e:
print(f" 数据库连接失败: {e}")
return None

def search_sensitive_data(conn):
"""查找可能的敏感数据"""
try:
with conn.cursor() as cursor:
# 枚举所有表
cursor.execute("SHOW TABLES")
tables = [table[0] for table in cursor.fetchall()]

print(f"🔍 发现 {len(tables)} 张表,开始分析...")
for table in tables:
cursor.execute(f"DESCRIBE {table}")
columns = [col[0] for col in cursor.fetchall()]

# 查找可能的敏感字段
sensitive_cols = [col for col in columns if any(kw in col.lower() for kw in SENSITIVE_KEYWORDS)]
if sensitive_cols:
print(f"⚠️ 表 '{table}' 可能存在敏感字段: {sensitive_cols}")
# 可选:查看数据样本
cursor.execute(f"SELECT {', '.join(sensitive_cols)} FROM {table} LIMIT 5")
rows = cursor.fetchall()
for row in rows:
print(" 数据样本:", row)
except Exception as e:
print(f" 出现错误: {e}")

def main():
conn = connect_db()
if conn:
search_sensitive_data(conn)
conn.close()

if name == "main":
main()

运行脚本

1. 确保你的 MySQL 服务已启动,并且 DB_CONFIG 中的配置正确。


2. 运行脚本:



python sensitive_enum.py

输出示例

数据库连接成功
🔍 发现 5 张表,开始分析...
⚠️ 表 'user_info' 可能存在敏感字段: ['name', 'phone', 'sfz']
数据样本: ('张三', '13812345678', '11010119900101001X')
⚠️ 表 'bank_account' 可能存在敏感字段: ['card_number', 'password']
数据样本: ('621700123456789', '123456')

这个脚本的逻辑是:

1. 连接数据库:用 pymysql 连接 MySQL。


2. 枚举表和字段:遍历所有表,筛选字段名中包含敏感关键词的字段。


3. 展示数据样本:可选步骤,用于查看部分数据(防止误报)。



你希望我增加哪些功能?比如导出结果到 Excel、支持正则匹配,还是添加更完善的异常处理?随时告诉我!
 
 
Back to Top