Напредна скрипта во Баш (bash + md5) за да се заштити „нешто“ (+ Детално објаснување)

Пред неколку дена Им реков за FlatPress, веб апликација (CMS) преку која тие можат да имаат блог или нешто слично без да користат бази на податоци, или да станат премногу комплицирани

Па, имам на мојот лаптоп А. FlatPress за лични белешки, работи што не сакам да ги заборавам и затоа ги пишувам во овој личен блог. Но, како што веќе неколкумина од вас мора да знаат ... Јас сум донекаде параноичен во врска со безбедноста и, ако станува збор за безбедноста на МОИТЕ мисли, вие немате идеја колку параноично можам да бидам

Така, се соочив со проблемот: Како со користење на FlatPress можам да ја заштитам целата содржина на неа?

Мислев на неколку апликации што овозможуваат шифрирање на податоците, но ... ниту една не го стори точно тоа што го сакав, па ја презедов задачата да го програмирам она што го сакав самиот.

Сега ќе ви покажам сценарио што го направив, што го прави следново:

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

1. Тоа покажува дијалог-прозорец кој прашува дали сте KZKG ^ Gaara, ако притиснете НЕ, скриптата се затвора, ако притиснете ДА сè продолжува како што е нормално. 2. Покажете поле за текст прашувајќи што е лозинката:

3. Ако притиснете Откажи, сценариото се затвора, сега следува еден од триковите за сценарио 😉 ...

3.1. Логиката е дека скриптата ја споредува лозинката што ја пишуваме со онаа што е претходно дефинирана во рамките на истата скрипта, и ако лозинките се совпаѓаат, тогаш таа продолжува да работи, и ако лозинките не се совпаѓаат, тогаш ќе се појави порака за грешка. Проблемот е во тоа што, ако ја ставиме точната лозинка во скриптата така, секој што ќе ја отвори скриптата со уредник на текст, ќе може многу јасно да ја види точната лозинка .. и ова мои пријатели, тоа е едноставно непростлив неуспех

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

Да детализираме уште малку. Ако сега пишувам во датотека (на пример ~ / помине.txt) на текстот: од линукс

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

Returnе се врати: 2dac690b816a43e4fd9df5ee35e3790d sum

И ... како што можете да видите, таа прва колона што има многу броеви и букви без очигледен редослед, е идентично истата со онаа што ја ставив погоре и е онаа во декларираната скрипта.

Па, таа прва колона е MD5 од од линукс ????

Ако го стават следново, таа ќе ја врати само 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. Enterе влезе во папката / дома / споделено / домаќин / - » cd / home / shared / host /

5.2. Папката FlatPress се нарекува „јас“ и таа е компресирана во .RAR заштитена со лозинка (лозинката е иста како што треба да се постави претходно), така што скриптата ќе ја декомпресира таа датотека (me.rar) - » rar x me.rar -hp $ MWORD

ретки x - »Она што го прави е да ги декомпресира датотеките и папките со истиот редослед што го имаат.

јас.rar - »Ова е датотеката што сакам да ја отпакувам.

-КС $ MWORD - »Овде укажувам дека мора да користите лозинка за да ја отпакувате датотеката, а лозинката е променливата $ MWORD (оваа променлива е лозинката што ја внесовме претходно)

5.3. Значи, ако беше добро отпакуван, ќе ја избришам датотеката me.rar ... зошто? Па, затоа што нема смисла дека .rar постои ако работам со датотеките што ги имав внатре, и тие датотеки се менуваат затоа што пишувам нови работи на блогот - » rm мене.rar

5.4. Морам да ги сменам дозволите за сè да работи добро - » chmod 777 -R me / (запомнете дека папката јас / е она што ме содржи компресирано.rar)

5.5. Meе ми покаже прозорец што ќе ми каже дека имам 10 секунди да го отворам прелистувачот. WTF!, Што значи ова? ...

5.5 (а). Едноставно, многу едноставно… 🙂… Го отворам прелистувачот (во овој случај) Реконк) и работам на нов пост, но кога ќе го затворам прелистувачот, скриптата повторно ја компресира мене / папката во .rar (останува во мене.rar).

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

Што значи дека ќе ја компресира папката јас / en јас.rar (и ќе стави лозинка, која би била иста како што веќе видовме), и откако ќе го компресирате и ако немаше грешки, таа ќе ја избрише папката јас / со целата своја содржина.

5.5 (б) Како ни помага ова? ... едноставно, ова нè избегнува да мора да запомниме дека мораме повторно да ја заштитиме нашата содржина, бидејќи треба само да престанеме да работиме на неа (да го затвориме прелистувачот) и скриптата ќе ја заврши целата останата работа

6. Подготвени, сето ова е објаснето на општ начин

... иако има уште еден дета detail

Скриптата има уште поголема заштита, заштитата што е оневозможена (коментирана) се овие редови:

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

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

echo $USER

Seeе видите што ви покажува вашиот корисник ... добро, логиката на овие редови е едноставна.

Ако $ USER не се совпаѓа со променливата $ ME (и тоа беше прогласено од мене во скриптата, а тоа е: .sh што се наоѓаат во таа папка, односно ќе се самоуништи 😉

Ова е да се спречи некој друг да ја извршува скриптата на друг компјутер, хехехе.

И добро, мислам дека нема што повеќе да се објасни, го оставам сценариото:

Преземање на датотека SH
Погледнете го сценариото во нашата Вметни

Знам дека многумина ќе го сметаат за исклучително сложено, но всушност плаши повеќе отколку што треба ... сценариото има навистина едноставна работна логика, за едноставна намена.

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

Патем, скриптата е наменета за KDE, бидејќи дијалозите (прозорците) што ги прикажува се од KDE (користејќи KDialog), но може да се прилагоди за Gnome / Unity / Cinnamon / Mate со користење Зенит, или користете го 100% во терминал со едноставно користење на командата за дијалог.

И да, дури и сценариото има некои други недостатоци, на пример, ако скриптата го распакува .rar, а потоа некој насилно ја затвори (убие) скриптата, содржината на .rar ќе биде незаштитена, има уште некои детали што треба да се полираат ... но еј, ние исто така мора да контролираме дека никој не може да го провери нашиот компјутер

За да завршам, сакам да разјаснам дека НЕ ​​сум програмер, уште помалку, не се сметам за таков, замислувам дека можете да оптимизирате линии во кодот или да користите некоја функција за да ја подобрите работата на скриптата ... но јас рече, јас не сум програмер

Било какви прашања имаат во врска со тоа, тие ми ги кажуваат, иако сценариото можеби не им служи затоа што не им е потребно, тие секогаш ќе можат да научат некој друг совет од тоа

Со почит

П.С: го знам тоа елав тој ќе рече дека сум премногу параноичен ... или дека си го трошам времето, но не е така. Сакав нешто многу специфично, многу специфичен безбедносен систем и сам го програмирав ... колку е тоа гекирано? … СМЕЕЊЕ НА ГЛАС!!


Содржината на статијата се придржува до нашите принципи на уредничка етика. За да пријавите грешка, кликнете овде.

41 коментари, оставете ги вашите

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

Вашата е-маил адреса нема да бидат објавени. Задолжителни полиња се означени со *

*

*

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

  1.   ХакКан dijo

    Ова интересно, но мислам дека прашањето за да / не е многу за да прдне xD
    И што мислите, наместо да користите rar што е комерцијален и не нуди вистинска безбедност, заменете го со gpg, што е софтвер за безбедност повеќе од докажано со текот на годините, и постои практично во сите дистрибуции
    Друга работа, можете да ја пренесете низата md5sum, не треба да креирате привремена датотека. Тука исто така препорачувам да одите во ша, што е многу побезбедно, пробајте во терминалот: шасум

    На здравје!

    1.    КЗКГ ^ Гаара dijo

      Здраво и благодарам за коментарот
      GPG ми дозволува да спакувам директориум со целата нејзина содржина? Тоа е дека јас всушност го користев само за одделни датотеки, не за директориуми што содржат поддиректориуми и датотеки.

      ооо… супер за шасум, не го познавав
      Goе продолжам да ја менувам скриптата за да ја користам оваа и ... да !! точно, со едноставно: ехо „$ PASSWORD“ | шасум Јас веќе ја добив низата, навистина нема потреба да ја пишувам во датотека :)

      Ви благодарам многу за вашиот коментар, јас веќе научив нешто ново
      Со почит

    2.    sieg84 dijo

      е истото што го прашував ...

      1.    КЗКГ ^ Гаара dijo

        Она што ќе ви треба е да откриете како да ја шифрирате датотеката GPG и да ја пренесете лозинката на истата линија ... на пример:
        gpg -e датотека.tar.gz - патен збор elpassword што и да е

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

        1.    ХакКан dijo

          За да шифрирате директориум c / gpg, прво мора да го спакувате со катран.
          тогаш, за овој случај, погодно е да се користи симетрична енкрипција, со параметарот -c (видете ја Википедија за разликата помеѓу симетричната и асиметричната енкрипција).
          ова тогаш би било нешто како:
          tar -czf дестинација.tgz извор_директориум / && ехо $ passwd | gpg –серија –компрес-ниво 0 -в –нарочна фраза-fd 0
          ова ќе создаде компресирана датотека наречена „destination.tgz“ и шифрираната датотека наречена „destination.tgz.gpg“. и изворниот директориум и самиот компрес треба да се отстранат за безбедност (проверете ја командата за парчиња)

          за дешифрирање:
          ехо $ passwd | gpg –batch -d –passphrase-fd 0 енкрипција_фајл.tgz.gpg | катран -хз
          што ќе ги извлече датотеките во тековниот директориум (тогаш mv може да се користи за нивно преместување на друго место)

          На какви било прашања, одговорете на овој коментар

          Честитки!

          1.    ХакКан dijo

            ех, внимавајте на двојни цртички (-) и единечни цртички (-)… има ли начин да напишете нешто како да е код за да не се смени форматот?
            prueba de codigo -- -
            [код] код за тест - - [/ код]

          2.    ХакКан dijo

            Јас го трошам повеќе гласно

            компресирај и шифрирај:
            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.    КЗКГ ^ Гаара dijo

            Да, всушност вчера дома го прочитав човекот со ГПГ и имаше се што ми требаше нецеситаба
            Всушност, јас не го сторив тоа така, не користев ехо или компресија, направив објава за ова, само што ја објавив.

            Ви благодарам многу за помошта пријател, навистина.

  2.   Џош dijo

    Прекрасно! Само барав такво нешто и наидов на вашата статија. Одам да го тестирам за да ги заштитам моите податоци. Кога станува збор за безбедноста на компјутерот, никогаш не можете да бидете премногу параноични. Ви благодарам

    1.    КЗКГ ^ Гаара dijo

      Фала хаха
      Дали разбравте како работи сценариото, нели?

      Се чини многу покомплексно отколку што навистина е лол.

      Ви благодариме за коментарот, навистина

      Со почит

      ПС: Навистина, безбедноста никогаш не е доволна хахаха.

      1.    Џош dijo

        Мене ме чинеше малку да го разберам (го прочитав 3 пати) бидејќи не користев линукс подолго време. Но, тоа е навистина едноставно и секогаш е убаво да се научат вакви работи. Поздрав и повторно благодарам.

        1.    КЗКГ ^ Гаара dijo

          Важно е да го разбереме хехе. Се обидов да објаснам се што е крајно детално, но мислам дека проширив премногу.
          Ви благодариме

  3.   auroszx dijo

    Леле, многу добро сценарио

    ПС: Параноја е над 9000! xD

    1.    КЗКГ ^ Гаара dijo

      хахахахахахаха тоа сум јас ... ЛОЛ !!

  4.   Рафаел dijo

    Гледајќи ја вашата скрипта, мислам дека може да се направи со xdialog во случај да немате kde :)! На здравје

    1.    КЗКГ ^ Гаара dijo

      О, не знаев за xdialog ... ќе треба да погледнам да видам
      Ви благодариме за информацијата.

  5.   sieg84 dijo

    наместо rar зошто да не се користат tar.xz / gz и gpg?

    1.    Рафаел dijo

      тоа е затоа што веќе го имате поретко каде го имате вашиот CMS

  6.   Цитукс dijo

    Одлично @ KZKG ^ Gaara пред неколку дена размислував за такво нешто, но јас сум на испити, така што немав време за ништо, и одеднаш ја гледам твојата статија.
    Tryе го пробам следната недела

    1.    КЗКГ ^ Гаара dijo

      Ви благодарам, какви било детали тука сум

  7.   труко22 dijo

    xD Јас не разбирав ништо уу, но ако сакам правилно да го користам kdialog во скриптите, како да добијам порака во известувачот за KDE

    1.    КЗКГ ^ Гаара dijo

      За да добиете пораки во известувањата на KDE, обидете се да го инсталирате пакетот: libnotify-bin
      Потоа во терминал ставате:
      notify-send "texto texto texto"

      И, ќе видите колку е кул 😀…, и ова работи за KDE, Gnome, Unity, Cinnamon, Mate и Xfce

      Сепак, во оваа скрипта не користам известувања како такви, туку едноставно прозорци на KDialog. Во тип на терминал:
      kdialog

      И ќе ја видите помошта таму 😉

      Поздрав

      1.    труко22 dijo

        Многу благодарам о /

  8.   Elоел Антонио Васкез dijo

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

    1.    КЗКГ ^ Гаара dijo

      Благодарам
      Всушност да, MD5 не е совршен и има такви што успеале да добијат лозинки, ќе ја разгледам оваа апликација

      Ви благодариме за вашиот коментар

  9.   sieg84 dijo

    со симетричната само во kdialog ве прашува за лозинката
    и со асиметричен со користење на јавен клуч.

    Морам да појаснам дека немам трага од програмер.

    1.    КЗКГ ^ Гаара dijo

      Да, веќе успеав да шифрирам со GPG (всушност само ставив пост за ова) хехе.

  10.   Caro dijo

    KZKG ^ Гаара секогаш читај ја твојата објава.
    Изградете еден за употреба со XFCE.
    Бакнеж. Скапи

    1.    КЗКГ ^ Гаара dijo

      Здраво и пред се, добредојде на блогот
      хахаха ти благодарам, знам дека понекогаш е тешко затоа што пишувам нешто технички работи, но секогаш се обидувам да објаснам сè што е можно појасно

      Experimentе експериментирам малку со XDialog или Zenity за да видам дали му одговара на Xfce хаха, ќе ги направам тестовите во виртуелен Xubuntu

      Со почит

  11.   Елинк dijo

    Сосема корисен човек, благодарам!

    Честитки!

  12.   Дамијан Ривера dijo

    Ви благодарам, тоа ќе ми помогне многу за да заштитам некои датотеки

    Морав да го прилагодам на зенитот затоа што немам kde во моментот: \

    Тука го оставам скелетот што ќе го користам прилагоден на зенитоста

    http://paste.desdelinux.net/4641

    Фала уште еднаш и поздрав

    1.    КЗКГ ^ Гаара dijo

      ооооооооооогу, благодарам многу 😀 😀
      Се сеќавам дека некој го побара ова, но за Xfce, со Зенити би функционирал во Xfce, нели?

      1.    Дамијан Ривера dijo

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

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

        Или можеби додавање на друг дел (GUI) за да се создаде безбедносната конфигурација на нашата датотека

        Поздрав

        1.    Дамијан Ривера dijo

          Имав време и xfce (во Archlinux) и веќе целосно ја адаптирав сценариото како што беше, за xfce користејќи житилност (мислам) бидејќи тој што го оставив погоре беше само скелетот што го користев

          http://paste.desdelinux.net/4644

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

          Она што се случува е дека имам неколку графички школки и не знам дали ќе работи во чиста xfce, на пример во xubuntu

          Поздрав

  13.   Матијас Гастон dijo

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

    Јас сум многу нов во програмирањето, учам БАШ постепено ... но ми се случија некои работи и може да ти бидат корисни или не.
    Кога ќе кажете дека на скриената скрипта е вметната лозинката и би било непростливо некој да ја отвори и да ја прочита од таму ... вие го предлагате целиот овој трик за вградување на MD5 како заштитна мерка.

    Што е прилично добро како прв чекор во отежнување на животот на потенцијалниот натрапник, но проверете ги следниве идеи (што дури може да се применат една над друга)

    ИДЕА 1) Што ако ја зачувате лозинката во датотека на вашата машина, а не ја хостирате во скриптата?

    ЕЈ: во txt ставете го клучот и зачувајте го во / дома / /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) Што е со тоа, дали ја замаглувате целата баш-скрипта, па затоа не може ни да се отвори?

    Еден начин да го направите ова е да го искористите фактот дека треба да составите Ц.
    Потоа, ја воведува скриптата во 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.

    Па, ништо повеќе ...
    На здравје !!!!!!!! и држете БЕШ.

    1.    КЗКГ ^ Гаара dijo

      ХАХАХАХА благодарам
      Всушност, сега користам 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, така што дозволите не се целосно најдобрата опција.

      За опфаќањето на Баш-кодот ... да, размислував за ова и идејата е ГОЛЕМА, проблемот е што не знам како да го направам тоа, всушност не знам ни дали може да се направи ХАХАХА.

      О, чекај ... сега го прочитав остатокот од коментарот О_О ... хехе, не знаев дека можеш да го сториш тоа. Немам претстава за Ц или Ц ++, но би вредело да пробам лол.

      За идејата 3, не е лошо

      Направив неколку подобрувања во сценариото откако го објавив овој пост, 2 се оние што ги споменав во врските на почетокот на овој коментар, друго е дека ако промените некој карактер во сценариото, тој ќе се избрише. И сега морам да го пробам ова за да го замавнам кодот хахахаха.

      Ви благодариме за вашиот коментар и… да, издржете, баш !!! ХАХА

    2.    КЗКГ ^ Гаара dijo

      WTF !!!
      Јас веќе користев SHC… GE-NI-AL !!!! О_О

  14.   Атеј dijo

    Многу добра скрипта, еј и ако користите проверувач на корени, за да можете да ја извршите скриптата како судо. / Скрипт

    Вие само треба да го додадете овој код на почетокот

    http://paste.desdelinux.net/4663

    Поздрав

  15.   Neo61 dijo

    KZKG ^ Гаара, пријателе, мислам дека елаборирањето на објаснување не е проблем, тоа е добро за оние кои немаат толку знаење. Написите што не учат се објавени токму тука, тие даваат информации само за нешто што постои. Затоа, не се оправдувајте и оставете да има уште со проширени објаснувања.

  16.   насилник dijo

    За вакви работи што ги користам http://www.truecrypt.org/

  17.   Abel dijo

    Може ли некој да го сподели сценариото? Curубопитен сум и сите врски се прекинати. 🙁

    Ви благодариме.