J0ELAMENACE/osint-geolocate
GitHub: J0ELAMENACE/osint-geolocate
一款基于多模型流水线的OSINT图像地理定位CLI工具,通过EXIF、AI视觉分析、网络搜索和太阳计算等手段综合推断照片拍摄地点。
Stars: 0 | Forks: 0
# osint-geolocate
OSINT CLI 工具,通过多模型流水线识别图像的地理位置:EXIF、Picarta AI、视觉 LLM(3 次扫描)、Nominatim、网络搜索和太阳计算。
它是 `osint-*` 套件的一部分。
## 输出示例
```
╔══════════════════════════════════════════════════════════════════╗
║ OSINT-GEOLOCATE v3 photo.jpg ║
║ OCR:gemma4:31b-cloud GEO:gemma4:31b-cloud RAIS:gpt-oss:20b ║
╚══════════════════════════════════════════════════════════════════╝
[EXIF ] Aucune donnee GPS
[PICARTA ] Top 1 : Boulogne-Billancourt, France (93%)
[PICARTA ] Coords : 48.83179, 2.25316
[OCR ] Texte : 005300560052 // 14.1X
[OCR ] Langue : French
[GEO ] Trottoir : Reddish-brown asphalt
[GEO ] Estimation: Boulogne-Billancourt, France
[FINAL ] Confiance : HIGH
[FINAL ] Preuves : red pavement, French text, Picarta top 1
-> Boulogne-Billancourt, France
48.83179 N, 2.25316 E
[MAPS ] https://maps.google.com/?q=48.831790,2.253160
[OSM ] https://www.openstreetmap.org/?mlat=48.831790&mlon=2.253160
[STREET VIEW] https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=48.831790,2.253160
[YANDEX ] https://yandex.com/images/search?rpt=imageview
```
## 安装说明
```
git clone https://github.com/J0ELAMENACE/osint-geolocate
cd osint-geolocate
sudo bash install.sh
```
### 手动安装(不使用 install.sh)
```
pip install -r requirements.txt
chmod +x osint-geolocate
./osint-geolocate photo.jpg
```
## 前置条件
- Linux(已在 Kali 2024 上测试)
- Python 3.10+
- 已登录账户的 [Ollama](https://ollama.com)
- 免费 Picarta API 密钥(可选):[picarta.ai](https://picarta.ai)
### Ollama 模型
```
ollama pull gemma4:31b-cloud # vision + OCR + geo (gratuit)
ollama pull gpt-oss:20b-cloud # raisonnement (gratuit)
```
### 环境变量
```
export PICARTA_API_KEY="votre_cle" # gratuit sur picarta.ai
```
## 用法
Picarta 密钥**仅**通过环境变量 `PICARTA_API_KEY` 提供(见上文)。CLI 中没有提供该密钥的选项,以防止其出现在 shell 历史记录或进程列表中。
```
# 标准模式(如果定义了 PICARTA_API_KEY 则使用该 key)
osint-geolocate photo.jpg
# 通过 inline 环境变量
PICARTA_API_KEY=xxx osint-geolocate photo.jpg
# 国家提示(影响 Picarta + 网络搜索,默认无影响)
osint-geolocate photo.jpg --country France
# Options
osint-geolocate photo.jpg --no-solar # sans calcul solaire
osint-geolocate photo.jpg --no-search # sans recherche DDG
osint-geolocate photo.jpg --verbose # logs détaillés (debug)
# 强制 models
osint-geolocate photo.jpg \
--ocr-model gemma4:31b-cloud \
--geo-model gemma4:31b-cloud \
--reas-model gpt-oss:20b-cloud
```
## 流水线
```
photo.jpg
│
├─[EXIF] GPS present ? → résultat immédiat
│
├─[PICARTA] API spécialisée géolocalisation image
│ top 5 candidats + coords + confiance
│ relance avec hint pays si --country fourni et scores faibles
│
├─[PASSE OCR] gemma4:31b-cloud
│ lecture texte, codes, panneaux, langue
│
├─[PASSE GEO] gemma4:31b-cloud
│ landmarks, architecture, infrastructure,
│ trottoir, mobilier urbain, drapeaux
│
├─[DDG] Recherche web sur texte visible
│
├─[NOMINATIM] Geocodage OSM
│
├─[PASSE RAIS] gpt-oss:20b-cloud
│ cross-check OCR + GEO + Picarta + Web
│ positions candidates avec confiance
│
├─[SOLAR] Validation ombre/soleil (si timestamp EXIF)
│
└─[OUTPUT] Position + Google Maps + OSM + Street View + Yandex
```
## 技术栈
| 组件 | 工具 |
|-----------|-------|
| CLI | `click` |
| 输出 | `rich` |
| EXIF | `Pillow` |
| 太阳 | `ephem` |
| AI 地理定位 | [Picarta API](https://picarta.ai) |
| 视觉 / OCR / GEO | 通过 Ollama 使用 `gemma4:31b-cloud` |
| 推理 | 通过 Ollama 使用 `gpt-oss:20b-cloud` |
| 地理编码 | Nominatim (OSM) |
| 网络搜索 | `ddgs` |
## 许可证
CC BY-NC 4.0 — 版权所有 (c) 2026 J0ELAMENACE
标签:AI风险缓解, ESC4, OSINT, Python, 图像地理定位, 无后门, 视觉大模型, 逆向工具