- Регистрация
- 18 Авг 2024
- Сообщения
- 97
- Решения
- 2
- Реакции
- 27
- Баллы
- 28
Всем привет, расскажу вам про стеганографию и как прятать информацию в любых файлах.
Что такое стеганография ?
Стеганогра́фия — способ передачи или хранения информации с учётом сохранения в тайне самого факта такой передачи. Этот термин ввёл в 1499 году аббат бенедиктинского монастыря Святого Мартина в Шпонгейме Иоганн Тритемий в своём трактате «Стеганография», зашифрованном под магическую книгу. В отличие от криптографии, которая скрывает содержимое тайного сообщения, стеганография скрывает сам факт его существования.
Мы будем прятать скрипт .sh в изображении
Вот код:
Вот картинка

А вот структура проекта:

Для сокрытия мы будем использовать библиотеку stegano .
Приступим к написанию скрипта.
Из кода нам нужны 2 метода hide_script и reveal_script
Что они делают ?
Рассмотрим hide_script.
Что такое стеганография ?
Стеганогра́фия — способ передачи или хранения информации с учётом сохранения в тайне самого факта такой передачи. Этот термин ввёл в 1499 году аббат бенедиктинского монастыря Святого Мартина в Шпонгейме Иоганн Тритемий в своём трактате «Стеганография», зашифрованном под магическую книгу. В отличие от криптографии, которая скрывает содержимое тайного сообщения, стеганография скрывает сам факт его существования.
Мы будем прятать скрипт .sh в изображении
Вот код:
Bash:
#!/bin/bash
echo "Hello world"

А вот структура проекта:

Для сокрытия мы будем использовать библиотеку stegano .
Установка займет 5-15 секунд.pip3 install stegano
Приступим к написанию скрипта.
Python:
#!/usr/bin/python3
from stegano import lsb
import argparse
def hide_script(script, image, hidden_content):
with open(script) as file:
content = file.read()
sec_image = lsb.hide(image, content)
sec_image.save(hidden_content)
print(f"[+] Image saved as {hidden_content}")
def reveal_script(image):
hidden_content = lsb.reveal(image)
if hidden_content is None:
print("[-] No hidden content.")
return
with open("out_script.sh", "w") as file:
file.write(hidden_content)
print("[+] Script revealed and saved")
def main():
parser = argparse.ArgumentParser(description=None)# Описание можете поставить свое
parser.add_argument('image', type=str, help="Path to image")
parser.add_argument('--bash', type=str, help="Path to bash script")
parser.add_argument('--out', type=str, help="New Image")
args = parser.parse_args()
if args.bash and args.out:
hide_script(args.bash, args.image, args.out)
elif args.image:
reveal_script(args.image)
if __name__ == "__main__":
main()
Что они делают ?
Рассмотрим hide_script.
Python:
# Открывает файл и записывает его содержимое в переменную content
with open(script) as file:
content = file.read()
# Скрывает контент в изображении
sec_image = lsb.hide(image, content)
# Сохраняет новое изображение со скрытым контентом
sec_image.save(hidden_content)
print(f"[+] Great! Image saved as {hidden_content}")
Python:
# Получает скрытый контент
hidden_content = lsb.reveal(image)
# Если скратого контента нет , то выводит сообщение и завершает функцию
if hidden_content is None:
print("[-] No hidden content found in the image.")
return
# Открывает скрипт для записи и записывает скрытое содержимое
with open("out_script.sh", "w") as file:
file.write(hidden_content)
print("[+] Script revealed and saved as out_script.sh")