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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
screenscrub — 스크린샷에서 자격 증명을 찾아 비밀 관리자에 저장하고, 이미지에서 복구 불가능하게 삭제합니다 — 로컬, 오프라인, OCR 기반. | Kitploit
도구/GitHubGitHub/adversis/screenscrub
OSINT (Open Source Intelligence)Password CrackingData ExfiltrationInformation GatheringPenetration TestingSecret Detection
GitHubadversis/screenscrub

screenscrub

스크린샷에서 자격 증명을 찾아 비밀 관리자에 저장하고, 이미지에서 복구 불가능하게 삭제합니다 — 로컬, 오프라인, OCR 기반.

저장소 보기
6103개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
screenscrub

screenscrub

스크린샷에서 자격 증명을 찾아 비밀 관리자로 추출하고 이미지에서 복구 불가능하게 삭제하여 비밀번호가 노트, 스크린샷, ~/Desktop에 방치되지 않도록 합니다.

로컬. 오프라인. 조용히. 기본적으로 네트워크 없음, 텔레메트리 없음.

screenscrub는 두 가지 기존 도구 카테고리를 연결합니다: GUI 리뷰어(Xnapper, Shhshot, macshot)는 수동으로 PII를 흐리게 하지만 비밀과 주소를 구분하지 못하거나 숨기는 내용을 캡처하지 못합니다; 비밀 스캐너(gitleaks, TruffleHog)는 실제 자격 증명을 찾지만 텍스트에서만 찾고 PNG에서는 찾지 못합니다. screenscrub는 gitleaks 수준의 탐지(레드팀 팩 및 엔트로피 분석 포함)를 픽셀에 헤드리스로 적용합니다: 각 비밀을 관리자로 캡처하고, 이미지를 복구 불가능하게 삭제한 후, 결과를 다시 OCR하여 비밀이 제거되었음을 증명합니다.

안전망이지 보장이 아닙니다 — screenscrub는 이미지가 "완전히 깨끗하다"고 주장하지 않습니다; OCR과 탐지 모두 누락되는 경우가 있으므로 항상 결과를 직접 확인하세요. 이에 의존하기 전에 읽어보세요.

screenscrub scan   ~/Screenshots                 # dry run: 감지 + 보고, 쓰지 않음
screenscrub clean  ~/Screenshots --out ~/clean \ # 추출, 삭제, 검증, 격리
    --sink file://./secrets.age --yes
screenscrub verify ~/clean                       # 폴더가 깨끗한지 증명 (그렇지 않으면 종료 코드 ≠0)

screenscrub clean --keep-originals ./tmp
Cleaning 7 image(s) in ./tmp (7 worker(s))…
[1/7] tmp/ssh.jpg — 6 region(s) → tmp/ssh.redacted.jpg ✓ verified
[2/7] tmp/key.jpg — 13 region(s) → tmp/key.redacted.jpg ✓ verified
[3/7] tmp/test2.jpg — 12 region(s) → tmp/test2.redacted.jpg ✓ verified
[4/7] tmp/test5.jpg — 13 region(s) → tmp/test5.redacted.jpg ✓ verified
[5/7] tmp/test3.jpg — error: verification failed: 4 secret region(s) still detectable in tmp/test3.redacted.jpg; original preserved
[6/7] tmp/test4.jpg — error: verification failed: 9 secret region(s) still detectable in tmp/test4.redacted.jpg; original preserved
[7/7] tmp/test6.jpg — error: verification failed: 7 secret region(s) still detectable in tmp/test6.redacted.jpg; original preserved

7/7 file(s) flagged, 382 region(s) total, 3 file(s) errored/unverified.
By kind:
   high-entropy             343
   keyword-secret           15
   db-connection-uri        10
   github-pat               6
   unix-crypt-hash          6
   aws-access-key           1
   stripe-key               1
Needs manual attention (3):
   tmp/test3.jpg — error: verification failed: 4 secret region(s) still detectable in tmp/test3.redacted.jpg; original preserved
   tmp/test4.jpg — error: verification failed: 9 secret region(s) still detectable in tmp/test4.redacted.jpg; original preserved
   tmp/test6.jpg — error: verification failed: 7 secret region(s) still detectable in tmp/test6.redacted.jpg; original preserved
Before — 비밀 값이 보임 After clean — 복구 불가능하게 삭제됨
원본 스크린샷: 수십 개의 API 키 예시 값이 보임 screenscrub 후 동일한 스크린샷: 모든 비밀 값이 검게 칠해지고, 레이블과 정규식 패턴은 여전히 읽을 수 있음

동일한 스크린샷의 clean 전과 후: 모든 비밀 값이 픽셀로 디코딩되고, 박스 처리된 후 새 이미지로 다시 인코딩됩니다(복구 불가능). 레이블과 구조는 읽을 수 있습니다.


설치

tesseract OCR 바이너리가 PATH에 필요합니다:

  • macOS: brew install tesseract
  • Windows: winget install UB-Mannheim.TesseractOCR (또는 UB Mannheim 설치 프로그램)
  • Debian/Ubuntu: apt-get install tesseract-ocr

그런 다음 빌드:

go build -o screenscrub ./cmd/screenscrub

macOS(arm64/amd64) 및 Windows(amd64)로 크로스 컴파일 가능 — cgo 대신 tesseract를 외부 호출합니다. macOS에서만 테스트되었습니다.

사용법

scan <dir|file> — dry run (시험 실행)

감지하고 보고합니다; 아무것도 쓰지 않습니다.

screenscrub scan ~/Screenshots --ignore 'node_modules/**' --ignore '*.thumb.png'
screenscrub scan shot.png --json            # 기계가 읽을 수 있는 보고서
screenscrub scan ~/Screenshots --preview ~/review   # clean이 무엇을 삭제할지 확인

--preview <dir>는 플래그가 지정된 각 이미지의 비파괴 복사본을 작성하며, 탐지된 각 영역을 윤곽선(채우지 않음)으로 표시하여 clean이 삭제할 내용을 확정하기 전에 확인할 수 있게 합니다. ⚠️ 이 복사본에는 여전히 비밀이 포함되어 있으므로, 디렉터리는 0700 권한으로 생성되며 공유해서는 안 됩니다.

보고서는 요약으로 끝납니다: 종류별 분석과 명시적인 "수동 확인 필요" 목록 — 오류가 발생했거나, 검증에 실패했거나, 스크린샷에 대해 OCR 텍스트를 생성하지 않은 파일들입니다(조용한 OCR 누락은 깨끗한 이미지와 동일하게 읽히므로, 신뢰하기보다 표면화됩니다).

scan --fail-on-findings는 무언가 탐지되면 0이 아닌 종료 코드를 반환합니다 — pre-commit/CI 게이트용입니다.

clean <dir|file> — 추출, 삭제, 격리

SCREENSCRUB_PASSPHRASE=… screenscrub clean ~/Screenshots \
    --out ~/Screenshots/clean \
    --sink file://./secrets.age \
    --yes

검출 항목이 있는 각 이미지에 대해 clean은:

  1. 모든 비밀을 싱크에 저장하고,
  2. <name>.redacted.png를 --out (또는 원본 옆)에 작성하며,
  3. 원본을 age로 암호화하여 <out>/quarantine/으로 이동합니다.

비밀은 --sink에 전달하는 싱크로 전송됩니다: age 파일(기본값), 1Password (op://), KeePassXC (keepassxc://), macOS 키체인 (keychain://), HashiCorp Vault (vault://) — 또는 하드웨어 기반 age 수신자(YubiKey, Touch ID). 비밀 싱크를 참조하세요.

플래그:

플래그의미
--out <dir>삭제된 복사본이 저장될 디렉터리 (기본값: 원본 옆)
--sink <uri>file://./secrets.age · op://Vault · keepassxc://./v.kdbx · keychain://service · vault://KV
--recipient <age1…>age 수신자로 암호화 (반복 가능): X25519, YubiKey 또는 Touch ID
--recipients-file <f>한 줄에 하나씩 age 수신자가 있는 파일
--passphrase파일 싱크/격리용 암호 (환경 변수 또는 --config 선호)
--watch계속 실행; 새 스크린샷이 나타나면 처리 (fsnotify)
--purge격리 대신 원본을 파쇄 (아래 주의사항 참조)
--keep-originals삭제된 복사본만 작성; 원본을 그대로 둠 (격리 없음, 암호 없음, --yes 불필요) — --purge와 상호 배타적
--yes파괴적인 원본 처리를 확인 (필수)
--config <file>JSON 설정; 암호를 argv 밖에 보관 가능
--no-verify삭제된 출력의 재-OCR 검증을 건너뜀 (권장되지 않음)
-i, --interactive플래그가 지정된 각 이미지를 열고 건드리기 전에 삭제/건너뛰기를 확인
--llmClaude를 사용하여 양성 오버플래그를 드롭; 후보 문자열을 Anthropic API로 전송
--llm-api-key--llm용 Anthropic API 키 (또는 ANTHROPIC_API_KEY)
--jobs NN개 이미지를 병렬로 처리 (기본값: CPU 수)
--manifest <file>원본→삭제→영역의 JSON 맵 작성
--ocr-raw / --ocr-upscale N어두운 터미널 전처리 비활성화 / OCR 전 업스케일
--exclude-kind <kind>특정 종류의 검출 결과를 억제 (반복 가능), 예: high-entropy — 오프라인 정밀도 조정
--min-confidence <0..1>이 신뢰도 미만의 검출 결과를 드롭 — 오프라인 정밀도 조정
--json보고서를 JSON으로 출력
--ignore <glob>무시할 glob, 반복 가능; **는 모든 깊이와 일치
--langtesseract 언어 (기본값 eng)

--exclude-kind 및 --min-confidence는 노이즈가 많은 코퍼스에 대한 로컬(네트워크 없음) 정밀도 조정 기능입니다 — --llm의 오프라인 대응물입니다. 이들은 더 조용한 보고서를 위해 재현율을 희생하므로 의도적으로 사용하세요. 두 기능 모두 scan/verify에서도 작동하며 --config에서 설정할 수 있습니다 (exclude_kinds, min_confidence).

암호 해결 순서: --passphrase, 그 다음 설정 파일, 그 다음 SCREENSCRUB_PASSPHRASE. 명령줄에서 --passphrase 사용은 피하세요 — argv는 다른 프로세스에 보입니다.

verify <dir|file> — 폴더가 깨끗함을 증명

각 이미지를 다시 OCR하고, 다시 탐지를 실행하며, 어떤 비밀 영역이 여전히 발견되면 0이 아닌 종료 코드로 종료합니다 — 클라이언트에게 스크린샷을 전달하기 전에 인도물/CI 게이트로 사용하세요. (OCR이 비밀을 읽을 수 없음을 증명하는 것이지, 사람이 절대 읽을 수 없다는 것은 아닙니다.)

screenscrub verify ~/deliverable/screenshots
echo $?   # 0 = 깨끗함, 0이 아님 = 여전히 감지 가능한 비밀 있음

clean은 모든 삭제된 복사본에 대해 이 동일한 검사를 자동으로 수행하며, 삭제된 복사본이 실패하면 원본을 격리하거나 파쇄하지 않습니다; --no-verify는 이를 건너뜁니다(권장되지 않음).

open <store> — 비밀 또는 격리된 원본 복구

데이터를 되찾으세요: open은 age 싱크(저장된 비밀 기록) 또는 격리된 원본을 --out으로 복호화하며, 표준 출력으로는 내보내지 않습니다. 저장소 복호화를 참조하세요.

--llm — LLM으로 양성 오버플래그 드롭

OCR 텍스트(OCR 노이즈 포함)에 대한 gitleaks 수준 규칙은 필연적으로 과도하게 플래그를 지정합니다: 재현율 편향 탐지기는 운영자가 유지하려는 양성 고엔트로피 문자열(호스트 이름, GUID, git SHA, NTLM 해시 등 자체가 손상 증거인 것)을 표면화합니다. --llm은 각 후보를 Claude(Opus 4.8)에 전달하여 진짜 비밀은 유지하고 양성 식별자는 드롭합니다; LLM이 확인한 영역은 빨간색으로 채워집니다.

ANTHROPIC_API_KEY=… screenscrub clean ~/Screenshots --out ~/clean --llm --yes

이것은 의도적으로 로컬 및 무음을 깨뜨립니다: 후보 문자열(탐지된 비밀)을 Anthropic API로 전송하므로 옵트인 전용이며, 경고를 출력하고 API 키가 필요합니다. 실패 시 폐쇄: 모든 API/네트워크 오류는 모든 검출 결과를 유지(모든 것을 삭제)하여 실제 비밀을 드롭할 위험을 감수하지 않습니다. 플래그가 지정된 이미지당 하나의 API 호출을 수행하며(동시 4개로 제한, --jobs와 무관) — 대규모 디렉터리에서는 속도 제한과 비용에 주의하세요.

--watch

screenscrub clean ~/Screenshots --watch --sink file://./secrets.age --yes
도구 다운로드