Разширен скрипт в Bash (bash + md5) за защита на „нещо“ (+ Подробно обяснение)

Преди няколко дни Разказах им за FlatPress, уеб приложение (CMS), чрез което те могат да имат блог или нещо подобно, без да използват бази данни или да стават твърде сложни 🙂

Е, имам на лаптопа си a FlatPress за лични бележки, неща, които не искам да забравя и затова ги пиша в този личен блог. Но, както няколко от вас вече трябва да знаят ... Донякъде съм параноик със сигурността и, ако това се отнася до сигурността на МОИТЕ мисли, нямате представа колко параноик мога да бъда lgar

Така че се сблъсках с проблема: Как с помощта на FlatPress мога да защитя цялото съдържание в него?

Помислих за няколко приложения, които позволяват криптиране на данни, но ... нито едно не направи точно това, което исках, затова се заех със задачата да програмирам това, което исках.

Сега ще ви покажа скрипт, който направих, който прави следното:

Сценарият е предназначен да работа в KDE, ако нямат KDE диалоговите прозорци няма да им се показват.

1. Той показва диалогов прозорец, който пита дали сте KZKG ^ Gaara, ако натиснете НЕ скриптът се затваря, ако натиснете ДА всичко продължава както обикновено.

2. Покажете текстово поле с питане коя е паролата:

3. Ако натиснете Cancel скриптът се затваря, сега идва един от триковете на скрипта 😉 ...

3.1. Логиката е, че скриптът сравнява паролата, която пишем, с тази, която вече е предварително дефинирана в същия скрипт, и ако паролите съвпадат, тя продължава да се изпълнява и ако паролите не съвпадат, ще се появи съобщение за грешка. Проблемът е, че ако поставим правилната парола вътре в скрипта просто така, всеки, който отвори скрипта с текстов редактор, може да види правилната парола много ясно .. и това мои приятели, това е просто непростим провал

3.2. За да избегна поставянето на паролата като тази в обикновен текст в скрипта, използвах MD5. Тоест в началото на скрипта заявих, че правилната парола е «2dac690b816a43e4fd9df5ee35e3790d«, И това е MD5 на:«desdelinux«. ... Не разбирам нищо!! ... 😀

Нека детайлизираме малко повече. Ако сега пиша във файл (например, ~ / pass.txt) на текст: desdelinux

Ако в терминал пиша: md5sum ~ / pass.txt

Ще ми се върне: 2dac690b816a43e4fd9df5ee35e3790d sum

И ... както можете да видите, тази първа колона, която има много цифри и букви в очевиден ред, е идентично същата като тази, която сложих по-горе, и е тази в декларирания скрипт.

Е, тази първа колона е MD5 на desdelinux ????

Ако поставят следното, ще се върне само 1-вата колона, която е тази, която ни интересува: md5sum ~/pass.txt | awk '{print $1}'

4. И така, работата на скрипта в тази конкретна част е:

4.1. Скриптът ще постави паролата, която сте написали във временен файл, наречен temp.txtи ще извлече MD5 от съдържанието на този файл с помощта на командата:

md5sum temp.txt | awk '{print $1}'

4.2. Ако MD5 на паролата, която току-що написахте, НЕ е еднакво същата като тази, която е дефинирала (т.е. тази, написана в скрипта), тя ще се затвори и ще даде грешка:

4.3. Ако паролата съвпада, перфектно ... скриптът продължава 😀

5. Когато паролата съвпадне, скриптът ще направи поредица от стъпки, в моя случай:

5.1. Той ще влезе в папката / начало / споделено / хоствано / - » cd / home / shared / hosted /

5.2. Папката FlatPress се нарича "аз" и се компресира в .RAR, защитена с парола (паролата е същата, както трябва да бъде зададена преди), така че скриптът ще разархивира този файл (me.rar) - rar x me.rar -hp $ MWORD

рядък х - »Това, което прави, е да декомпресира файлове и папки, запазвайки същия ред, който имат.

аз.rar - »Това е файлът, който искам да разархивирам.

-hp $ MWORD - »Тук ви казвам, че трябва да използвате парола, за да разархивирате файла, а паролата е променливата $ MWORD (тази променлива е паролата, която въведохме преди)

5.3. Така че, ако беше разархивиран добре, продължавам да изтривам файла me.rar ... защо? Е, защото няма смисъл .rar да съществува, ако работя с файловете, които имах вътре, и тези файлове се променят, защото пиша нови неща в блога - » rm me.rar

5.4. Трябва да сменя разрешенията, за да работи всичко добре - » chmod 777 -R аз / (не забравяйте, че папката me / е това, което съдържа компресирания me.rar)

5.5. Ще ми покаже прозорец, който ми казва, че имам 10 секунди да отворя браузъра "". WTF!, Какво означава това? ...

5.5 (а). Просто, много просто ... 🙂 ... Отварям браузъра (в този случай rekonq) и работя върху нова публикация, но когато затворя браузъра, скриптът отново компресира папката me / в .rar (остава в me.rar).

Това е възможно, защото скриптът проверява на всеки 3 секунди дали Rekonq е отворен или не, ако открие, че е отворен, скриптът не прави нищо, но ако установи, че НЕ е отворен, изпълнява: rar a me.rar -hp $ MWORD me / * && rm -R me /

Което означава, че ще компресира папката мен / en аз.rar (и ще сложи парола, която би била същата, каквато вече видяхме) и след като го компресирате и ако не е имало грешки, той ще изтрие папката мен / с цялото му съдържание.

5.5 (б). Как ни помага това? ... просто, това ни избягва да помним, че трябва да защитим съдържанието си отново, тъй като трябва само да спрем да работим върху него (затворете браузъра) и скриптът ще свърши цялата останала работа 😉

6. Готово, всичко е обяснено по общ начин 🙂

... въпреки че има още една подробност 😀

Скриптът има още по-голяма защита, защитата, която е деактивирана (коментирана) са следните редове:

if [ "$USER" != "$ME" ]; then
rm *.sh
kdialog --error "Sorry but u are not me. Auto-destroying..." --title "Im Me..."
exit
fi

Това, което прави, е просто. Променливата $ USER е глобална променлива на системата, ако в терминал се постави:

echo $USER

Ще видите какво ви показва вашият потребител ... е, логиката на тези редове е проста.

Ако $ USER не съвпада с променливата $ ME (и тя е декларирана от мен в скрипта и е: "gaara"), скриптът ще изтрие ВСИЧКИ файлове .sh които са в тази папка, т.е. ще се самоунищожи 😉

Това е, за да попречи на някой друг да изпълнява скрипта на друг компютър хехехехе.

И добре, не мисля, че има много повече за обяснение, оставям сценария:

Изтегляне на .SH файл
Вижте скрипта в нашата паста

Знам, че мнозина ще го намерят за изключително сложен, но всъщност е по-страшен, отколкото би трябвало ... скриптът има наистина проста работна логика, с проста цел.

Направих това, за да отговоря на една моя много специфична нужда, споделям го с надеждата, че някаква друга линия или идея, обяснена тук, може да служи на някого

Между другото, скриптът е предназначен за KDE, тъй като диалоговите прозорци (прозорци), които той показва, са от KDE (с помощта на KDialog), но може да бъде адаптиран за Gnome / Unity / Cinnamon / Mate с помощта на Зенитили го използвайте на 100% в терминала, като просто използвате командата за диалог.

И да, скриптът все още има някои други недостатъци, например ако скриптът разархивира .rar и след това някой принудително затвори (убие) скрипта, съдържанието на .rar ще бъде незащитено, има някои подробности, които остават да бъдат полиран ... но хей, ние също трябва да контролираме, че никой не може да провери компютъра ни 😀

И накрая, искам да поясня, че НЕ съм програмист, още по-малко, не се считам за такъв, предполагам си, че можете да оптимизирате редове в кода или да използвате някаква функция за подобряване на работата на скрипта ... но казах, че не съм програмист 😉

Всички въпроси, които имат за това, ми казват, въпреки че скриптът може да не им служи, защото не се нуждаят от него, те винаги могат да научат някой друг съвет от него 😀

поздрави

PD: знам това елав той ще каже, че съм твърде параноик ... или че си губя времето, но не е така. Исках нещо много специфично, много специфична система за сигурност и аз го програмирах сам ... колко отвратително е това? ... LOL !!


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   Хаккан каза той

    Това е интересно, но мисля, че въпросът за да / не е много пръв xD
    И какво мислите, вместо да използвате rar, който е патентован и не предлага истинска сигурност, заменете го с gpg, който е софтуер за сигурност, повече от доказан през годините и съществува на практика във всички дистрибуции 😉
    Друго нещо е, че можете да предадете md5sum низ, не е нужно да създавате временен файл. Тук също препоръчвам да отидете на sha, който е много по-сигурен, опитайте в терминала: shasum

    Наздраве!

    1.    KZKG ^ Гаара каза той

      Здравейте и благодаря за коментара 😀
      GPG ми позволява да опаковам директория с цялото й съдържание? Това е, че всъщност съм го използвал само за отделни файлове, а не за директории, съдържащи поддиректории и файлове.

      ооо ... страхотно за шасум, не го познавах 😀
      Ще продължа да модифицирам скрипта, за да използвам този, и ... да !! вярно, с просто: echo "$ PASSWORD" | шасум Вече получавам низа, всъщност няма нужда да го записвам във файл :)

      Благодаря ви много за коментара, вече научих нещо ново 🙂
      поздрави

    2.    сиг84 каза той

      е същото нещо, което питах ...

      1.    KZKG ^ Гаара каза той

        Това, което ще ви трябва, е да разберете как да GPG шифровате файл и да му предадете паролата на същия ред ... например:
        gpg -e file.tar.gz –парола elpassword каквото и да било

        Някаква идея как да го направя? 🙂

        1.    Хаккан каза той

          За да шифровате директория c / gpg, първо трябва да я опаковате с tar.
          тогава в този случай е удобно да се използва симетрично криптиране с параметъра -c (вижте разликата между симетрично и асиметрично криптиране в wikipedia).
          това би било нещо като:
          tar -czf destination.tgz source_directory / && echo $ passwd | gpg –batch –compress-level 0 -c –passphrase-fd 0
          това ще създаде компресиран файл, наречен "destination.tgz" и криптиран файл, наречен "destination.tgz.gpg". както директорията на източника, така и самият компрес трябва да бъдат премахнати за сигурност (обърнете внимание на командата shred)

          за дешифриране:
          echo $ passwd | gpg –batch -d –passphrase-fd 0 encryption_file.tgz.gpg | катран -xz
          което ще извлече файловете в текущата директория (тогава mv може да се използва за преместването им другаде)

          Ако имате въпроси, отговорете на този коментар 🙂

          поздравления !!

          1.    Хаккан каза той

            хм, внимавайте за двойни тирета (-) и единични тирета (-) ... има ли начин да напишете нещо, сякаш е код, така че форматът да не се промени?
            prueba de codigo -- -
            [код] тест код - - [/ код]

          2.    Хаккан каза той

            Прекарвам го по-многословно

            компресиране и криптиране:
            tar -czf destino.tgz directorio_fuente/ && echo $passwd | gpg –batch –compress-level 0 -c –passphrase-fd 0
            Имайте предвид, че тук са две стъпки: първо създайте компресирания файл и след това, ако не е имало грешка, продължете с криптирането (верига с &&)

            дешифриране и разархивиране:
            echo $passwd | gpg –batch -d –passphrase-fd 0 archivo_cifrado.tgz.gpg | tar -xz

            салюти!

          3.    KZKG ^ Гаара каза той

            Да, вчера вкъщи прочетох gpg човека и имаше всичко, от което се нуждаех
            Всъщност не го направих така, не използвах ехо или компресия, направих публикация за това, просто го публикувах.

            Благодаря ви много за помощта приятел, наистина го правя.

  2.   Мистификация каза той

    Чудесен! Просто търсих нещо подобно и попаднах на вашата статия. Ще го тествам, за да защитя данните си. Що се отнася до компютърната сигурност, никога не можете да бъдете твърде параноични. Благодаря ти

    1.    KZKG ^ Гаара каза той

      Благодаря хаха.
      Разбрахте ли как работи сценарият, нали?

      Изглежда много по-сложно, отколкото всъщност е хаха.

      Благодаря за коментара, наистина 😀

      поздрави

      PS: Всъщност сигурността никога не е достатъчна хахаха.

      1.    Мистификация каза той

        Костваше ми малко, за да го разбера (прочетох го 3 пъти), тъй като отдавна не използвам linux. Но това е наистина просто и винаги е приятно да научите подобни неща. Поздрави и отново благодаря.

        1.    KZKG ^ Гаара каза той

          Важното е да го разберете хе-хе. Опитах се да обясня всичко изключително подробно, но мисля, че удължих твърде много хахаха.
          Благодарение на теб 🙂

  3.   auroszx каза той

    Леле, сценарият е много добър 🙂

    PS: Paranoia е над 9000! xD

    1.    KZKG ^ Гаара каза той

      хахахахахахаха това съм аз ... ЛОЛ !!

  4.   Рафаел каза той

    Разглеждайки вашия скрипт, мисля, че може да се направи с xdialog, в случай че нямате kde :)! Наздраве

    1.    KZKG ^ Гаара каза той

      О, не знаех за xdialog ... Ще трябва да погледна, за да видя 😀
      Благодаря за информацията.

  5.   сиг84 каза той

    вместо rar, защо да не използвате tar.xz / gz и gpg?

    1.    Рафаел каза той

      това е, защото вече го имате в rar, където имате вашата CMS

  6.   град каза той

    Отлично @ KZKG ^ Гаара преди дни си мислех за нещо подобно, но съм на изпити, така че нямам време за нищо и изведнъж виждам вашата статия ....
    Ще го пробвам следващата седмица 🙂

    1.    KZKG ^ Гаара каза той

      Благодаря, всички подробности тук съм am

  7.   truko22 каза той

    xD Не разбрах нищо uu, но ако искам как да използвам kdialog правилно в скриптовете, как да получа съобщение в KDE известието

    1.    KZKG ^ Гаара каза той

      За да получите съобщения в известията на KDE, опитайте да инсталирате пакета: libnotify-bin
      След това в терминал поставяте:
      notify-send "texto texto texto"

      И ще видите колко страхотно 😀 ... и това работи за KDE, Gnome, Unity, Cinnamon, Mate и Xfce 😉

      В този скрипт обаче не използвам известия като такива, а само прозорци на KDialog. В тип терминал:
      kdialog

      И там ще видите помощта 😉

      Поздрави 😀

      1.    truko22 каза той

        Благодаря ви много o /

  8.   Джоел Антонио Васкес каза той

    Здравейте, добър пост, само предложение, добре е, че с md5 не се вижда с невъоръжено око, но някои любопитни могат да използват дъгова маса, за да видят дали паролата, преобразувана в md5, е вътре, препоръчвам да използвате bcrypt (http://bcrypt.sourceforge.net/), това е само предложение, можете да го вземете за всеки повод, Поздрави.

    1.    KZKG ^ Гаара каза той

      Благодаря 😀
      Всъщност да, MD5 не е перфектен и има такива, които са успели да получат пароли, ще разгледам това приложение 😉

      Благодаря за вашия коментар.

  9.   сиг84 каза той

    със симетричния само в kdialog ви пита за паролата
    а с асиметричния с помощта на публичен ключ.

    Трябва да поясня, че нямам следа от програмист.

    1.    KZKG ^ Гаара каза той

      Да, вече успях да шифровам с GPG (всъщност просто пуснах публикация за това) хехе.

  10.   Каро каза той

    KZKG ^ Gaara винаги чете публикацията ви.
    Създайте такъв за използване с XFCE.
    Целувка. Скъпи

    1.    KZKG ^ Гаара каза той

      Здравейте и на първо място, добре дошли в блога 😀
      хахаха благодаря, знам, че понякога е трудно, защото пиша донякъде технически неща, но винаги се опитвам да обясня всичко възможно най-ясно 🙂

      Ще експериментирам малко с XDialog или Zenity, за да видя дали ще се получи за Xfce хаха, ще направя тестовете във виртуален Xubuntu 🙂

      поздрави

  11.   Елинкс каза той

    Доста полезен човек, благодаря!

    Поздрави!

  12.   Дамян Ривера каза той

    Благодаря ви, много ще ми помогне да защитя някои файлове

    Трябваше да го адаптирам към зенитността, защото в момента нямам kde: \

    Тук оставям скелета, който ще използвам, адаптиран към зенитността

    http://paste.desdelinux.net/4641

    Още веднъж благодаря и поздрави 😀

    1.    KZKG ^ Гаара каза той

      оооо страхотно, много благодаря 😀 😀
      Спомням си, че някой е поискал това, но за Xfce, със Zenity ще работи в Xfce, нали?

      1.    Дамян Ривера каза той

        Да, само че беше оставена командата за добавяне на командите, които трябва да бъдат изпълнени, след предаване на паролата на shasum или md5

        Трябва да се модифицира според различните нужди на всеки човек, за да се защитят различни неща по различни маршрути с различни команди

        Или може би добавяне на друга част (GUI), за да създадете настройките за сигурност на нашия файл

        Поздрави 😀

        1.    Дамян Ривера каза той

          Имах време и xfce (в Archlinux) и вече напълно адаптирах скрипта такъв, какъвто беше, за xfce използвайки zenity (мисля), тъй като този, който оставих по-горе, беше само скелетът, който използвах

          http://paste.desdelinux.net/4644

          Може ли да се редактира, ако има грешка от пастата?

          Това, което се случва, е, че имам няколко графични черупки и не знам дали ще работи в чист xfce, например в xubuntu

          Поздрави 😀

  13.   Матиас Гастон каза той

    Интересно че !!! Добър принос !!!!!!

    Аз съм много нов в програмирането, уча малко по малко BASH ... но някои неща ми хрумнаха и може да са ви полезни или не.
    Когато кажете, че в отстранения скрипт е включена паролата и би било непростимо някой да я отвори и прочете от там ... вие предлагате целия този трик за вграждане на MD5 като мярка за защита.

    Което е доста добро като първа стъпка към затрудняване на живота на потенциалния натрапник, но проверете следните идеи (които дори могат да бъдат приложени една върху друга)

    IDEA 1) Ами ако запазите паролата във файл на машината си и не я хоствате в скрипта?

    EJ: в txt поставете ключа и го запазете в / home / /bla/bla/key.txt
    Във вашия скрипт извиквате ключа като KEY = "$ (cat $ HOME / blah / bla / key.txt)", след това хвърляте if $ questionkey = $ KEY, след това .. и т.н. и т.н.

    По този начин постигате 3 неща +1 предимство:
    1) Че паролата никога не е била в скрипта. (Избягвате MD5)
    2) Пътят, където е паролата, зависи от потребителското име. (Всеки, който иска да го отвори, пренасочва навсякъде) В 99.9% от случаите скриптът ще се провали.
    3) В случай, че искате повече сигурност, премахнете всички разрешения за файла key.txt за всички останали потребители с изключение на вашия.
    4) Предимство: Преносимост за промяна на паролата, когато пожелаете, без редактиране на скрипт. Тъй като проверката е външна чрез файл.

    ИДЕЯ 2) Какво ще кажете да скриете целия скрипт на bash, така че той дори не може да бъде отворен?

    Един от начините да направите това е да се възползвате от факта, че в C трябва да компилирате.
    След това той въвежда скрипта вътре в код C, че всичко, което прави, е да извика този скрипт (но това е вътре в програмата). В момента на компилиране ... всичко остава вътре и изходът ви е изпълним ... и не повече скрипт. Има човек, който вече е направил „скрипт“, който прави процеса на замъгляване, което е много практично.

    Повече информация тук: http://es.wikibooks.org/wiki/El_Manual_de_BASH_Scripting_B%C3%A1sico_para_Principiantes/Compilar_%28ofuscar%29_BASH_scripts_con_C_-_SHC

    IDEA 3) Ами ако поставите виртуално условие в скрипта, където той изисква администраторска парола?

    Например изпълнете условие с помощта на "sudo" и след това продължете със скрипта, ако не го спрете.
    По този начин цялата защита ще падне като мост над вашата ROOT парола.

    Е, нищо повече ...
    Наздраве !!!!!!!! и задръжте BASH.

    1.    KZKG ^ Гаара каза той

      HAHAHAHA Благодаря 😀
      Всъщност сега използвам SHA512, защото е много по-добър от MD5: https://blog.desdelinux.net/como-saber-la-suma-md5-o-sha-de-una-palabra-oracion-o-archivo/
      Както и GPG като средство за защита вместо компресиране с .RAR: https://blog.desdelinux.net/como-proteger-datos-con-gpg-de-forma-simple/

      Проблемът с поставянето на паролата в различен файл е, че тогава тя ще постави паролата на друго място, да, но дали тя ще бъде в обикновен текст? Ако трябва да го шифровам (което е препоръчително), оставям го в същия скрипт, ами ... съмнявам се толкова много, че някой може да разбие SHA512 хахахаха (вижте 1-ва връзка и ще разберете 😉)

      Що се отнася до разрешенията, ако някой използва LiveCD, тогава той може да отвори .txt с помощта на корена на LiveCD, така че разрешенията не са изцяло най-добрият вариант.

      Относно замъгляването на баш кода ... да, бях помислил за това и идеята е СТРАХОТНА, проблемът е, че не знам как да го направя, всъщност дори не знам дали това може да се направи HAHAHA.

      О, чакайте ... сега прочетох останалата част от коментара O_O ... хе-хе, не знаех, че можете да го направите. Нямам представа за C или C ++, но може би си заслужава да пробвам хаха.

      Относно идея 3, не е лошо 😀

      Направих няколко подобрения в скрипта, откакто публикувах този пост, 2 са тези, които споменах в линковете в началото на този коментар, друго е, че ако промените който и да е знак в скрипта, той се изтрива. И сега трябва да опитам това, за да замъгля кода хахахаха.

      Благодаря за вашия коментар и ... да, задръжте, баш !!! ХАХА

    2.    KZKG ^ Гаара каза той

      WTF !!!
      Вече използвах SHC ... GE-NI-AL !!!! O_O

  14.   Атей каза той

    Много добър скрипт, хей и ако използвате проверка на корен, за да можете да стартирате скрипта като sudo ./script

    Просто трябва да добавите този код в началото

    http://paste.desdelinux.net/4663

    Поздрав

  15.   Neo61 каза той

    KZKG ^ Гаара, приятелю, мисля, че разработването на обяснение не е проблемът, това е добре за онези от нас, които нямат толкова много знания. Статии, които не преподават, са публикувани точно тук, те дават информация само за нещо, което съществува. Така че не се извинявайте и нека има повече с разширени обяснения.

  16.   dhunter каза той

    За такива неща използвам http://www.truecrypt.org/

  17.   Абел каза той

    Може ли някой да сподели сценария? Любопитен съм и всички връзки не са достъпни. 🙁

    Благодаря.