WRG-11/osint-trust-envelope
GitHub: WRG-11/osint-trust-envelope
为OSINT结果提供信任等级封装,帮助分析师评估信息可靠性。
Stars: 0 | Forks: 0
# osint-trust-envelope
[](https://github.com/WRG-11/osint-trust-envelope/actions/workflows/ci.yml)
[](https://github.com/WRG-11/osint-trust-envelope/actions/workflows/codeql.yml)
[](https://github.com/WRG-11/osint-trust-envelope/blob/main/LICENSE)
**针对 OSINT 结果的按源类型认知上限 - 代码化的反过度声明。**
OSINT 工具喜欢显示绿色的勾选标记。一个用户名在 40 个网站上“找到”,
一个电话号码“追踪”到运营商,一封电子邮件“确认” - 所有这些都以
与加密真实安全漏洞攻击相同的自信 UI 展示。问题是
大多数 OSINT 信号 *无法* 支持这种信心,而不确定性
通常只存在于人类分析师的头脑中(或没有人阅读的脚注中)。
这个包将这种不确定性移动到结果的类型系统中。每次
查找都包裹在一个 `{"result": ..., "trust": ...}` 封装中,其 **判决
上限是源 _类型_ 可以诚实地支持的最高级别** - 而这个上限是写入代码的,而不是留给调用者纪律。
```
from osint_trust_envelope import wrap_phone
env = wrap_phone({
"parsed": {"valid": True, "country_code": "+1", "enrichment_source": "libphonenumber"},
"social_checks": [{"platform": "WhatsApp", "possible": True}],
})
env["trust"]["verdict"] # -> "inferred" (never "verified", by design)
env["trust"]["confidence"] # -> 0.66
env["trust"]["warnings"] # -> ["number_portability_not_reflected",
# "ownership_not_determinable_from_number_alone", ...]
```
一个电话号码封装在结构上 **不能** 返回 `verified`,无论输入多么丰富。这正是
整个要点。
## 判决等级
四个级别,从最可信到最不可信:
| 判决 | 含义 | 信心区间 |
| --- | --- | --- |
| `verified` | 真实、权威的来源确认了它(HIBP k-anonymity,RDAP/DNS 解析,从本地文件解析的 EXIF)。 | 0.85 - 1.00 |
| `inferred` | 获取了真实数据,但解释是间接的(存在 MX 记录;头像 URL 返回 200)。 | 0.55 - 0.80 |
| `heuristic` | 模式/正则表达式/404 爬取。预期有误报。 | 0.25 - 0.55 |
| `unverified` | 尝试了检查但没有返回结果,或者输入有误。诚实的“我们不知道”。 | 0.00 - 0.20 |
`confidence` 是一个独立的 0-1 数字,跟踪判决,但让你
在区间内对结果进行排序。
## 按源类型上限(以及为什么存在)
此表是库。每个封装强制执行最大判决,因为源类型无法逃避的具体技巧原因。
| 封装 | 最大判决 | 为什么不能更高 |
| --- | --- | --- |
| `wrap_phone` | **inferred** | 号码携带性(MNP)破坏了前缀到运营商推断;消息传递存在证明 *可达性*,而不是所有权;付费反向查找给出 *当前* 运营商,而不是身份。 |
| `wrap_email` | **inferred** | MX 记录证明该域名接受邮件,但不是 *这个* 邮箱存在或被阅读;别名、转发器和捕获所有规则从外部看不见;SPF/DMARC 描述处理策略,而不是所有权。 |
| `wrap_username_scan` | **heuristic**(-> 只有在跨平台证实或有一个历史可靠性记录的情况下才提升到 inferred) | 基于 HTTP 状态/404 的检测在结构上是脆弱的 - 预期有误报。只有独立地跨足够多的平台达成一致,或者有一个按站点的可靠性历史,才能获得提升。 |
| `wrap_company` | **inferred** | GitHub 组织是真实的 API 呼叫,但社交存在部分是 404 爬取的。 |
| `wrap_avatar` | **inferred** | “此 URL 存在个人资料图片”并不意味着“属于目标”;相关性是概率性的。 |
| `wrap_paste` | **inferred** | 命中需要手动相关性审查;字符串的存在不是归属。 |
| `wrap_ip` | **verified**(<= 0.92;Tor 出口为 <= 0.95) | 地理位置加 RDAP 加反向 DNS 可以相互证实,但地理位置是 ISP 级别,而不是用户级别。 |
| `wrap_domain` | **verified**(<= 0.96) | DNS 加 RDAP 加 SSL 加 HTTP 是对域的权威性;注册商/WHOIS 数据通常被隐私红字。 |
| `wrap_breach` | **verified**(<= 0.97) | HIBP k-anonymity 密码检查是加密真实的;电子邮件漏洞路径需要一个付费密钥。 |
| `wrap_whois` / `wrap_ssl` / `wrap_metadata` | **verified** | RDAP API、TLS 握手和本地二进制解析是它们所测量的权威性(EXIF 仍然可以被伪造或删除)。 |
| `wrap_pipeline` | **= 最不可信的子模块** | 管道只与其最不可信的链接一样可信。 |
强制性的诚实免责声明随 `trust.warnings` 一起提供,并且始终
对于相关源类型都是现成的 - 例如,电话结果总是携带
`number_portability_not_reflected`;电子邮件总是携带
`mailbox_existence_not_proven`;IP 总是携带
`ip_geolocation_is_isp_level_not_user_level`。它们不能被配置关闭。
## 这不是什么
对工具的诚实与工具编码的纪律相同:
- **信心锚和上限是手动校准的技巧启发式方法,而不是测量的精确度/召回率。** 它们 **没有** 与标记的外部语料库进行验证。数字表达了一种 *相对认知顺序*(“MX 记录比正则表达式匹配更有价值,比 DNSSEC 解析更少”),而不是你应该下注的概率。没有声称准确性数字。
- **它不执行任何查找。** 它不调用任何 API,解析任何 DNS,或
接触网络。你从自己的适配器中带来原始结果;这一层只分配信任封装。
- **它不进行个人级别的身份确定。** 每个接触身份的封装都将判决限制在 `verified` 以下,正是因为无法从这些信号中建立身份。
如果你将其连接到产品中,请显示判决和警告 - 而不是裸绿色的勾选标记。
## 可选:历史按站点丰富
`wrap_username_scan` 当它有一个 *历史可靠性分数* 每个站点时,可以将判决从 `heuristic` 提升到 `inferred`。该数据源是一个
可插拔的接口,**不是捆绑**(核心保持零依赖):
```
import osint_trust_envelope.trust as trust
# 用户名 -> {站点:可靠性评分 0..1}
def my_history(username: str) -> dict[str, float]:
return load_scores_for(username)
trust._get_site_confidences = my_history
# 可选:trust._detect_site_anomaly = my_anomaly_detector
```
默认的发货是空操作,因此开箱即用的扫描仪只使用静态等级。连接提供者是完全可选的。
## 安装
```
pip install osint-trust-envelope # once published
# 或者,从检出:
pip install .
```
零运行时依赖。Python 3.10+。
## 运行演示
```
python demo.py
```
## 运行测试
```
pip install ".[dev]"
pytest
```
## 许可证
MIT - 查看 [LICENSE](LICENSE).
标签:ESC4, OSINT, Python, Unix, 不确定性管理, 代码安全, 信任等级, 信任评估, 开源框架, 持续集成, 数字足迹, 数据不确定性, 数据不确定性警告, 数据丰富化, 数据可信度, 数据验证, 无后门, 漏洞枚举, 用户界面, 电子邮件验证, 电话号码解析, 社交平台检查, 结果封装, 软件包管理, 软件许可证, 逆向工具