Расширенный скрипт в Bash (bash + md5) для защиты «чего-то» (+ подробное объяснение)

Несколько дней назад Я рассказал им о Флэтпресс, веб-приложение (CMS), с помощью которого вы можете вести блог или что-то подобное, не используя базы данных и не усложняя 

Ну, у меня на ноутбуке есть Флэтпресс для личных заметок, вещей, которые я не хочу забывать и поэтому пишу их в этом личном журнале. Но, как многие из вас, наверное, уже знают... Я отчасти параноик в отношении безопасности, и, если это касается безопасности МОИХ мыслей, вы даже не представляете, насколько я могу быть параноиком 

Итак, я столкнулся с проблемой: как с помощью FlatPress я могу защитить весь контент на нем?

Я подумал о нескольких приложениях, которые позволяют шифрование данных, но… ни одно из них не делало именно то, что я хотел, поэтому я взял на себя задачу программирования того, что хотел сам.

Теперь я покажу вам созданный мной сценарий, который выполняет следующие функции:

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

1. Он показывает диалоговое окно с вопросом, являетесь ли вы KZKG ^ Gaara, если вы нажмете NO, скрипт закроется, если вы нажмете YES, все будет продолжаться как обычно.

2. Показать текстовое поле с вопросом, какой пароль:

3. Если вы нажмете «Отмена», скрипт закроется, и теперь в скрипте есть одна из хитростей ...

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. Скрипт поместит пароль, который вы написали, во временный файл с именем темп.txt, и он извлечет MD5 из содержимого этого файла с помощью команды:

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

4.2. Если MD5 пароля, который вы только что написали, НЕ идентичен тому, который он определил (то есть, тот, который записан в скрипте), он закроется и выдаст ошибку:

4.3. Если пароль совпадает, отлично... сценарий продолжается 

5. Когда пароль совпадает, скрипт выполнит ряд шагов, в моем случае:

5.1. Он войдет в папку / домашний / общий / размещенный / - » компакт-диск / домашний / общий / размещенный /

5.2. Папка FlatPress называется «я», и она сжата в .RAR и защищена паролем (пароль тот же, что и должен был быть установлен раньше), поэтому сценарий распакует этот файл (me.rar) - » rar x me.rar -hp $ MWORD

рар х - »Он распаковывает файлы и папки в том же порядке, что и они.

я.rar - »Это файл, который я хочу распаковать.

-hp $ MWORD - »Здесь я говорю вам, что вы должны использовать пароль для распаковки файла, а пароль - это переменная $ MWORD (эта переменная - это пароль, который мы ввели ранее)

5.3. Итак, если он был хорошо разархивирован, я удалю файл me.rar ... почему? Ну, потому что нет никакого смысла в существовании .rar, если я работаю с файлами, которые у меня были внутри, и эти файлы меняются, потому что я пишу новинки в блоге - » поговори со мной.rar

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

5.5. Он покажет мне окно, в котором говорится, что у меня есть 10 секунд, чтобы открыть "браузер"…. WTF !, что это значит? ...

5.5 (а). Просто, очень просто…  … открываю браузер (в данном случае Реконк), и я работаю над новым постом, но когда я закрываю браузер, скрипт снова сжимает папку 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: Я знаю что Elav он скажет, что я слишком параноик ... или что я зря трачу время, но это не так. Я хотел что-то очень специфическое, очень специфическую систему безопасности, и я сам это запрограммировал… Как это круто? … СМЕШНО!!