
터미널을 위한 로컬 우선, 키보드 기반 OSINT 워크벤치로, 사용자 이름, 도메인, IP, 이메일, 유출, 지리위치 조회를 다루는 28개 모듈과 SQLite 사례 저장 기능을 제공합니다.
h-osint)터미널을 위한 로컬 우선, 키보드 중심 OSINT 워크벤치 — Neovim 스타일 키바인드, Lua 설정, 12개 테마, 로컬 SQLite 케이스 저장소. 계정 없음, 클라우드 백엔드 없음, 텔레메트리 없음.
kitty ~ » h-osint
저장소:
h-osint· 바이너리:h-osint· 웹사이트: https://t-beckett.gitlab.io/h-osint/
h-osint는 전적으로 사용자의 머신에서 실행됩니다. 케이스 노트, 소크 퍼펫 추적, 그리고 모든 조회 결과가 하나의 로컬 SQLite 파일에 저장됩니다 — 서버 컴포넌트도, 동기화도 없으며, 이 도구는 케이스 데이터를 어디에도 업로드하지 않습니다. 서드파티 서비스 (HaveIBeenPwned, Shodan, WiGLE, Nominatim, RDAP, crt.sh, NVD, Team Cymru, ip-api.com)와 통신하는 모든 모듈은 API 키가 필요한 경우 사용자 자신의 키를 사용하며, 오직 사용자가 해당 조회를 실행했기 때문에만 통신합니다.
좋은 OSINT 기법 참고 자료(TCM Security의 OSINT Fundamentals, TCM OSINT 리소스 목록)는 어떤 소프트웨어도 제공하지 않고, 존재하는 소프트웨어는 단일 목적의 CLI 스크립트 모음(Sherlock, theHarvester, ...)이거나 무거운 GUI(Maltego)이기 때문입니다. h-osint는 이미 프리미엄한 느낌을 주는 터미널 앱 생태계의 요소들을 차용하여, 잘 알려진 기법들 주위에 하나의 일관된 워크벤치를 구성합니다:
| 차용한 곳 | 가져온 것 |
|---|---|
| lazydocker | 패널 기반 레이아웃, 하단 키바인드 힌트 바, 완전한 테마 지원 |
| tuicr | Vim 네이티브 모달 내비게이션, Rust, 단일 정적 바이너리 |
| superfile | 멀티 탭 모델, 기본 제공 12개 테마, "모든 것이 정성을 들인" 완성도 |
| Sherlock / Maigret | 크로스 플랫폼 사용자명 스윕 기법 (여기서 재구현, 벤더링 아님) |
| SpiderFoot / recon-ng | 여러 패시브 OSINT API/도구를 하나의 일관된 인터페이스 + 자동화 파이프라인 뒤에서 오케스트레이션 |
이 도구는 스토킹, 괴롭힘, 무단 침입, 또는 도난당한 자격 증명 덤프
작업에만 현실적으로 사용될 수 있는 어떤 것도 위해 만들어지지
않았으며 의도적으로 생략합니다 — 이러한 경계가 어디에 어떻게
그어지는지는 docs/ETHICS.md를 참조하세요.
git clone https://gitlab.com/t-beckett/h-osint.git
cd h-osint
# Build prerequisites: a C compiler + linker (for the bundled SQLite and
# vendored Lua) and pkg-config. On Debian/Ubuntu:
sudo apt install build-essential pkg-config
cargo build --release
./target/release/h-osint # launches the TUI
./target/release/h-osint --help # see the scriptable subcommands
Tools 화면의 더 많은 기능을 사용할 수 있게 해주는 선택적 외부 도구:
whois (RDAP 미지원 TLD 폴백), dig (DNS 레코드 + AXFR 검사),
exiftool, nmap, openssl, curl. 이 도구들이 없어도 앱은
정상적으로 실행됩니다 — 조용히 실패하는 대신 무엇이 없는지
알려줍니다.
첫 실행 시 h-osint는 완전히 주석이 달린 기본 설정을
~/.config/h-osint/init.lua에 작성합니다 (아직 아무것도 없다면) —
수동으로 복사할 것은 없습니다. 그 파일을 열어 테마, API
키, 사용자 정의 테마, 키맵 재정의를 설정하세요. 그 안에 필수 항목은
없습니다; 모든 필드에는 합리적인 기본값이 있고 키가 필요한 모든
모듈은 조용히 실패하는 대신 그 사실을 알려줍니다. (이 저장소에
포함된 config/init.lua가 사용되는 정확한 템플릿입니다 — 앱을 먼저
실행하고 싶지 않다면 여기서 읽어보세요.)
원래 계획된 22개의 OSINT 기능 전부와 6개의 확장 도구 — 전체
상태/모듈 매핑은 docs/FEATURES.md에 있습니다:
노트 & 케이스 파일 · 소크 퍼펫 / 페르소나 관리자 · 검색엔진 더크 빌더 · 역방향 이미지 검색 핸드오프 · Kitty 프로토콜 인라인 미리보기가 있는 EXIF 뷰어 · 물리적 위치 & 지오로케이션 도구 · 이메일 OSINT (형식/MX/Gravatar) · 유출 데이터 OSINT (HaveIBeenPwned breaches + pastes) · 인물 OSINT · 전화번호 OSINT · Sherlock 스타일 사용자명 OSINT · 웹사이트 OSINT (DNS, RDAP, crt.sh, Wayback, SPF/DMARC/DKIM, robots.txt/sitemap) · 소셜 미디어 OSINT · 무선 네트워크 OSINT (WiGLE) · IP OSINT (지오로케이션, 역방향 DNS, Team Cymru를 통한 ASN/BGP, RDAP) · MAC OSINT · 외부 도구 오케스트레이션 · 자동화 파이프라인 · Markdown 보고서 작성 · 저수준 보안 OSINT (TLS 인증서, 보안 헤더) · 추가로 Shodan 호스트 인텔리전스, 해시 식별기, URL 리다이렉트 확장기, CVE/NVD 조회, 타이포스쿼트/유사 도메인 스캐너, 그리고 DNS 존 전송 (AXFR) 설정 오류 검사.
세 가지 모드, Neovim 스타일 — 전체 표는
KEYBINDINGS.md에 있습니다:
위의 모든 것은 init.lua에서 재정의할 수 있습니다. 언제든 ?를
눌러 앱 내 치트 시트를 확인하세요.
:theme <name> 또는 init.lua에서 theme 설정 — 전체 팔레트 표와
사용자 정의 테마 형식은 THEMES.md에 있습니다:
ocean-depths · forest-canopy · modern-minimalist · arctic-frost ·
botanical-garden · midnight-galaxy · nord · catppuccin-frappe ·
everforest · gruvbox · onedark · tokyonight (기본값)
모든 테마는 동일한 12개의 시맨틱 역할(bg/fg/accent/danger/...)을
매핑합니다 — 어떤 화면도 이름으로 테마를 특별 취급하지 않으며 —
Rust 코드를 건드리지 않고 init.lua에서 완전히 자신만의 테마를
정의할 수 있습니다.
모든 모듈의 핵심 로직은 헤드리스로 접근 가능하므로, 다른 도구로 파이프하거나 cron에서 실행할 수 있습니다:
h-osint username johndoe
h-osint domain example.com
h-osint ip 8.8.8.8
h-osint asn 8.8.8.8
h-osint email [email protected]
h-osint mac AA:BB:CC:DD:EE:FF
h-osint phone "+1 555 0100"
h-osint dork --site example.com --filetype pdf "quarterly report"
h-osint breach [email protected] --api-key YOUR_HIBP_KEY
h-osint shodan 1.2.3.4 --api-key YOUR_SHODAN_KEY
h-osint hash 5f4dcc3b5aa765d61d8327deb882cf99
h-osint expand https://bit.ly/example
h-osint cve CVE-2024-3094
h-osint typosquat example.com
h-osint security example.com
h-osint axfr example.com ns1.example.com
h-osint pipeline example.com --steps domain,ip --case 1
h-osint report 1 --out case-1.md
src/
main.rs, cli.rs entry point + headless CLI
app.rs tab/mode state machine, :command execution
config.rs, keymap.rs Lua config loading, modal keybind resolution
themes/mod.rs 12 built-in themes + custom-theme support
db.rs SQLite case/notes/findings/personas storage
ui/ tab bar, status bar (mode pill), help popup
modules/
notes.rs, sockpuppet.rs full modules (state + DB + UI)
dork.rs, exif.rs, username.rs full modules (logic + UI)
domain.rs, network.rs, pure OSINT logic (no UI — see
identity.rs, geo.rs lookup.rs for the shared screen)
lookup.rs generic single-input screen used by
Domain/IP/MAC/Email/Phone/Breach/Geo/
Wireless/People/Social/Shodan/Hash/
UrlExpand/Cve/Typosquat/Security/Axfr/
ReverseImage
tools.rs, automation.rs, report.rs full modules
docs/
ARCHITECTURE.md how it's wired together + where to extend it
FEATURES.md every requested + extended feature -> module mapping
ETHICS.md responsible-use scope and why some modules are limited
THEMES.md full palette table + how to define a custom theme
KEYBINDINGS.md the complete keybind + command reference
CONTRIBUTING.md dev setup, how to add a module, commit style
SECURITY.md responsible-disclosure policy for this tool itself
CODE_OF_CONDUCT.md
CHANGELOG.md
config/init.lua example config
site/ source for the project website (published via GitLab Pages)
.gitlab-ci.yml build/lint/test + Pages deploy
site/에는 정적 프로젝트 홈페이지가 있습니다; .gitlab-ci.yml은
모든 푸시에서 빌드 및 린트를 수행하고 기본 브랜치에서 site/를
GitLab Pages에 게시합니다, https://t-beckett.gitlab.io/h-osint/에서.
이 프로젝트는 원래 crates.io에 대해 cargo build를 실행할 네트워크
접근이 없는 환경에서 스캐폴딩되었습니다. 모든 줄은 정확성(타입,
borrow-checker 형태, 문서화된 크레이트 버전에 대한 API 시그니처)을
위해 수동으로 검토되었지만, 새로 클론한 후의 첫 cargo build를
실제 검증 단계로 취급하세요 — CI 파이프라인이 모든 푸시에서 이를
실행하고, cargo clippy와 cargo test도 실행하므로, main에서의
녹색 파이프라인이 실제 보증입니다. 특히 두 번 살펴볼 가치가 있는
구체적인 부분(MAC OUI 테이블 커버리지, 전화번호 파싱 정밀도, ASN
응답 파싱)은 docs/ARCHITECTURE.md의 "Known gaps" 섹션을
참조하세요.
MIT — LICENSE 참조. © T. Beckett.
| 키 | 일반 모드 |
|---|
j/k, ↑/↓ | 목록 내에서 이동 |
i | Insert 모드 진입 (포커스된 필드에 입력) |
Esc | 일반 모드로 복귀 |
: | 명령 모드 (:theme nord, :open username, :case new "Acme intake", :q) — Tab을 눌러 명령 이름이나 인자의 자동완성 순환 |
r / Enter | 현재 화면의 동작 실행 |
Tab / Shift-Tab | 탭 전환 |
ctrl-t / ctrl-w | 새 탭 (Home) / 탭 닫기 |
[ / ] | 이전 / 다음 테마 |
? | 도움말 토글 |
:q | 종료 (이것이 유일한 종료 방법 — 단독 q 바인딩이 없어 실수로 눌린 키가 될 수 없음) |