Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
HiddenSteps — HiddenSteps — 로컬 우선 개인 워크플로우 인텔리전스 플랫폼 | Kitploit
도구/GitHubGitHub/jgalego/hiddensteps
OSINT (Open Source Intelligence)ReconnaissanceData ExfiltrationInformation GatheringCTFPrivacyPapers & ResearchLearning & EducationCurated ResourcesLearning Paths & CoursesLabs & Practice
412일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
jgalego/hiddensteps

HiddenSteps

HiddenSteps — 로컬 우선 개인 워크플로우 인텔리전스 플랫폼

저장소 보기

핵심 크레이트 — 구현 현황

이는 docs/design/02-system-architecture.md의 대상 모듈 맵에 대한 솔직한 현재 상태 보충 자료입니다. 실제로 구축된 것, 목(mock)이 아닌 실제 백엔드에 대해 검증된 것, 그리고 여전히 실제로 누락된 것을 설명합니다 — 계획된 것이 아니라요 (계획은 docs/roadmap/01-implementation-roadmap.md에 있습니다).

저장소 루트에서 cargo build --workspace && cargo test --workspace && cargo clippy --workspace --all-targets -- -D warnings를 실행하세요. 이 글을 작성하는 시점 기준: 12개 크레이트, 193개 통과 테스트, clippy 경고 0건, cargo fmt --check 통과 — 디스플레이나 외부 서비스가 필요 없는 11개 크레이트에서 183개, 그리고 실제 X11 디스플레이가 필요한 hiddensteps-observation에서 10개(디스플레이가 있는 환경에서 검증됨; 해당 행 참조). 4개의 테스트는 설계상 #[ignore] 처리되어 있으며(아래 참조) 실패로도, 193개에도 포함되지 않습니다.

현재 구현된 것

크레이트구현 내용검증 방법
hiddensteps-domain핵심 타입: PrivacyLevel/PrivacyState, EventSummary/SignalType, Pattern, Recommendation, AuditEntry, 그리고 CapturedSignal — 구조적으로 영속화가 불가능한(Serialize 없음) 타입으로, ADR-0006의 원시 데이터 규칙을 타입 수준에서 강제합니다단위 테스트: 레벨 왕복(round-tripping)/순서, 딥 모드 TTL 게이팅
hiddensteps-securitySecretStore (ADR-0008): 실제 OS 볼트(KeyringSecretStore) + 인메모리(테스트) 구현; CSPRNG 마스터 키 생성(키가 해제된 메모리에 남지 않도록 드롭 시 삭제되는 zeroize::Zeroizing 래퍼로 반환); 휴대 모드(Portable Mode)용 Argon2id 패스프레이즈 파생(PassphraseKey는 드롭 시 파생 키를 제로화하고, 비밀 아닌 솔트는 유지). hiddensteps-event-store도 마찬가지로 키를 포함하는 PRAGMA key/rekey SQL 텍스트를 Zeroizing에 보관인메모리 스토어와 KDF에 대한 단위 테스트; 실제 볼트 왕복은 #[ignore] 처리됨(아래 참조)
hiddensteps-event-storeSqlCipherEventStore (ADR-0003): docs/design/07-database-schema.md의 전체 스키마, 개인정보 상태·이벤트·감사 로그·패턴·패턴↔이벤트 링크·패턴 임베딩(아래 참고 참조)·추천·LLM 공급자 설정·일반 설정의 CRUD, 그리고 delete_all_data(트랜잭션 방식이며, 재시작 후에도 유지되는 "전체 삭제"를 위한 rekey도 수행)/export_data/count_rows(진단)/delete_expired_events(apps/desktop/src-tauri의 주기적 추천 루프에서 호출되는 딥 모드 TTL 정리 — ttl_expires_at은 v0.1.0부터 영속화되었지만 이전에는 해당 시점이 지난 행을 삭제하는 코드가 없었습니다); 외래 키 강제(PRAGMA foreign_keys = ON)로 schema.sql의 패턴↔이벤트 링크에 대한 ON DELETE CASCADE가 실제로 실행됨실제 SQLCipher 파일에 대한 33개 테스트: 잘못된 키로는 열리지 않음, 동일한 키로는 올바르게 다시 열림, 전체 삭제가 최신 테이블을 포함한 모든 테이블을 비움, rekey 왕복, TTL 정리가 만료되지 않은 이벤트를 건드리지 않음, 계단식 삭제가 고아 패턴↔이벤트 링크를 남기지 않음
hiddensteps-redaction교정 엔진(Redaction Engine, docs/design/05-privacy-model.md §4): API 키/토큰/PEM 키/이메일/SSN/신용카드용 regex+Luhn 탐지기, 엔트로피 기반 모호한 비밀 탐지기, 불확실성 시 폐기(drop-on-uncertainty) 정책30개 테스트 — 의도적으로 적대적인 입력 포함(산문에 포함된 비밀, git SHA처럼 아슬아슬하게 비밀이 아닌 것, 대시 없음/공백 있는 SSN, 숫자 패딩된 카드 번호, 단일 대소문자 고엔트로피 토큰)

그리고 crates/ 외부(루트 워크스페이스의 일부가 아님 — 아래에서 이유 확인):

공개된 단순화이지 결함이 아닌 것

  • 패턴 임베딩은 hiddensteps-event-store에 일반 BLOB로 저장되며 코사인 유사도는 Rust에서 계산됩니다 — ADR-0007의 sqlite-vec 가상 테이블을 대신합니다(event-store/src/schema.sql 상단의 주석 참조) — 네이티브 SQLite 확장을 로드하는 것은 이 환경에서 검증할 수 없었고, ADR-0007 자체도 현실적인 단일 사용자 규모에서는 sqlite-vec의 동작이 본질적으로 무차별 정밀 검색(brute-force exact search)이라고 명시합니다. 동일한 의미론, 네이티브 확장 위험 없음.
  • hiddensteps-observation의 macOS 및 Windows 모듈(src/macos/, src/windows/)은 macOS/Windows 툴체인 없이 작성된, 오랫동안 안정적인 플랫폼 API(CGWindowListCopyWindowInfo; GetForegroundWindow/GetWindowTextW/QueryFullProcessImageNameW)에 대한 실제 완전한 소스입니다 — 그리고 이제 둘 다 깨끗하게 컴파일되며, .github/workflows/ci.yml의 core 작업 매트릭스로 검증되었습니다. macOS 모듈은 먼저 실제 수정이 하나 필요했습니다(의 타입이 지정되지 않은 기본 제네릭 매개변수가 키에 대한 의 트레이트 바운드를 충족하지 못함 — 로 명시적으로 타입을 지정하여 수정); Windows는 첫 시도에 깨끗하게 컴파일되었습니다.

Tauri 셸과 UI가 crates/ 외부에 있는 이유

crates/*는 루트 Cargo.toml 워크스페이스이며, cargo가 가져오는 것 외에는 시스템 종속성 없이 이 Linux 개발 환경에서 완전히 빌드/테스트할 수 있습니다. apps/desktop/src-tauri는 컴파일조차 하려면 webkit2gtk-4.1(Linux)이 필요한데, 이 환경에서는 설치할 수 없습니다(비밀번호 없는 sudo 없음, 작동하는 nix/패키지 관리자 경로 없음 — 직접 시도로 확인됨). 워크스페이스에서 제외함으로써 cargo build --workspace가 이 샌드박스에서 아무도 수정할 수 없는 크레이트 하나 때문에 영구히 빨간불이 되는 대신 여기서 100% 초록불을 유지합니다. 같은 이유로 Cargo.toml에 자체 빈 [workspace] 테이블도 필요합니다 — 그렇지 않으면 Cargo가 어쨌든 이 상위 워크스페이스에 연결하려 시도하고 "current package believes it's in a workspace when it's not" 오류로 실패합니다. apps/desktop/ui에는 그러한 제약이 없으며 Rust 코어와 같은 방식으로 검증됩니다. 두 부분 모두 여전히 종단 간 검증됩니다 — 이 샌드박스 대신 CI에 의해요.

#[ignore] 처리된 네 개 테스트에 대한 참고

  • hiddensteps-security::keyring_store::tests::set_get_delete_round_trip_against_the_real_vault — 실제 OS 자격 증명 볼트/데스크톱 세션이 필요합니다.
  • hiddensteps-observation::linux::shortcuts::tests::grabs_and_ungrabs_a_real_shortcut — 실제 세션 전체 XGrabKey를 수행하므로, 공유 환경에서 자동으로 실행하면 방해가 됩니다.
  • hiddensteps-llm-provider의 tests/ollama_live.rs(테스트 2개) — 실제 실행 중인 Ollama 인스턴스가 필요합니다. 두 테스트 모두 개발 중에 실제 로컬 qwen3:0.6b(0.6B 파라미터 하이브리드 추론 모델) 인스턴스에 대해 실제로 실행되었으며 합산 약 2초 만에 통과했습니다; 다른 설정을 원하면 HIDDENSTEPS_TEST_OLLAMA_MODEL/HIDDENSTEPS_TEST_OLLAMA_URL 환경 변수로 모델/URL을 재정의하세요.

네 개 모두 실제 테스트이지 잔재물이 아닙니다 — docs/roadmap/03-testing-strategy.md §2는 CI에서 목 뒤에 있어야 하는 로직과 의도적인 수동 검증에 속하는 OS/세션/외부 서비스 통합 사이를 정확히 이렇게 구분합니다. 실행하기 적절한 머신에서 cargo test -p <crate> -- --ignored로 이 중 아무 테스트나 실행하세요(하나만 실행하려면 <test name>을 추가하세요).

도구 다운로드
hiddensteps-pipeline이벤트 파이프라인(ADR-0006): 분류(Classify) → 교정(Redact) → 요약(Summarize), 신호 유형별 개인정보 수준 게이팅, 딥 모드 TTL 할당교정으로 인한 폐기, 수준 게이팅 폐기, 성공적인 요약을 다루는 8개 테스트
hiddensteps-observationObservationSource (ADR-0005) + Linux: ActiveWindowSource (X11 GetInputFocus), FileOperationSource (notify를 통한 inotify), ClipboardMetadataSource (X11 선택, 메타데이터 전용), GlobalShortcutSource (X11 XGrabKey). 추가로 macOS/Windows 소스 파일(아래 참조)이 환경에서 11개 중 10개 테스트가 실제 백엔드에 대해 실행됨 — 목이 아닌 실제 X11 디스플레이(WSLg의 DISPLAY=:0)와 실제 inotify. GlobalShortcutSource의 실제 그래브 테스트 1개는 설계상 #[ignore] 처리됨
hiddensteps-llm-providerLlmProvider (ADR-0004): Ollama 클라이언트(하이브리드 추론 모델용 think: Option<bool> 요청 필드 포함), OpenAI 와이어 호환 클라이언트(OpenAI/Azure/OpenRouter/Together/Groq/DeepSeek/LocalAI 지원), Anthropic Messages 클라이언트, 로컬 런타임 자동 감지. 모든 클라이언트는 요청 타임아웃(build_http_client)을 설정하여 멈춘 원격이 호출을 영원히 차단하지 못하게 합니다; Ollama는 max_tokens를 중첩된 options.num_predict로 전달합니다wiremock 목 서버에 대한 19개 테스트(실제 타임아웃 발생 확인 및 Ollama가 실제로 num_predict를 전송하는지 확인 포함), 추가로 실제 Ollama 통합 테스트 2개(tests/ollama_live.rs, #[ignore] 처리 — 아래 참조)가 실제 문제를 발견하고 수정했습니다: 동일한 프롬프트가 실제 로컬 하이브리드 추론 모델에서 think를 기본값으로 두면 2분 이상 걸렸지만, think: Some(false)로 설정하면 몇 초 만에 처리되었습니다
hiddensteps-patterns패턴 감지(슬라이딩 윈도우 n-gram 시퀀스 매칭) + 워크플로 그래프(가중치가 있는 전이 그래프) — ADR-0010의 레이어 116개 테스트 — PROMPT.md의 "observed 31 times" 예제와 직접적으로 유사한 테스트와, 연속 반복에 대한 중첩 윈도우가 이중 계산되지 않는지 확인하는 회귀 테스트 포함
hiddensteps-recommendations추천 엔진의 레이어 2(ADR-0010): 구조화된 JSON 프롬프트 계약을 사용한 LLM 합성, 서술 모순 검증기, 재시도 루프 — 중요한 점은 숫자 필드(estimated_time_saved_minutes)가 LLM 출력에서 전혀 파싱되지 않고, 레이어 1에서만 계산됩니다스크립트된 테스트 공급자에 대한 23개 테스트 — 잘못된 JSON 재시도, 서술 모순 재시도(철자로 표기된 숫자와 why뿐만 아니라 모든 LLM 제어 필드 포함), 문자열 인식 JSON 추출 포함
hiddensteps-privacy-engine클라우드 디스패치 게이트(docs/design/03-data-flow-diagrams.md §5) 및 동의 버전 관리(docs/design/05-privacy-model.md §5); PrivacyGatedProvider는 모든 LlmProvider를 래핑하여 정상적인 호출 경로로는 게이트를 우회할 수 없습니다레벨 4 콘텐츠가 모든 동의가 부여된 경우에도 차단되는지 확인하는 테스트를 포함한 13개 테스트
hiddensteps-plugin-hostWASM 플러그인 호스트(ADR-0009): 폐쇄된 기능(capability) 열거, 매니페스트 검증, 부여된 기능의 호스트 함수만 링크하는 wasmtime 기반 샌드박스, 그리고 보유한 기능과 무관하게 플러그인 인스턴스의 CPU/메모리를 제한하는 연료 계량(fuel metering)과 메모리 ResourceLimiter — docs/research/06-threat-model.md의 서비스 거부(Denial-of-Service) 섹션이 기능 강제만으로는 해결할 수 없다고 명명한 두 축입니다(기능이 없는 모듈도 무한 루프를 돌거나 메모리를 무한정 늘릴 수 있습니다). instantiate_from_manifest는 안전한 진입점입니다: 어떤 기능이 링커에 도달하기 전에 매니페스트 검증(스크린샷에는 레벨 4가 필요하다는 규칙)을 강제하고 매니페스트가 선언하지 않은 기능의 부여를 거부합니다 — 일반 instantiate 기능 슬라이스는 매니페스트와 전혀 연결되어 있지 않습니다실제 기능 탈출 시도를 포함한 20개 테스트: 테스트 시점에 컴파일되는 직접 작성한 WAT 모듈로, 부여되지 않은 기능의 임포트가 단순히 사용되지 않는 것이 아니라 실제로 미해결 상태임(인스턴스화 실패)을 증명합니다; 또한 실제 무한 루프 모듈과 무제한 memory.grow 모듈이 멈추거나 메모리를 고갈시키는 대신 트랩을 발생시킵니다
hiddensteps-enterprise-policy정확히 두 개의 조절 항목(개인정보 수준 하한, 공급자 허용 목록)만 있는 정책 스키마(docs/design/05-privacy-model.md §6) — 정책이 제약하려 할 수 있는 다른 무엇을 위한 필드는 존재하지 않습니다. 앱 데이터 디렉터리에 존재하는 경우 enterprise-policy.json 파일에서 로드되며(임시적이지만 실제 메커니즘 — docs/design/08-plugin-architecture.md가 기술하는 전체 PolicyLoader 플러그인 커넥터는 아직 구축되지 않음), hiddensteps-event-store의 enterprise_policy 테이블을 통해 영속화되고, apps/desktop/src-tauri의 set_privacy_level/set_ai_provider 명령에서 실제로 강제됩니다 — 수준/공급자 선택이 기록될 수 있는 두 변형 지점입니다설계상 제외된 키 5개가 추가된 최대한 적대적인 정책 파일을 파싱하고 그중 어느 것도 파싱을 통과하지 못하는지 확인하는 테스트를 포함한 6개 테스트
위치구현 내용검증 방법
../apps/desktop/uiReact/TypeScript UI: OnboardingWizard(8개 화면 전체, docs/ux/02), PrivacyDashboard(docs/ux/03), RecommendationCard(docs/ux/04), SettingsPage, DiagnosticsPage — App.tsx에서 연결되며, 타입이 지정된 tauriBridge.ts를 통해서만 코어와 통신실제 jsdom 렌더링에 대한 vitest + @testing-library/react 기반 50개 테스트 — 온보딩 위저드의 단계 게이팅(검사가 성공하지 않으면 검증 단계를 지나칠 수 없음, 동의를 체크하지 않으면 관찰을 시작할 수 없음), 모든 변형 호출 지점의 오류 표시, 재동의 배너, 추천 증거 추적, axe-core 접근성 게이트 포함; tsc -b 타입 검사 통과
../apps/desktop/src-tauriTauri 셸: 위의 모든 크레이트를 연결하는 약 21개의 IPC 명령(docs/design/09-api-specification.md), 그리고 Linux용 실제 캡처→파이프라인→저장소→UI 이벤트 백그라운드 루프CI에서 Linux, macOS, Windows 모두 깨끗하게 컴파일됨 — 특히 이 개발 샌드박스에서는 아닙니다(이유는 ../apps/desktop/README.md 참조), 하지만 여기에 있던 "미검증" 주의사항은 사라졌습니다: CI의 첫 실제 실행에서 로컬 검토로는 절대 잡을 수 없었던 실제 버그 3개(누락된 Serialize derive, 누락된 Cargo 기능 플래그, 누락된 생성 아이콘 파일)를 발견하고 수정했습니다
CFDictionary
&CFString
find
CFDictionary<CFString, CFType>
  • 브라우저 도메인 관찰 및 전역 단축키 자동 시작은 hiddensteps-observation/src/lib.rs의 문서 주석에 명시된 결함입니다 — 전자는 이 저장소에 포함되지 않은 별도의 브라우저 확장 아티팩트가 필요합니다; 후자(GlobalShortcutSource)는 구현되어 있지만 자동 시작되지는 않습니다 — 공유 개발 샌드박스에서 세션 전체에 걸쳐 키 조합을 그래브하면 적극적으로 방해가 되기 때문입니다.
  • 추천 엔진의 레이어 2는 구성된 LlmProvider를 통해 정성적 판단을 합성합니다; 스크립트된 대체 공급자에 대해 테스트되었습니다(재시도/검증 로직에 대한 실제 어서션). hiddensteps-llm-provider 자체는 이제 실제 Ollama 커버리지를 갖습니다(아래 참조); 합성기의 자체 프롬프트 계약을 실제 모델에 대해 종단 간 실행하는 것(기본 HTTP 클라이언트가 아닌)이 다음 자연스러운 단계이며, 아직 완료되지 않았습니다.
  • get_diagnostics(Tauri 셸)는 실제 이벤트/패턴/추천/감사 로그 개수와 실제 디스크 파일 크기를 보고하지만, GPU/CPU/메모리 사용량, 관찰 OS 권한 상태, 업데이트 상태는 보고하지 않습니다 — PROMPT.md의 전체 자가 진단(Self-Diagnostics) 목록입니다. 이를 렌더링하는 각 UI 컴포넌트는 가짜 "OK"를 표시하는 대신 이 사실을 명시적으로 알립니다.