[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80491":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":14,"stars30d":15,"stars90d":13,"forks30d":13,"starsTrendScore":14,"compositeScore":16,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":17,"hasPages":17,"topics":19,"createdAt":8,"pushedAt":8,"updatedAt":20,"readmeContent":21,"aiSummary":22,"trendingCount":13,"starSnapshotCount":13,"syncStatus":23,"lastSyncTime":24,"discoverSource":25},80491,"database_scan","RuoJi6\u002Fdatabase_scan","RuoJi6",null,"Go",86,8,59,0,20,24,2.86,false,"main",[],"2026-06-12 02:04:03","# database_scan\n\n[![build](https:\u002F\u002Fgithub.com\u002FRuoJi6\u002Fdatabase_scan\u002Factions\u002Fworkflows\u002Fbuild.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FRuoJi6\u002Fdatabase_scan\u002Factions\u002Fworkflows\u002Fbuild.yml)\n\n`database_scan` 是一个 Go 编写的数据库敏感信息检索工具，用于检查开发数据库中是否存在手机号、身份证、地址、账号、密码、邮箱、银行卡、token\u002Fsecret 等敏感信息。默认终端表格输出。\n\n![image-20260523110116512](assets\u002Fimage-20260523110116512.png)\n\n## 支持能力\n\n- 数据库：MySQL\u002FMariaDB\u002FTiDB、MSSQL、PostgreSQL、Oracle，以及多种 MySQL\u002FPostgreSQL 协议兼容国产数据库\n- 代理：直连、SOCKS5、HTTP CONNECT\n- 认证：命令行密码或隐藏交互输入\n- 输出：连接信息、按表分组的敏感字段、存在行数和类似 SQL 查询结果的整行真实样例值\n- 检索模式：\n  - `field-content`：根据表\u002F字段名定位敏感字段，再检索字段内容\n  - `field-name`：只检索敏感表名\u002F字段名\n  - `content`：扫描字段内容\n  - `all`：执行全部模式\n- 敏感级别：\n  - `high`：身份证、密码\u002F密钥、银行卡\n  - `medium`：手机号、邮箱\n  - `low`：地址、用户名\u002F账号\n  - `all`：全部级别，默认值\n\n## 构建\n\n```bash\ngo build -o database_scan .\u002Fcmd\u002Fdatabase_scan\n```\n\n## 使用示例\n\n```bash\n.\u002Fdatabase_scan --type mysql --host 127.0.0.1 --port 3306 --user root --password pass\n```\n\n也可以把地址和端口写在一起，`--host 192.0.2.10:1433` 或直接把目标作为位置参数：\n\n```bash\n.\u002Fdatabase_scan --type mssql 192.0.2.10:1433 --user sa --password pass\n```\n\n如果不希望数据库密码出现在 shell 历史记录中，可以省略 `--password`，程序会提示隐藏输入：\n\n```bash\n.\u002Fdatabase_scan --type mysql --host 127.0.0.1 --port 3306 --user root\n```\n\n```bash\n.\u002Fdatabase_scan --type mssql --host 192.0.2.10 --user sa --password pass --proxy socks5:\u002F\u002Fproxy_user:proxy_pass@127.0.0.1:1080 --mode all\n```\n\n```bash\n.\u002Fdatabase_scan --type postgres --host 198.51.100.10 --user dev --password pass --mode content --limit 15\n```\n\n只检索最高敏级别：\n\n```bash\n.\u002Fdatabase_scan --type mysql --host 127.0.0.1 --user root --password pass --level high\n```\n\n```bash\n.\u002Fdatabase_scan --type oceanbase --host 198.51.100.20 --user dev --password pass --database appdb --output result.xlsx\n```\n\n```bash\n.\u002Fdatabase_scan --type opengauss --host 198.51.100.30 --user dev --password pass --database appdb --table public.users\n```\n\nOracle 的 `--database` 表示 service name：\n\n```bash\n.\u002Fdatabase_scan --type oracle --host 198.51.100.40 --user system --password pass --database ORCL\n```\n\n```bash\n.\u002Fdatabase_scan --type mssql --host 192.0.2.10 --user sa --password pass --database appdb\n```\n\n```bash\n.\u002Fdatabase_scan --type mssql --host 192.0.2.10 --user sa --password pass --database appdb --table dbo.Users\n```\n\n```bash\n.\u002Fdatabase_scan --type mysql --host 127.0.0.1 --user root --password pass --sql \"select user, host from mysql.user\"\n```\n\n扫描 Redis key\u002Fvalue 中的敏感信息：\n\n```bash\n.\u002Fdatabase_scan --type redis --host 127.0.0.1 --port 6379 --password pass --limit 20 --output redis-scan.xlsx\n```\n\n解析 fscan 扫描结果中的数据库凭据，并对所有命中的数据库一键接入扫描：\n\n```bash\n.\u002Fdatabase_scan --fscan fscan-result.txt --workers 4 --limit 5 --output fscan-database-scan.xlsx\n```\n\n同时生成总表和每个数据库凭据的独立表格文件：\n\n```bash\n.\u002Fdatabase_scan --fscan fscan-result.txt --workers 4 --limit 5 --output fscan-database-scan.xlsx --split-output\n```\n\n已兼容 fscan `v2.1.2` 与 `1.8.4` 的数据库成功行，包括新版保存结果中的 `host:port mysql user\u002Fpass`，以及旧版 `\"[+] mysql host:port:user pass\"`。\n\n## 参数\n\n- `--type`：数据库类型，见下方支持列表\n- `--host` \u002F `--port`：目标地址和端口，端口不填时使用默认端口；也支持 `--host host:port` 或位置参数 `host:port`\n- `--user` \u002F `--password`：账号密码；密码不填时交互输入；Redis 可只传 `--password`\n- `--database`：指定要扫描的单个数据库；Redis 中表示 DB 编号，例如 `--database 2`\n- `--table`：只扫描指定数据库中的某一张表，需要同时指定 `--database`；支持 `Users` 或 `dbo.Users`\n- `--fscan result.txt`：解析 fscan `v2.1.2` \u002F `1.8.4` 扫描结果中的 MySQL、MariaDB、MSSQL、PostgreSQL、Oracle、Redis 凭据，并逐个接入扫描；同一结果文件可包含多个地址、端口、账号或密码，支持终端输出和保存结果文件\n- `--proxy socks5:\u002F\u002F...|http:\u002F\u002F...`：代理地址\n- `--mode field-content|field-name|content|all`：检索模式，默认 `field-content`\n- `--level all|high|medium|low`：按敏感级别检索，默认 `all`；`high` 只检索身份证、密码\u002F密钥、银行卡等最高敏信息\n- `--limit`：每张命中表最多展示整行样例数量，默认 15\n- `--include-system`：包含系统库\n- `--mask`：样例值脱敏显示\n- `--no-color`：关闭敏感字段和值的颜色标记，适合复制到报告或重定向到文件\n- `--no-banner`：关闭启动随机颜文字 banner\n- `--no-progress`：关闭运行状态\u002F扫描进度输出\n- `--output result.xlsx`：将扫描结果写入 Excel 文件；每个命中表一个 Sheet，上方是敏感字段清单，下方是整行样例数据，敏感字段和值会按风险颜色标记\n- `--split-output`：配合 `--fscan` 和 `--output` 使用，除总表外按每个数据库凭据额外生成独立 Excel 文件\n- `--workers`：按表并发扫描数量，默认 `1`，即不启用并发；例如 `--workers 4`\n- `--timeout`：单查询超时，默认 15s\n- `--sql`：执行自定义 SQL；按需求原样执行，不限制为只读\n\n## 支持数据库类型\n\n- 原生支持：`mysql`、`mariadb`、`mssql`、`sqlserver`、`postgres`、`postgresql`、`oracle`、`go-ora`、`redis`\n- MySQL 协议兼容：`tidb`、`oceanbase`、`oceanbase-mysql`、`polardb-mysql`、`doris`、`starrocks`、`gbase-mysql`\n- PostgreSQL 协议兼容：`opengauss`、`gaussdb`、`kingbase`、`kingbasees`、`highgo`、`polardb-postgres`\n- 默认端口：MySQL 协议族 `3306`，MSSQL `1433`，PostgreSQL 协议族 `5432`，Oracle `1521`，Redis `6379`\n\nRedis 会按 `SCAN` 枚举 key，并按类型读取 `string`、`hash`、`list`、`set`、`zset` 的样例内容。终端和 Excel 使用 Redis 专用输出结构，列为 `Target`、`DB`、`Key`、`Type`、`TTL`、`Path\u002FField`、`Value`、`命中类型`、`敏感级别`、`判断依据`；Excel 会生成 `Redis 汇总` 和 `Redis Keys` 两个 Sheet。\n\n协议兼容数据库会复用 MySQL 或 PostgreSQL 的连接协议、代理拨号和元数据扫描方式。达梦 DM、GBase 8s、神通等需要专用驱动、ODBC、CGO 或无法确认代理拨号能力的数据库暂不内置，避免破坏当前多平台发布包。\n\n## 密码说明\n\n- 数据库密码可以通过 `--password` 传入，也可以省略该参数后在提示中隐藏输入。\n- 如果密码包含空格、`&`、`?`、`!` 等 shell 特殊字符，建议用单引号包裹，例如 `--password 'pa ss!word'`。\n- SOCKS5 代理支持用户名密码：`--proxy socks5:\u002F\u002Fuser:pass@host:port`。\n- HTTP CONNECT 代理支持用户名密码：`--proxy http:\u002F\u002Fuser:pass@host:port`。\n- 代理账号或密码里如果包含 `@`、`:`、`\u002F`、`?`、`#` 等 URL 特殊字符，需要 URL 编码，例如 `@` 写成 `%40`，`:` 写成 `%3A`。\n- 为避免密码进入 shell 历史记录，生产或共享终端环境中建议省略数据库 `--password`，改用隐藏交互输入。\n\n## 效果预览\n\n以下截图中的数据库、表名和敏感样例值均为演示数据，不包含真实生产信息。\n\n### GUI运行：\n\n![image-20260523110121410](assets\u002Fimage-20260523110121410.png)\n\n### 检索数据:\n\n![image-20260523110151721](assets\u002Fimage-20260523110151721.png)\n\n![终端扫描连接信息](assets\u002Fimage-20260515125337865.png)\n\n![敏感字段与样例值](assets\u002Fimage-20260515125452703.png)\n\n![并发扫描进度](assets\u002Fimage-20260515125511339.png)\n\n![Excel 输出结果](assets\u002Fimage-20260515125542123.png)\n\n## 赞助信息\n\n- `0xsdeo`：Spade sec\n\n## 注意\n\n默认会完整展示敏感样例值，用于截图证明数据存在；如需降低暴露风险，请加 `--mask`。\n扫描过程中按 `Ctrl+C` 会停止后续扫描，并尽量输出和写入已经扫描完成的表结果。\nGitHub Actions 仅在推送 `v*` tag 时触发自动测试、构建和 Release；普通 main push 不触发发布流程。\nmacOS 首次打开下载的 GUI 应用如提示无法打开，可执行：`sudo xattr -rd com.apple.quarantine \u002Fpath\u002Fto\u002Fdatabase_scan_gui.app`\n","`database_scan` 是一个用 Go 语言编写的数据库敏感信息检索工具，主要用于检查开发数据库中是否存在手机号、身份证、地址、账号、密码、邮箱、银行卡、token\u002Fsecret 等敏感信息。其核心功能包括支持多种主流数据库（如 MySQL\u002FMariaDB\u002FTiDB、MSSQL、PostgreSQL 和 Oracle）及国产数据库的扫描，提供多种检索模式和敏感级别配置选项，并支持通过代理服务器进行连接。该工具默认以终端表格形式输出结果，同时支持导出至 Excel 文件。适用于需要定期审查数据库安全性和合规性的场景，例如在软件开发周期中的代码审查阶段或数据迁移前的安全审计工作中使用。",2,"2026-06-11 04:00:56","CREATED_QUERY"]