Несколько дней назад Я рассказал им о Флэтпресс, веб-приложение (CMS), с помощью которого вы можете вести блог или что-то подобное, не используя базы данных и не усложняя
Ну, у меня на ноутбуке есть Флэтпресс для личных заметок, вещей, которые я не хочу забывать и поэтому пишу их в этом личном журнале. Но, как многие из вас, наверное, уже знают... Я отчасти параноик в отношении безопасности, и, если это касается безопасности МОИХ мыслей, вы даже не представляете, насколько я могу быть параноиком
Итак, я столкнулся с проблемой: как с помощью FlatPress я могу защитить весь контент на нем?
Я подумал о нескольких приложениях, которые позволяют шифрование данных, но… ни одно из них не делало именно то, что я хотел, поэтому я взял на себя задачу программирования того, что хотел сам.
Теперь я покажу вам созданный мной сценарий, который выполняет следующие функции:
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 которые находятся в этой папке, то есть она самоуничтожится
Это сделано для того, чтобы кто-то другой не мог выполнить сценарий на другом компьютере, хехехе.
И что ж, я не думаю, что есть что-то еще объяснять, я оставляю сценарий:
Я знаю, что многим это покажется чрезвычайно сложным, но на самом деле это более страшно, чем следовало бы ... сценарий имеет очень простую рабочую логику для простой цели.
Я сделал это, чтобы удовлетворить свою очень специфическую потребность, и делюсь этим, надеясь, что какая-то другая линия или идея, описанная здесь, может быть кому-то полезна
Между прочим, скрипт предназначен для KDE, поскольку отображаемые диалоги (окна) взяты из KDE (с использованием KDialog), но его можно адаптировать для Gnome / Unity / Cinnamon / Mate с помощью Зенити, или используйте его на 100% в терминале, используя просто командный диалог.
И да, скрипт все же имеет некоторые недостатки, например, если скрипт распаковывает .rar, а потом кто-то принудительно закрывает (убивает) скрипт, содержимое .rar будет незащищенным, есть некоторые детали, которые еще предстоит доработать … но, эй! Мы также должны убедиться, что никто не сможет проверить наш компьютер
Напоследок хочу уточнить, что я НЕ программист, вовсе нет, я себя таковым не считаю, я представляю, что можно оптимизировать строки в коде, или использовать какую-то функцию для улучшения работы скрипта... но как я уже сказал, я не программист
Если у вас есть какие-либо вопросы по этому поводу, скажите, хотя скрипт может вам и не пригодиться, потому что он вам не нужен, вы всегда можете почерпнуть из него еще несколько советов
привет
PD: Я знаю что Elav он скажет, что я слишком параноик ... или что я зря трачу время, но это не так. Я хотел что-то очень специфическое, очень специфическую систему безопасности, и я сам это запрограммировал… Как это круто? … СМЕШНО!!