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

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

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

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

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

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

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

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

3. Если вы нажмете Отмена, скрипт закроется, теперь идет одна из уловок скрипта 😉 ...

3.1). Логика состоит в том, что скрипт сравнивает пароль, который мы пишем, с паролем, который уже предопределен в том же скрипте, и если пароли совпадают, он продолжает работать, а если пароли не совпадают, появится сообщение об ошибке. Проблема в том, что если мы поместим правильный пароль в скрипт именно так, любой, кто откроет скрипт с помощью текстового редактора, сможет очень четко увидеть правильный пароль ... и это мои друзья, это просто непростительный провал

3.2). Чтобы не вводить такой пароль в скрипт в виде обычного текста, я использовал MD5. То есть в начале скрипта я заявил, что правильный пароль - «2dac690b816a43e4fd9df5ee35e3790d«, А это MD5:«из linux«. ... Я ничего не понимаю!! … 😀

Давайте поподробнее. Если я сейчас напишу в файл (например, ~ / pass.txt) текста: из linux

Если в терминале я пишу: md5sum ~ / pass.txt

Он вернется ко мне: 2dac690b816a43e4fd9df5ee35e3790d sum

И ... как вы можете видеть, этот первый столбец, в котором много цифр и букв в произвольном порядке, идентичен столбцу, который я поместил выше, и это столбец в объявленном скрипте.

Ну, этот первый столбец - это MD5 из linux 😉

Если они поставят следующее, он вернет только 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). Он войдет в папку / домашний / общий / размещенный / - » компакт-диск / домашний / общий / размещенный /

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

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

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

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

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

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


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

41 комментариев, оставьте свой

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

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

  1.   HacKan сказал

    Это интересно, но я думаю, что вопрос да / нет очень пердит xD
    И как вы думаете, вместо того, чтобы использовать rar, который является проприетарным и не обеспечивает истинной безопасности, замените его на gpg, программное обеспечение безопасности, которое более чем проверено годами и существует практически во всех дистрибутивах 😉
    Другое дело, вы можете передать md5sum строку, вам не нужно создавать временный файл. Здесь я также рекомендую вам перейти на sha, который намного безопаснее, попробуйте в терминале: shasum

    Saludos!

    1.    КЗКГ ^ Гаара сказал

      Привет и спасибо за комментарий 😀
      GPG позволяет мне упаковать каталог со всем его содержимым? Дело в том, что я действительно использовал его только для отдельных файлов, а не для каталогов, содержащих подкаталоги и файлы.

      ооо ... отлично насчет шампанского, я его не знала 😀
      Я продолжу модифицировать скрипт, чтобы использовать этот, и… да !! правда, просто: echo "$ PASSWORD" | шасум Строку уже получил, правда в файл писать не надо :)

      Большое спасибо за комментарий, я уже узнал кое-что новое 🙂
      привет

    2.    sieg84 сказал

      это то же самое, о чем я спрашивал ...

      1.    КЗКГ ^ Гаара сказал

        Что вам нужно, так это выяснить, как GPG зашифровать файл и передать ему пароль в той же строке ... например:
        gpg -e file.tar.gz –password elpassword неважно

        Есть идеи, как это сделать? 🙂

        1.    HacKan сказал

          Чтобы зашифровать каталог c / gpg, вы должны сначала упаковать его tar.
          тогда в этом случае удобно использовать симметричное шифрование с параметром -c (см. разницу между симметричным и асимметричным шифрованием в Википедии).
          тогда это будет примерно так:
          tar -czf destination.tgz исходный_каталог / && 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 | tar -xz
          который извлечет файлы в текущий каталог (затем mv можно использовать для перемещения их в другое место)

          Есть вопросы, ответьте на этот комментарий 🙂

          привет!

          1.    HacKan сказал

            эм, остерегайтесь двойных дефисов (-) и одинарных дефисов (-) ... есть ли способ написать что-то, как если бы это был код, чтобы формат не изменился?
            prueba de codigo -- -
            [code] тестовый код - - [/ code]

          2.    HacKan сказал

            Я трачу его более подробно

            сжать и зашифровать:
            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.    КЗКГ ^ Гаара сказал

            Да, вообще-то вчера дома я читал gpg man и там было все необходимое necesitaba
            На самом деле я не совсем так делал, я не использовал эхо или сжатие, я написал об этом, я просто опубликовал его.

            Большое спасибо за помощь, друг, правда.

  2.   Джош сказал

    Замечательный! Я просто искал что-то подобное и наткнулся на вашу статью. Я собираюсь протестировать его, чтобы защитить свои данные. Когда дело касается компьютерной безопасности, нельзя быть слишком параноиком. Спасибо

    1.    КЗКГ ^ Гаара сказал

      Спасибо, ха-ха.
      Вы ведь поняли, как работает сценарий?

      Кажется, это намного сложнее, чем есть на самом деле.

      Спасибо за комментарий, правда 😀

      привет

      PS: Действительно, безопасности никогда не бывает, хахаха.

      1.    Джош сказал

        Понять это стоило мне немного (я читал 3 раза), так как давно не пользуюсь linux. Но это действительно просто, и всегда приятно учиться подобным вещам. Приветствую и еще раз спасибо.

        1.    КЗКГ ^ Гаара сказал

          Важно понять это хе-хе. Я пытался объяснить все предельно подробно, но думаю, что слишком много расширил, хахаха.
          Спасибо тебе 🙂

  3.   Auroszx сказал

    Вау, сценарий очень хороший 🙂

    PS: Паранойя больше 9000! xD

    1.    КЗКГ ^ Гаара сказал

      хахахахахахаха это я… LOL !!

  4.   Рафаэль сказал

    Глядя на ваш скрипт, я думаю, что это можно сделать с помощью xdialog, если у вас нет kde :)! Ура

    1.    КЗКГ ^ Гаара сказал

      О, я не знал про xdialog ... Надо взглянуть, чтобы увидеть 😀
      Спасибо за информацию.

  5.   sieg84 сказал

    почему бы не использовать tar.xz / gz и gpg вместо rar?

    1.    Рафаэль сказал

      это потому, что у вас уже есть это в rar, где у вас есть ваша CMS

  6.   Citux сказал

    Отлично @ KZKG ^ Gaara несколько дней назад я думал о чем-то в этом роде, но я на экзаменах, поэтому у меня нет времени ни на что, и вдруг я вижу вашу статью…
    Попробую на следующей неделе 🙂

    1.    КЗКГ ^ Гаара сказал

      Спасибо, подробности здесь я 😀

  7.   Truko22 сказал

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

    1.    КЗКГ ^ Гаара сказал

      Чтобы получать сообщения в уведомлениях 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.    КЗКГ ^ Гаара сказал

      Спасибо 😀
      На самом деле да, MD5 не идеален и есть те, кому удалось получить пароли, я посмотрю это приложение 😉

      Спасибо за ваш комментарий.

  9.   sieg84 сказал

    с симметричным только в kdialog он запрашивает пароль
    а с асимметричным - с использованием открытого ключа.

    Сразу уточню, что программиста в помине нет.

    1.    КЗКГ ^ Гаара сказал

      Да, уже успел зашифровать с помощью GPG (по сути я только что выложил об этом пост) хе-хе.

  10.   Дорогой сказал

    КЗКГ ^ Гаара всегда читаю твой пост.
    Создайте один для использования с XFCE.
    Поцелуй. Дорого

    1.    КЗКГ ^ Гаара сказал

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

      Я немного поэкспериментирую с XDialog или Zenity, чтобы увидеть, работает ли он для Xfce, ха-ха, я проведу тесты в виртуальном Xubuntu 🙂

      привет

  11.   Элинкс сказал

    Довольно полезный мужик, спасибо!

    Привет!

  12.   Дамиан Ривера сказал

    Спасибо, мне очень поможет защитить некоторые файлы

    Мне пришлось адаптировать его к zenity, потому что у меня сейчас нет kde: \

    Здесь я оставляю скелет, который собираюсь использовать, адаптированный к зенити.

    http://paste.desdelinux.net/4641

    Еще раз спасибо и привет 😀

    1.    КЗКГ ^ Гаара сказал

      оооо здорово, спасибо тебе большое 😀 😀
      Я помню, как кто-то просил об этом, но для Xfce с Zenity это будет работать в Xfce, верно?

      1.    Дамиан Ривера сказал

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

        Его нужно было бы модифицировать для разных нужд каждого человека, чтобы защитить разные вещи на разных маршрутах с разными командами.

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

        Привет 😀

        1.    Дамиан Ривера сказал

          У меня было время и xfce (в Archlinux), и я уже полностью адаптировал сценарий, как он был, для xfce с использованием zenity (я думаю), поскольку тот, который я оставил выше, был только скелетом, который я использовал

          http://paste.desdelinux.net/4644

          Можно ли его редактировать, если в нем баг из пасты?

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

          Привет 😀

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

    Интересно че !!! Хороший вклад !!!!!!

    Я новичок в программировании, я изучаю BASH понемногу ... но некоторые вещи приходили мне в голову, и они могут быть вам полезны, а могут и не оказаться.
    Когда вы говорите, что очищенный скрипт имеет встроенный пароль, и кому-то было бы непростительно открыть его и прочитать оттуда ... вы предлагаете весь этот трюк по внедрению MD5 в качестве меры защиты.

    Это неплохо в качестве первого шага к тому, чтобы усложнить жизнь потенциальному злоумышленнику, но обратите внимание на следующие идеи (которые можно даже применить друг к другу)

    ИДЕЯ 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

    ИДЕЯ 3) Что, если вы поместите виртуальное условие в скрипт, где оно требует пароля администратора?

    Например, выполните условие с помощью «sudo», а затем продолжите выполнение сценария, если не остановите его.
    Таким образом, вся защита станет мостом через ваш пароль ROOT.

    Ну не более того ...
    Ура !!!!!!!! и удерживайте BASH.

    1.    КЗКГ ^ Гаара сказал

      ХАХАХАХА Спасибо 😀
      На самом деле сейчас я использую 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, поэтому разрешения - не совсем лучший вариант.

      Насчет обфускации кода Bash ... да, я думал об этом, и идея ВЕЛИКАЯ, проблема в том, что я не знаю, как это сделать, на самом деле я даже не знаю, можно ли это сделать ХАХАХА.

      Ой, погоди ... теперь я прочел оставшуюся часть комментария О_О ... хе-хе, я не знал, что ты можешь это сделать. Я понятия не имею о C или C ++, но стоит попробовать, lol.

      Насчет идеи 3, неплохо 😀

      С тех пор, как я опубликовал этот пост, я внес в сценарий несколько улучшений, 2 из них я упомянул в ссылках в начале этого комментария, еще одно - если вы измените любой символ в сценарии, он будет удален. И теперь я должен попробовать это, чтобы запутать код, хахахаха.

      Спасибо за комментарий и… да, держись, бас !!! ХАХА

    2.    КЗКГ ^ Гаара сказал

      WTF!
      Я уже использовал SHC… GE-NI-AL !!!! О_О

  14.   Атейус сказал

    Очень хороший скрипт, эй, и если вы используете корневую проверку, чтобы иметь возможность запускать скрипт как sudo ./script

    Вам просто нужно добавить этот код в начале

    http://paste.desdelinux.net/4663

    Приветствие

  15.   Neo61 сказал

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

  16.   dhunter сказал

    Для подобных вещей я использую http://www.truecrypt.org/

  17.   Абель сказал

    Может кто-нибудь поделится сценарием? Мне любопытно, но все ссылки не работают. 🙁

    Спасибо.