From ce89043fb827d807ae447b53119e66684b3a46ff Mon Sep 17 00:00:00 2001 From: Likaon Date: Sun, 24 May 2026 01:13:47 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F:=20=D0=A2=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20?= =?UTF-8?q?=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=20=D1=83=D1=81=D1=82=D0=B0=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=B8=D1=82=D1=8C=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B0=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=87=D0=B8=D0=B9=20=D1=81=D1=82=D0=BE=D0=BB=20?= =?UTF-8?q?=D0=9A=D0=B0=D1=80=D0=B4=D0=B8=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D0=BE=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 98 +++++++++++++++++++++++++++++++++++++++++++----- icons/stego.png | Bin 2414 -> 2401 bytes install.sh | 1 + main.py | 2 +- setup.py | 1 + stego.desktop | 2 +- uninstall.sh | 1 + 7 files changed, 94 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index d3a2abb..7203c30 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,100 @@ -# CourseWork - # Stego App -Стеганографическое приложение для сокрытия данных в изображениях. +**Стеганографическое приложение для сокрытия данных в изображениях** ## Функциональность -- **LSB метод** (Least Significant Bit) - сокрытие в младших битах пикселей -- **DCT метод** (Discrete Cosine Transform) - сокрытие в частотной области +| Метод | Описание | +|-------|------------------------------------------------------------------------------------------------| +|**LSB**|(Least Significant Bit) | Сокрытие в младших битах пикселей. Работает с любыми изображениями | +|**DCT**|(Discrete Cosine Transform) | Сокрытие в частотной области. Для гладких/однотонных изображений | + +### Возможности + - Графический интерфейс (Tkinter) - CLI интерфейс +- Поддержка русских и английских текстов +- Сохранение результатов на устройство +- Расчёт вместимости изображения +- Сравнение изображений (PSNR) + +--- ## Установка -### Автоматическая установка - -```bash +### Автоматическая установка (рекомендуется) chmod +x install.sh -./install.sh \ No newline at end of file +./install.sh + +### Установка через pipx +pipx install . + +### Ручная установка зависимостей +pip install numpy pillow scipy + +### Установка Tkinter (Ubuntu/Debian) +sudo apt install python3-tk + +### Запуск +|**Команда** |**Описание**| +|stego-gui |Графический интерфейс| +|stego --help| Помощь по CLI| + +### CLI команды +#LSB кодирование +stego encode lsb image.png out.png -m "Секретное сообщение" + +#LSB декодирование +stego decode lsb out.png + +#DCT кодирование +stego encode dct image.png out.png -m "Секретное сообщение" + +#DCT декодирование +stego decode dct out.png + +#Показать вместимость изображения +stego capacity image.png + +#Сравнить два изображения (PSNR) +stego psnr original.png modified.png + +### Удаление +#Через pipx +pipx uninstall stego-app + +#Через скрипт +chmod +x uninstall.sh +./uninstall.sh + +### Требования к системе +ОС: Linux (Ubuntu/Debian и производные) + +Python: 3.8 или выше + +Зависимости: numpy, pillow, scipy, tkinter + +Структура проекта +text +CourseWork/ +├── core/ # LSB, DCT, Utils +├── gui/ # Графический интерфейс +├── icons/ # Иконки приложения +├── main.py # Точка входа (CLI + GUI) +├── setup.py # Установщик пакета +├── install.sh # Скрипт автоматической установки +├── uninstall.sh # Скрипт удаления +├── stego.desktop # Ярлык для меню приложений +├── requirements.txt # Зависимости проекта +└── README.md # Документация + +### Известные ограничения +DCT метод требует размеры изображения, кратные 8 (например, 400×400, 512×512, 800×800) + +DCT метод рекомендуется только для гладких/однотонных изображений + +Результат кодирования рекомендуется сохранять в формате PNG (без потерь) + +### Лицензия +MIT License +--- \ No newline at end of file diff --git a/icons/stego.png b/icons/stego.png index 1d6ff0628d3741a346de01e44dabf528e9a604b6..e881160ce921c9c6b65a506c26ef180fa3ea5c72 100644 GIT binary patch delta 2390 zcmV-c390t(65$e%B!4JLL_t(|ob6rBZyU!I|Gg0<%lfk7NUCMnie=Z0(HeD>9%2_Z zP@wIhh0#OMOAA}Qs7C8HK~UtLe;|h-4TK;F(hoba(FQ&F&`SXqh^rbZinNa1#&KlD z)dwxh`XEI~7AbBIE0W8PUGC2A%sg@RgCO!PcjmqKo7tV&nSXgZH1hl?0R#|;00HtT zio(IdPku$=$gn)0I-+o7=#o!u(Z!3J*_Me_UPzErhpPk#0I>D3B?J*Al7!Epag^Ex zz{{psDNTUb*%T|K&MSb6O|ep1yaE{66f30(2zEBbN@>tWxM7Jfr8H0@+{i?jQtH1E zZg3(@DfQV1H-A16rj+`55{?BCrj**fAYL}bN~w1v93vu3DfMWC<3)rirEZOI?1(U> zv}Pk5MRS_JCFr~EaSdammVx?5`stCSBm{O{9RRn7yOn)iWwkm=<5vG(%G{TKZgej#O zRz++NB1|c*7z<)yQ>>IKT@|sNh%lv8-KvOfMuaJ)idIEzKO#&it=kC4g$Pqhy&GY^ zL|n>TMHMczpVMe|G@eGgDnbYQ@2}LL-o`tb%K(1XabCUIk$D>7stD!mUrCp!e|>Zm zRe1H{MSlQquUrD~i_T&G>;pt2!|xNoKW6a{sjD8;J7E_CfM0g~q@EXg0y@385+H!6 z>VF_nB1y0u{Il;o=dIN5qBc8vPX$ApD#Sl7SF(SkzuEq)TL!;g{w-(rK@bptAjkhe zqC}G5IaIMWL912?xf( z=x$HKhUS0g45(l~ z5MDd{64jrO@x_(q2^pyzg2O+jlI^yMtAD&AK7bsy$ccfH1gO+Dr>|bT=zmHwXyza{ zJHvbGdeC5)YB0P$I$A6PcuvX}&kwAF6nW}(PN1=%$ZZM+n^R{oc$_8!*A5{Ru@9qR zs*-RPL(QM$LAu!ogD_P|gyp&>$oZjzeV7hYWrottKok2g@$zo2>;s;SuqtxGG=IY3 zlQ2V+qcVPz7z|V8huY1dT5^nssd552KQ!GK%!a8lL+NIq@3w3(OqCzPj>_(xinG1pmaD?uwU~?U?}p`Q}nYm zQH@O@;Kp^>GSJRGNXe=QRTDCPSbq*x2HM$&f>jZ|lSsi2zw%|EoqdqWFjamaMV@-) zP#g;iuRzWwPEgn(bj=~Emv?V}_TjuSYGNM|y}Y|2*hkScee44U!&If<=V?p+iA<5F zo(Jo8LzUSi3vYfyJr8SV-!1?X?8{yO-Ykb5jnK|Mh=fNBvD(1paH!@wnt!n%?ZN2A zcT?pAa(+baX>C!@gp6Ab%s|l0K8)_B$`7Q-Q!ml%ZmP@>tS)+sev=psQ{{&Mb~qMAw)>7RJ=FTXAb;Ozb<-{+vKm3Svf0ad`Oa2#xE%zgNtV+ykr?dFp+T*KVpK=bwWDd~5j2 z6-UM{-LGeuw-{LxF1x8-IQJYh;?(&;05>mBnq?nB7U!z9>75V$MSs9ge|!R3F!sSD zxfasrF3UERl`cT@20x9yLITRy+V*>Vf>%T zz1^)xk30pS=jq*#AAhd_n4CxreWPz_aoz6i%q3U9xVL=ZP}hNHIxGvhZ2r@aA7|I{ z0KPQPzW;Eim4^_NoJh|n@@zuuf$TgwgX?>uq5_wWBm&LlGg{NVdX zKDse&cQjArd&h3f7W-p59C&oSHzME?6uBN6Y0ix-LnT?Hn;Vc4Bw!qYJ9Su8VeUi=Jyghej zsDCqWS$`JBZ_O2cC!ll%2%=Lj?6ZZXrH#+-E_HM?pFFc~V|_C@vu0Tq2#b%O?Ao0< z{z8wHw}hbN7n#(;6Vf^iQ#%J5`ST4bT)b50rN?Dr)##(w%%W3tf8}zWK~4X!Zl*|I za~%aau3WL`3B*}xfFQ>>IS-%Yjgm6{Dx-BHSYH`T^hx-E87ZDghY2N8(RYKTXi1^@s607*qo IM6N<$f|hNcxc~qF delta 2403 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 V(=|QddENj3002ovPDHLkV1j$Wv+Do= diff --git a/install.sh b/install.sh index 3b91113..9271424 100755 --- a/install.sh +++ b/install.sh @@ -1,3 +1,4 @@ +""" Установка приложения """ cat > install.sh << 'EOF' #!/bin/bash # Установка Stego App для Ubuntu/Debian diff --git a/main.py b/main.py index 4e1e2d7..a455a87 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 """ -CLI интерфейс для стеганографических методов LSB и DCT. +CLI интерфейс для методов LSB и DCT. Использование: python main.py encode [-m MESSAGE] [-f FILE] diff --git a/setup.py b/setup.py index 25973f5..650cdaa 100644 --- a/setup.py +++ b/setup.py @@ -1,3 +1,4 @@ +""" Основа установки и работы приложения """ #!/usr/bin/env python3 from setuptools import setup, find_packages diff --git a/stego.desktop b/stego.desktop index 7867606..38ba1e4 100644 --- a/stego.desktop +++ b/stego.desktop @@ -7,4 +7,4 @@ Icon=stego Terminal=false Categories=Graphics;Utility; Keywords=steganography;hide;image; -StartupNotify=true \ No newline at end of file +StartupNotify=true diff --git a/uninstall.sh b/uninstall.sh index 2490f6e..41350c8 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -1,3 +1,4 @@ +""" Удаление приложения """ #!/bin/bash # Удаление Stego App