Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ranwhat — AI 코딩 에이전트를 위한 비행 기록 장치 및 비밀 스캐너. Claude Code, Codex, Gemini CLI 등 9개 이상이 실행한 내용을 읽고 위험한 작업과 유출된 키를 표시합니다. 로컬에서 실행되며, 텔레메트리 없음, MIT. | Kitploit
도구/GitHubGitHub/matijamiki/ranwhat
Defensive ToolsIdentity ManagementScripting & AutomationInformation GatheringPrivacyUtilities & FrameworksSecret DetectionIncident ResponseAI SecurityLog Analysis
GitHubmatijamiki/ranwhat
1115시간 47분 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ranwhat

AI 코딩 에이전트를 위한 비행 기록 장치 및 비밀 스캐너. Claude Code, Codex, Gemini CLI 등 9개 이상이 실행한 내용을 읽고 위험한 작업과 유출된 키를 표시합니다. 로컬에서 실행되며, 텔레메트리 없음, MIT.

저장소 보기웹사이트

ranwhat

AI 에이전트를 위한 비행 기록 장치이자, 에이전트가 보유한 권한을 스캔하는 도구. Claude Code 및 다른 열한 개의 코딩 에이전트를 위한 AI 코딩 에이전트 보안 도구로, 여러분의 컴퓨터에서 실행됩니다. 계정도, 텔레메트리도, 의존성도 없습니다.

웹사이트 및 문서: https://ranwhat.com

여러분의 코딩 에이전트는 여러분의 셸, 키, 저장소를 가지고 있습니다. ranwhat은 에이전트가 실제로 실행한 내용을 읽고, 알아둘 가치가 있는 몇 안 되는 되돌릴 수 없는 행동을 드러냅니다.

$ ranwhat watch --days 90

  ranwhat watch  · local agent flight recorder
  ----------------------------------------------------------------------------
  Read Claude Code: 4 transcripts, last 90 days

  2 critical  2 high

  * Credential material accessed   2026-09-30 18:13:00  Bash
      cat ~/.ssh/id_rsa
      -> The agent read a file whose only purpose is to hold secrets. Whatever
         it read is now in a model context you do not control.

  * Bulk or recursive deletion   2026-09-28 14:42:00  Bash
      …rm -rf '@'
      -> Recursive deletion. Recoverable only if something else was backing it
         up.

  * Package or release published   2026-09-21 11:05:00  Bash
      npm publish
      -> Something was pushed to a registry other people may install from.
         Supply-chain reach, and usually irreversible.

  * Destructive git operation   2026-09-15 17:30:00  Bash
      git push --force origin main
      -> History rewriting or branch deletion. This is the class of action
         that destroys the record of what else happened.

  ----------------------------------------------------------------------------
  Read locally. Nothing was transmitted.

Claude Code는 cleanupPeriodDays (기본값 30일)보다 오래 사용하지 않은 세션의 트랜스크립트를 삭제합니다. 따라서 --days 90은 이 값을 늘렸다면 더 많이 찾아내고, 그 기간 내에 재개한 세션에 더 오래된 행동이 들어 있다면 더 찾아내며, Claude Desktop이나 Cowork에서 시작되었거나 마지막으로 이어진 세션(Claude Code v2.1.248 이상은 기본적으로 나이와 무관하게 보관)의 경우에도 더 찾아냅니다.

설치

아무것도 설치하지 않고 한 번만 실행하세요:

uvx ranwhat check

또는 PATH에 추가하세요:

pipx install ranwhat
pip install ranwhat

그런 다음 ranwhat demo를 실행하면 번들로 제공되는 예제에서 권한 스캔을 보여줍니다.

Python 3.9 이상. 의존성이 없으며, 여러분의 컴퓨터에서 아무것도 빌드되지 않습니다.

명령어

ranwhat check: 알아둘 가치가 있는 모든 것을 한 번의 읽기 전용 실행으로

watch와 clean을 함께 실행하며 아무것도 변경하지 않습니다.

터미널에서는 check, watch, clean이 읽는 동안 stderr에 하나의 상태 줄을 유지하며, 각 패스마다 트랜스크립트를 세어 나갑니다: indexing secrets(첫 실행 시 (first run)), checking actions, looking for secrets. stderr가 터미널이 아니거나 --json을 사용할 때는 아무것도 기록되지 않습니다.

ranwhat watch: Claude Code와 다른 에이전트가 실행한 내용 감사

Claude Code와 다른 코딩 에이전트가 이미 디스크에 기록한 내용을 읽습니다. 래퍼도, 프록시도, 여러분의 크리티컬 패스에 아무것도 없습니다. 아래의 모든 에이전트는 기본적으로 읽히며, 각자 자신의 기록을 보관하는 위치에서 읽습니다(대괄호 안의 변수가 에이전트 자체를 옮기듯 그 위치를 옮깁니다). 여러분의 컴퓨터에 없는 에이전트는 건너뜁니다.

소스위치형식
Claude Code~/.claude/projects/*/*.jsonl 및 각 세션의 subagents/**/agent-*.jsonl, 또는 설정된 경우 $CLAUDE_CONFIG_DIR/projects 아래의 동일 경로JSONL
Codex (CLI, IDE 확장, 데스크톱 앱)~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl 및 archived_sessions/ ($CODEX_HOME); history.jsonl, shell_snapshots/ 및 SQLite 스레드 인덱스는 시크릿을 검색함JSONL; SQLite 읽기 전용; .jsonl.zst 읽기 전용, Python 3.14 이상 또는 zstd 명령 사용 시
Gemini CLI~/.gemini/tmp/<project>/chats/session-*.jsonl 및 이전 session-*.json ($GEMINI_CLI_HOME)JSONL, JSON
GitHub Copilot CLI~/.copilot/session-state/<session>/events.jsonl ($COPILOT_HOME)JSONL
Qwen Code~/.qwen/projects/<project>/chats/*.jsonl 및 이전 tmp/<hash>/chats/session-*.json ($QWEN_RUNTIME_DIR, $QWEN_HOME)JSONL, JSON
Grok Build~/.grok/sessions/<folder>/<session>/updates.jsonl ($GROK_HOME)JSONL
Droid~/.factory/sessions/*.jsonl, 그리고 그 아래의 -<cwd>/*.jsonl 및 btw/*.jsonl ($FACTORY_HOME_OVERRIDE)JSONL
Kimi Code~/.kimi-code/sessions/<folder>/<session>/agents/*/wire.jsonl ($KIMI_CODE_HOME)JSONL
Kimi CLI~/.kimi/sessions/<folder>/<session>/wire.jsonl 및 context*.jsonl ($KIMI_SHARE_DIR)JSONL
Pi~/.pi/agent/sessions/--<cwd>--/*.jsonl ($PI_CODING_AGENT_DIR)JSONL
Muse Code~/.local/share/muse/sessions/YYYY/MM/DD/<session>/session.jsonl ($XDG_DATA_HOME/muse)JSONL
OpenClaw$OPENCLAW_STATE_DIR/agents/*/agent/openclaw-agent.sqliteSQLite, 읽기 전용

Meta Muse는 Meta의 클라우드에서 실행되며 여러분의 컴퓨터에 아무것도 보관하지 않으므로 읽을 것이 없습니다. Meta의 코딩 CLI인 Muse Code는 지원됩니다. Grok Bot은 여러분의 컴퓨터에서 실행하는 명령에 대해서도 xAI의 클라우드에 기록을 보관합니다. xAI의 코딩 CLI인 Grok Build는 지원됩니다. 현재의 Amp는 스레드를 ampcode.com에 보관합니다. Cursor는 형식이 1차 출처와 대조 확인되는 대로 다음 차례입니다.

아홉 가지 규칙: 자격 증명 접근, 도구 호출 내 시크릿 형태 문자열, 패키지 게시, 클라우드 리소스 변경, 금융 API 호출, 로그 변조, 파괴적 git, 재귀적 삭제, curl로 업로드된 로컬 파일. 각 에이전트의 도구 호출은 동일한 규칙으로 판정되며, 모든 행동은 어느 에이전트가 실행했는지 표시합니다.

ranwhat watch --days 30
ranwhat watch --source codex                # one agent (repeatable)
ranwhat watch --path codex=~/work/.codex    # an agent's history elsewhere
ranwhat watch --json
ranwhat sources                             # every agent, where it looked, what it found

--root와 --state-dir은 여전히 작동하며, 각각 --path claude-code=와 --path openclaw=의 이름입니다.

ranwhat clean: Claude Code 및 다른 에이전트의 트랜스크립트에서 시크릿 찾기

에이전트가 cat .env를 실행하면, 그 출력이 트랜스크립트에 기록됩니다: 여러분의 데이터베이스 비밀번호, JWT 시크릿, 프로바이더 토큰이 평문으로, Claude Code가 기본적으로 30일간 보관하는 파일에 기록됩니다.

ranwhat clean               # report, then open a review session
ranwhat clean --apply       # mask everything without asking

clean은 모든 에이전트의 기록을 검색하고, 에이전트가 다시 쓰도록 허용한 파일에서만 값을 마스킹합니다: 지난 2분 동안 아무것도 쓰지 않은 일반 JSONL, JSON 또는 텍스트 파일입니다. 데이터베이스(Codex의 스레드 인덱스, OpenClaw의 에이전트 데이터베이스)와 압축 파일은 읽기 전용입니다: 보고서는 시크릿을 보유한 각각의 이름과 에이전트 내에서 이를 제거하는 방법을 알려줍니다.

실제 기록을 스캔하는 데는 시간이 걸리므로, 세션은 방금 찾은 것 위에 열린 상태로 유지되어 다시 스캔하지 않고도 조치할 수 있습니다:

ranwhat> list           the findings again
ranwhat> show 3         where it appears, and what to roll it at
ranwhat> mask 3         mask just that one
ranwhat> mask all       mask everything listed
ranwhat> keep 3         leave it alone
ranwhat> rotate         what to rotate, grouped by provider

각 발견 항목은 어느 프로젝트에서 발견되었는지, 그리고 트랜스크립트가 이름을 밝히는 경우 그것이 읽혀 나온 파일을 알려줍니다. 64자 문자열은 어느 .env에서 빠져나왔는지 모른다면 쓸모가 없기 때문입니다:

* Stripe live secret key   sk_…dc  32 chars  seen 8x
      read from api/.env
      in         /Users/you/Desktop/app

수정은 교정이 아닙니다. 여기서 값을 마스킹한다고 해서 노출이 취소되지는 않습니다. 그 값은 이미 디스크에 있었고 이미 여러분이 통제하지 못하는 모델 컨텍스트에 있었습니다. 교체가 해결책이며, 마스킹은 두 번째 유출을 막을 뿐입니다. 보고서는 안전하다고 암시하는 대신 이 점을 명시합니다.

옆에 있는 키가 시크릿이라고 명명하거나 값이 인식 가능한 자격 증명 형태를 지닐 때만 값을 마스킹합니다. 플레이스홀더, 템플릿 파일, 일반 설정은 그대로 두며, 공개된 문서 예제(AWS의 AKIAIOSFODNN7EXAMPLE)와 명백한 테스트 픽스처(예: AKIA1234567890ABCDEF)도 마찬가지입니다. 백업은 ~/.ranwhat/backups에 저장되며, 다시 쓰인 파일은 원본을 대체하기 전에 다시 파싱됩니다.

옆에 키가 없는, 명령에 입력된 비밀번호는 명령이 그것을 받는 위치에서 발견됩니다: mysql -pPASSWORD(및 mysqldump, mysqladmin, mariadb), sshpass -p, redis-cli -a, docker login -p, curl -u user:password, --password, 그리고 sqlcmd, mongosh, ldapsearch, htpasswd, keytool, ConvertTo-SecureString -AsPlainText, smbclient의 동일한 위치. 그곳의 변수, 예컨대 -p$MYSQL_PWD는 그대로 둡니다.

시크릿 인덱스

check와 watch는 clean이 여러분의 기록 어디에서든, 모든 에이전트의 기록에서 찾아낸 모든 시크릿을 숨깁니다. --days와 --source가 무엇을 말하든, 그 사본이 어디에 나타나든 마찬가지입니다: Codex 세션에서 읽힌 비밀번호는 Claude Code가 입력한 곳에서 숨겨집니다. 매 실행마다 모든 트랜스크립트를 읽지 않고도 그것들을 알기 위해, ~/.ranwhat/known/(설정된 경우 $RANWHAT_HOME/known/)에 인덱스를 유지하며, Claude Code 트랜스크립트 디렉터리당 파일 하나를 두고, 파일의 크기나 수정 시간이 바뀔 때만 다시 읽습니다. 첫 실행은 그것들을 모두 읽고 그렇게 말합니다. check는 자체 시크릿 검색으로 인덱스를 채우므로, 시크릿을 위해 트랜스크립트를 두 번 읽지 않습니다.

인덱스는 솔트 처리된 지문만 보관하며, 시크릿은 결코 보관하지 않습니다: 각각에 대해 처음 여섯 문자의 키 기반 BLAKE2b 해시 16비트(아주 많은 시작 부분이 공유하는 태그라서 그것들에 대한 추측을 16비트 이상 좁히지 못함), 길이, 그리고 전체 값과 그 마스크가 유지하는 지문의 키 기반 해시입니다. 키는 무작위이며, 머신당 한 번 생성되어 인덱스 옆에 위치합니다. 두 파일 모두 여러분만 읽을 수 있습니다. clean은 마스킹하기 전에 각 시크릿을 추가하므로, 놓친 사본도 세션이 어떻게 끝나든 숨겨진 상태로 남습니다.

도구 다운로드