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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/carlospuenteg/file-injector
Encryption/Decryption ToolsData ExfiltrationSteganographyCryptography
GitHubcarlospuenteg/file-injector

File-Injector

File Injector는 스테가노그래피를 사용하여 이미지에 모든 파일을 저장할 수 있는 스크립트입니다.

저장소 보기
4432973년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

File Injector

이전 버전(1.0.2 이하)을 사용하려면, 원본 이미지가 필요했던 버전인 경우 여기에서 다운로드할 수 있습니다.

목차

  • 1. 설명
  • 2. 시작하기
    • 요구 사항 설치
    • 스크립트 실행
    • 입력 선택
      • 기본 이미지/오디오 선택
      • 입력 파일 선택
      • 암호화 키 선택/생성
  • 3. 결과
  • 4. 사용 예제
    • 주입
    • 추출
  • 5. 설정
  • 6. 기능 설명
  • 7. 작동 방식
    • 옵션
    • inject_file_func
    • extract_file_func
    • get_fernet
    • decrypt_content
    • inject_file
    • extract_file

1. 설명

File Injector는 스테가노그래피를 사용하여 모든 파일(.zip, .png, .txt, .gba...)과 그 파일명을 이미지/오디오에 노이즈로 저장할 수 있는 스크립트입니다.

저장하기 전에 입력 파일을 암호화하도록 선택할 수도 있습니다.

그런 다음, 수정된 이미지/오디오에서 파일을 추출할 때 원본 이미지/오디오가 필요하지 않으며, 파일이 암호화된 경우 암호화 키만 있으면 됩니다.

2. 시작하기

요구 사항 설치

root@kitploit:~
python3 -m pip install -r requirements.txt

작동하지 않으면 다음을 시도해보세요:

root@kitploit:~
py -m pip install -r requirements.txt

스크립트 실행

root@kitploit:~
python3 main.py

입력 선택

기본 이미지/오디오 선택

files/base 폴더에서 파일을 저장할 기본 이미지/오디오를 선택합니다.

이 폴더에 자신의 이미지/오디오를 추가할 수도 있습니다.

  • 이미지는 .png 또는 (.jpg/.jpeg)일 수 있지만, 스크립트 실행 시 .png로 변환됩니다.
  • 오디오는 .mp3 또는 .wav여야 하지만, 스크립트 실행 시 .mp3로 변환됩니다.

입력 파일 선택

files/input 폴더에서 이미지/오디오에 저장할 파일을 선택합니다.

이 폴더에 자신의 파일을 추가할 수 있습니다. 모든 유형의 파일이 가능합니다.

수정된 이미지/오디오 선택

files/modified 폴더에서 파일을 추출할 수정된 이미지/오디오를 선택합니다.

이 폴더에 자신의 수정된 이미지/오디오를 추가할 수도 있습니다.

암호화 키 선택/생성

files/$encryption-keys 폴더에서 키를 선택하거나 거기서 생성할 수 있습니다.

키 파일은 .key 확장자를 가져야 합니다.

파일을 복호화할 때 특정 키를 선택할 필요가 없습니다. 폴더에서 자동으로 선택됩니다.

3. 결과

이 17.1MP 이미지에는 암호화된 9MB .zip 파일과 그 파일명이 노이즈로 저장되어 있습니다.

<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/main/readme-assets/17"1MP_mod.png" width=500>

이 1.7MP 이미지에는 암호화된 0.93MB .zip 파일과 그 파일명이 노이즈로 저장되어 있습니다.

<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/main/readme-assets/1"7MP_mod.png" width=500>

이 42MB 오디오 파일에는 암호화된 9MB .zip 파일과 그 파일명이 노이즈로 저장되어 있습니다.

https://user-images.githubusercontent.com/65092569/202014519-24514110-4bd2-4c2b-9307-237964df0c2b.mp4

4. 사용 예제

주입

root@kitploit:~
... File-Injector % python3 main.py
[0] EXIT
[1] Inject file
[2] Extract file

Option: 1
File to be stored: images.zip
Filename of the base image: 2'2MP
Encrypt the file? (y/n): y

Do you want to use an existing key or generate a new one?
[0] Existing key
[1] New key

Option: 1
Filename of the new key file (blank for default): 
Key generated and saved to files/$encryption-keys/key9.key

Preparing...

Modified bits per channel: 2
Image modification: 1.56%

✅ Storing... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [100.0%]

Generating random values...

Storing random values...

Reshaping...

Modified image saved in files/modified-images/2'2MP_mod.png

Done in 7.5892 seconds

추출

root@kitploit:~
... File-Injector % python3 main.py
[0] EXIT
[1] Inject file
[2] Extract file

Option: 2
Filename of the modified image: 2'2MP_mod

Preparing...

Retrieving filename...

Retrieving input file...
Decrypted with "files/$encryption-keys/key2.key"

Output file saved in files/output-files/images.zip

Done in 1.4083 seconds

5. 설정

구성은 config.py 파일에서 변경할 수 있습니다.

6. 기능 설명

주입은 이미지/오디오 배열을 평탄화하여 만든 배열의 각 요소의 X개 하위 비트에 파일을 저장하여 수행됩니다.

  • 각 요소는 8비트(기본 파일이 이미지인 경우) 또는 16비트(기본 파일이 오디오인 경우)입니다.
  • 이 스크립트는 저장할 파일의 크기와 기본 이미지/오디오의 크기에 따라 각 요소의 1비트에서 모든 비트까지 변경합니다.
  • 더 큰 파일을 저장하거나 기본 이미지/오디오가 더 작은 경우 더 많은 비트가 변경되며 변경 사항이 더 눈에 띕니다.
  • 더 작은 파일을 저장하거나 기본 이미지/오디오가 더 큰 경우 더 적은 비트가 변경되며 변경 사항이 덜 눈에 띕니다.
  • 기본 이미지/오디오가 파일을 저장하기에 너무 작은 경우 스크립트가 중지되고 경고합니다.
  • 파일을 암호화하기로 선택한 경우 크기가 약 1/3 증가합니다.

7. 작동 방식

옵션

옵션설명
[0] 종료스크립트 종료
[1] 파일 주입inject_file_func() 호출
[2] 파일 추출extract_file_func() 호출

inject_file_func()

  1. TEST_MODE == True이면 미리 정의된 기본 이미지/오디오 및 입력 파일을 사용합니다. 그렇지 않으면 기본 이미지/오디오 및 입력 파일을 묻습니다.
  2. 파일을 읽습니다(바이트 단위)
  3. 이미지/오디오를 읽고 numpy 배열에 저장합니다.
  4. 파일명을 읽습니다(바이트 단위)
  5. 사용자가 파일을 암호화하려는 경우:
    1. get_fernet()으로 키를 가져옵니다.
    2. 파일과 파일명을 암호화합니다.
  6. inject_file()로 이미지/오디오에 파일과 파일명을 주입하려고 시도합니다.
    1. 이미지/오디오가 파일을 저장하기에 너무 작으면 오류를 발생시킵니다.
    2. 그렇지 않으면 수정된 이미지/오디오를 반환합니다.
  7. 수정된 이미지/오디오를 저장합니다.

extract_file_func()

  1. TEST_MODE == True이면 미리 정의된 수정된 이미지/오디오를 사용합니다. 그렇지 않으면 수정된 이미지/오디오를 묻습니다.
  2. 수정된 이미지/오디오를 읽습니다.
  3. extract_file()로 파일과 파일명을 바이트로 추출합니다.
  4. 파일과 파일명이 암호화된 경우(gAAAAA로 시작), decrypt_content()로 복호화합니다.
  5. 파일명을 UTF-8로 디코딩합니다.
  6. 디코딩된 파일명으로 파일을 저장합니다.

get_fernet()

옵션설명
[0] 기존 키기존 키 사용
[1] 새 키새 키 생성

[0] 기존 키

  1. files/$encryption-keys 폴더에서 사용할 키를 선택합니다.

[1] 새 키

  1. 새 키의 파일명을 선택합니다(기본값을 사용하려면 비워 둡니다(예: key8.key)).
  2. 새 키를 생성하고 선택한 파일명으로 저장합니다.
  3. 새 키로 Fernet 객체를 반환합니다.

decrypt_content()

  1. files/$encryption-keys 폴더의 각 키에 대해:
    1. 그 키로 파일과 파일명을 복호화 시도합니다.
    2. InvalidToken이 발생하면:
      1. 해당 키가 올바른 키가 아님을 의미합니다.
      2. 다른 키로 시도합니다.
    3. 그렇지 않으면 키를 반환합니다.
  2. 키를 찾을 수 없으면 예외를 발생시킵니다.

inject_file()

수정된 이미지/오디오 배열(np.ndarray, arr과 동일한 형태)을 반환합니다.

extract_file()

매개변수유형설명
mod_arr_flatnp.ndarray평탄화된 수정된 이미지/오디오

추출된 파일과 파일명을 포함하는 딕셔너리를 반환하며, 둘 다 (bytes) 형식입니다.

도구 다운로드
상수설명기본값
MOD_PREFIX수정된 이미지/오디오의 접두사""
MOD_SUFFIX수정된 이미지/오디오의 접미사"_mod"
STORE_RANDOM수정된 이미지에 임의 데이터를 저장하여 저장된 데이터 부분과 없는 부분의 경계가 명확하지 않게 함True
TEST_MODE테스트 모드 활성화/비활성화: 미리 정의된 이미지/오디오 및 파일로 테스트True
매개변수유형설명
arrnp.ndarraynumpy 배열로 표현된 이미지/오디오
filebytes바이트로 표현된 파일
filenamebytes바이트로 표현된 파일명
store_randomboolean수정된 이미지/오디오에 임의 데이터를 저장할지 여부