Avancerat skript i Bash (bash + md5) för att skydda 'något' (+ detaljerad förklaring)

Några dagar sedan Jag berättade för dem om FlatPress, en webbapplikation (CMS) genom vilken du kan ha en blogg eller något liknande utan att använda databaser, eller komplicera mycket 🙂

Tja, jag har på min bärbara dator a FlatPress för personliga anteckningar, saker som jag inte vill glömma och det är därför jag skriver dem i den här personliga bloggen. Men, som flera av er redan måste veta ... Jag är lite paranoid med säkerhet, och om det gäller mina tankars säkerhet har du ingen aning om hur paranoid jag kan vara llegar

Så jag stod inför problemet: Hur använder jag FlatPress kan jag skydda allt innehåll på det?

Jag tänkte på flera applikationer som gör det möjligt att kryptera data, men ... ingen gjorde exakt vad jag ville, så jag tog på mig uppgiften att programmera vad jag ville själv.

Nu ska jag visa dig ett manus som jag gjorde, vilket gör följande:

Manuset är utformat för att arbeta i KDE, om de inte har det KDE dialogrutor visas inte för dem.

1. Den visar en dialogruta som frågar om du är KZKG ^ Gaara, om du trycker på NEJ stängs skriptet, om du trycker på JA fortsätter allt som normalt.

2. Visa en textruta som frågar vad lösenordet är:

3. Om du trycker på Avbryt stängs skriptet, nu kommer ett av skripttricken 😉 ...

3.1. Logiken är att skriptet jämför lösenordet som vi skriver med ett som redan är fördefinierat inom samma skript, och om lösenorden matchar fortsätter det att köras, och om lösenorden inte matchar kommer ett felmeddelande att visas. Problemet är att om vi placerar rätt lösenord inuti skriptet precis så kan alla som öppnar skriptet med en textredigerare se rätt lösenord mycket tydligt .. och det här mina vänner, det är helt enkelt ett oförlåtligt misslyckande

3.2. För att undvika att sätta lösenordet så här i klartext i skriptet använde jag MD5. I början av skriptet förklarade jag att rätt lösenord är «2dac690b816a43e4fd9df5ee35e3790d«, Och det här är MD5:desdelinux«. ... Jag förstår ingenting!! ... 😀

Låt oss detaljera lite mer. Om jag nu skriver till en fil (till exempel ~ / pass.txt) av text: desdelinux

Om jag i en terminal skriver: md5sum ~ / pass.txt

Det kommer att återvända till mig: 2dac690b816a43e4fd9df5ee35e3790d sum

Och ... som du kan se är den första kolumnen som har många siffror och bokstäver i ingen uppenbar ordning identiskt samma som den jag lade ovan, och det är den i det deklarerade skriptet.

Den första kolumnen är MD5 från desdelinux 😉

Om de anger följande kommer den bara att returnera den första kolumnen, som är den som intresserar oss: md5sum ~/pass.txt | awk '{print $1}'

4. Så, manövreringen av skriptet i denna specifika del är:

4.1. Skriptet placerar lösenordet som du har skrivit i en tillfällig fil som heter temp.txt, och det extraherar MD5 från innehållet i den filen med kommandot:

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

4.2. Om MD5 för lösenordet du just skrev inte är identiskt samma som den som har definierats (det vill säga det som skrivs i skriptet) kommer det att stängas och ge ett fel:

4.3. Om lösenordet matchar, perfekt ... skriptet fortsätter 😀

5. När lösenordet matchar kommer skriptet att göra en serie steg, i mitt fall:

5.1. Det kommer in i mappen / hem / delad / värd / - » cd / hem / delad / värd /

5.2. FlatPress-mappen heter "mig", och den komprimeras i .RAR-skyddad med lösenord (lösenordet är detsamma som det borde ställas in tidigare), så skriptet packar upp den filen (me.rar) - » rar x me.rar -hp $ MWORD

sällsynt x - »Vad det gör är att dekomprimera filer och mappar med samma ordning som de har.

mig.sällsynt - »Det här är filen som jag vill packa upp.

-hp $ MWORD - »Här säger jag dig att du måste använda lösenord för att packa upp filen, och lösenordet är variabeln $ MWORD (denna variabel är lösenordet som vi angav tidigare)

5.3. Så, om den var uppackad, går jag vidare för att ta bort filen me.rar ... varför? Tja, för det är inte vettigt att .rar finns om jag arbetar med filerna jag hade inuti, och de filerna ändras för att jag skriver nya saker på bloggen - » rm me.rar

5.4. Jag måste ändra behörigheterna för att allt ska fungera bra - » chmod 777 -R me / (kom ihåg att mappen me / är det som innehöll den komprimerade me.rar)

5.5. Det visar mig ett fönster som säger att jag har tio sekunder på mig att öppna "webbläsaren". WTF!, Vad betyder detta? ...

5.5 (a). Enkelt, väldigt enkelt ... 🙂 ... Jag öppnar webbläsaren (i det här fallet rekonq) och jag arbetar med ett nytt inlägg, men när jag stänger webbläsaren komprimerar manuset mig / mappen igen i .rar (kvar i me.rar).

Detta är möjligt eftersom skriptet kontrollerar var tredje sekund om Rekonq är öppen eller inte, om det upptäcker att det är öppet, gör skriptet ingenting, men om det upptäcker att det INTE är öppet, kör det: rar a me.rar -hp $ MWORD me / * && rm -R me /

Vilket innebär att den komprimerar mappen mig/ en mig.sällsynt (och det kommer att sätta ett lösenord, vilket skulle vara detsamma som vi redan har sett) och när du komprimerar den och om det inte fanns några fel kommer den att ta bort mappen mig/ med allt innehåll.

5.5 (b). Hur hjälper det oss? ... enkelt, detta gör att vi inte behöver komma ihåg att vi måste skydda vårt innehåll igen, eftersom vi bara behöver sluta arbeta med det (stäng webbläsaren) och manuset kommer att göra resten av jobbet 😉

6. Redo, allt detta har förklarats på ett allmänt sätt 🙂

... även om det fortfarande finns en annan detalj 😀

Skriptet har ett ännu större skydd, skydd som är inaktiverat (kommenterat) är dessa rader:

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

Vad det gör är enkelt. Variabeln $ USER är en global variabel i systemet, om den är i en terminalutteckning:

echo $USER

Du kommer att se vad din användare visar dig ... logiken i dessa rader är enkel.

Om $ USER inte matchar $ ME-variabeln (och den förklarades av mig i skriptet och det är: "gaara") kommer skriptet att ta bort ALLA filerna .sh som finns i den mappen, det vill säga det kommer att förstöra själv 😉

Detta för att hindra någon annan från att köra skriptet på en annan dator hehehehe.

Och ja, jag tror inte att det finns mycket mer att förklara, jag lämnar manuset:

.SH-filnedladdning
Se manuset i vår klistra in

Jag vet att många kommer att tycka att det är extremt komplicerat, men det skrämmer faktiskt mer än det borde ... manuset har väldigt enkel arbetslogik, för ett enkelt syfte.

Jag gjorde detta för att möta ett mycket specifikt behov av mig, jag delar det i hopp om att någon annan linje eller idé som förklaras här kan tjäna någon 😉

Förresten är skriptet avsett för KDE, eftersom dialogrutorna (fönstren) det visar är från KDE (med KDialog), men det kan anpassas för Gnome / Unity / Cinnamon / Mate med zenitet, eller använd den 100% i terminalen genom att helt enkelt använda dialogkommandot.

Och ja, manuset har fortfarande några andra brister, till exempel om manuset packar upp .rar, och sedan någon med våld stänger (dödar) manuset, kommer innehållet i .rar att vara oskyddat, det finns några detaljer som återstår att vara polerad ... men hej, vi måste också kontrollera att ingen kan kontrollera vår dator 😀

För att avsluta vill jag klargöra att jag INTE är programmerare, mycket mindre, jag anser mig inte vara sådan, jag föreställer mig att du kan optimera rader i koden, eller använda någon funktion för att förbättra skriptets funktion ... men jag sa, jag är inte en programmerare 😉

Eventuella frågor de har om det berättar de för mig, även om manuset kanske inte tjänar dem eftersom de inte behöver det, kan de alltid lära sig några andra tips från det 😀

hälsningar

PD: jag vet det livlig han kommer att säga att jag är för paranoid ... eller att jag slösar bort min tid, men det är inte så. Jag ville ha något mycket specifikt, ett mycket specifikt säkerhetssystem, och jag programmerade det själv ... hur nördigt är det? … LOL!!


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   Hackan sade

    Detta intressant, men jag tror att frågan om ja / nej är väldigt att pruta xD
    Och vad tycker du, istället för att använda rar som är proprietär och inte erbjuder verklig säkerhet, ersätt den med gpg, som är en säkerhetsprogramvara som mer än bevisats genom åren, och som finns i praktiskt taget alla distributioner 😉
    En annan sak, du kan skicka md5sum en sträng, du behöver inte skapa en tillfällig fil. Här rekommenderar jag också att du går till sha vilket är mycket säkrare, prova i terminalen: shasum

    Saludos!

    1.    KZKG ^ Gaara sade

      Hej och tack för din kommentar 😀
      GPG tillåter mig att paketera en katalog med allt innehåll? Det är att jag faktiskt bara har använt det för enskilda filer, inte för kataloger som innehåller underkataloger och filer.

      ooo ... bra om shasum, jag kände honom inte 😀
      Jag fortsätter med att ändra skriptet för att använda det här, och ... ja !! sant, med helt enkelt: eko "$ LÖSENORD" | shasum Jag har redan fått strängen, verkligen inget behov av att skriva den till en fil :)

      Tack så mycket för din kommentar, jag har redan lärt mig något nytt 🙂
      hälsningar

    2.    sieg84 sade

      är samma sak som jag frågade ...

      1.    KZKG ^ Gaara sade

        Vad du behöver är att ta reda på hur du GPG krypterar en fil och skickar lösenordet på samma rad ... till exempel:
        gpg -e file.tar.gz – lösenordets lösenord vad som helst

        Någon aning om hur man gör det? 🙂

        1.    Hackan sade

          För att kryptera en katalog c / gpg måste du först packa den med tjära.
          för det här fallet är det bekvämt att använda symmetrisk kryptering med parametern -c (se skillnaden mellan symmetrisk och asymmetrisk kryptering på wikipedia).
          detta skulle då vara ungefär som:
          tar -czf destination.tgz source_directory / && echo $ passwd | gpg –batch –komprimeringsnivå 0 -c – lösenordsfras-fd 0
          detta skapar en komprimerad fil som heter "destination.tgz" och den krypterade filen som heter "destination.tgz.gpg". både källkatalogen och själva komprimeringen ska tas bort för säkerhet (kontrollera kommandot shred)

          att dekryptera:
          echo $ passwd | gpg –batch -d –passphrase-fd 0 encryption_file.tgz.gpg | tjära -xz
          som skulle extrahera filerna i den aktuella katalogen (då kan mv användas för att flytta dem någon annanstans)

          Eventuella frågor, svara på den här kommentaren 🙂

          Hälsningar !!

          1.    Hackan sade

            ehm, se upp för dubbla bindestreck (-) och enkla bindestreck (-) ... finns det ett sätt att skriva något som om det vore kod så att formatet inte ändras?
            prueba de codigo -- -
            [kod] testkod - - [/ kod]

          2.    Hackan sade

            Jag spenderar det mer ordentligt

            komprimera och kryptera:
            tar -czf destino.tgz directorio_fuente/ && echo $passwd | gpg –batch –compress-level 0 -c –passphrase-fd 0
            Observera att här är två steg: först skapa den komprimerade filen och fortsätt sedan med krypteringen om det inte fanns något (kedja med &&)

            dekryptera och packa upp:
            echo $passwd | gpg –batch -d –passphrase-fd 0 archivo_cifrado.tgz.gpg | tar -xz

            hälsningar!

          3.    KZKG ^ Gaara sade

            Ja, faktiskt igår hemma läste jag gpg-mannen och det var allt jag behövde 😀
            Egentligen gjorde jag inte riktigt så, jag använde inte eko eller komprimering, jag skrev ett inlägg om detta, jag publicerade det bara.

            Tack så mycket för hjälpen, det gör jag verkligen.

  2.   Josh sade

    Underbar! Jag letade bara efter något liknande och jag stötte på din artikel. Jag ska testa det för att skydda mina uppgifter. När det gäller datasäkerhet kan du aldrig bli för paranoid. Tack

    1.    KZKG ^ Gaara sade

      Tack haha.
      Förstod du hur manuset fungerar, eller hur?

      Det verkar mycket mer komplicerat än det faktiskt är lol.

      Tack för kommentaren, verkligen 😀

      hälsningar

      PS: Säkerhet är faktiskt aldrig tillräckligt hahaha.

      1.    Josh sade

        Det kostade mig lite att förstå det (jag läste det tre gånger) eftersom jag inte har använt linux på länge. Men det är väldigt enkelt och det är alltid trevligt att lära sig saker som detta. Hälsningar och tack igen.

        1.    KZKG ^ Gaara sade

          Det viktiga är att förstå det hehe. Jag försökte förklara allt extremt detaljerat, men jag tror att jag förlängde för mycket hahaha.
          Tack till dig 🙂

  3.   Auroszx sade

    Wow, manuset är väldigt bra 🙂

    PS: Paranoia är över 9000! xD

    1.    KZKG ^ Gaara sade

      hahahahahahaha det är jag ... LOL !!

  4.   Rafael sade

    När jag tittar på ditt skript tror jag att det kan göras med xdialog om du inte har kde :)! Skål

    1.    KZKG ^ Gaara sade

      Åh, jag visste inte om xdialog ... Jag måste hålla ett öga på det 😀
      Tack för informationen.

  5.   sieg84 sade

    istället för rar varför inte använda tar.xz / gz och gpg?

    1.    Rafael sade

      det beror på att du redan har det i rar där du har ditt CMS

  6.   Stad sade

    Utmärkt @ KZKG ^ Gaara för några dagar sedan tänkte jag på något sådant, men jag är i prov så jag har inte haft tid för någonting och plötsligt ser jag din artikel ...
    Jag ska prova nästa vecka 🙂

    1.    KZKG ^ Gaara sade

      Tack, alla detaljer här är jag 😀

  7.   truko22 sade

    xD Jag förstod ingenting uu men om jag skulle vilja använda kdialog korrekt i skript, hur får jag ett meddelande i KDE-meddelaren

    1.    KZKG ^ Gaara sade

      För att få meddelanden i KDE-meddelanden, försök installera paketet: libnotify-bin
      Sedan i en terminal sätter du:
      notify-send "texto texto texto"

      Och du kommer se hur cool 😀 ... och det här fungerar för KDE, Gnome, Unity, Cinnamon, Mate och Xfce 😉

      I det här skriptet använder jag dock inte aviseringar som sådana utan bara KDialog-fönster. I en terminal typ:
      kdialog

      Och du kommer att se hjälpen där 😉

      Hälsningar 😀

      1.    truko22 sade

        Tack så mycket o /

  8.   Joel antonio vasquez sade

    Hej, bra inlägg, bara ett förslag, det är okej att det med md5 inte syns med blotta ögat, men några nyfikna kan använda ett regnbågsbord för att se om lösenordet som omvandlas till md5 finns där inne, jag rekommenderar att du använder bcrypt (http://bcrypt.sourceforge.net/), det är bara ett förslag, du kan ta det för alla tillfällen, hälsningar.

    1.    KZKG ^ Gaara sade

      Tack 😀
      Faktiskt ja, MD5 är inte perfekt och det finns de som har lyckats få lösenord, jag tar en titt på det här programmet 😉

      Tack för din kommentar.

  9.   sieg84 sade

    med den symmetriska bara i kdialog ber den dig om lösenordet
    och med den asymmetriska med en offentlig nyckel.

    Jag måste klargöra att jag inte har spår av en programmerare.

    1.    KZKG ^ Gaara sade

      Ja, jag lyckades redan kryptera med GPG (jag skrev faktiskt bara ett inlägg om det här) hehe.

  10.   Caro sade

    KZKG ^ Gaara läser alltid ditt inlägg.
    Bygg en att använda med XFCE.
    Puss. Dyr

    1.    KZKG ^ Gaara sade

      Hej och först och främst välkommen till bloggen 😀
      hahaha tack, jag vet att det ibland blir svårt eftersom jag skriver lite tekniska saker, men jag försöker alltid förklara allt så tydligt som möjligt 🙂

      Jag kommer att experimentera lite med XDialog eller Zenity för att se om det fungerar för Xfce haha, jag kommer att göra testerna i en virtuell Xubuntu 🙂

      hälsningar

  11.   elynx sade

    Ganska användbar man, tack!

    Hälsningar!

  12.   Damian rivera sade

    Tack, det hjälper mig mycket att skydda vissa filer

    Jag var tvungen att anpassa den till zenity eftersom jag inte har kde just nu: \

    Här lämnar jag skelettet som jag ska använda anpassat till zenitet

    http://paste.desdelinux.net/4641

    Tack igen och hälsningar 😀

    1.    KZKG ^ Gaara sade

      oooo bra, tack så mycket 😀 😀
      Jag kommer ihåg att någon bad om detta men för Xfce, med Zenity skulle det fungera i Xfce, eller hur?

      1.    Damian rivera sade

        Ja, bara att kommandot lämnades för att lägga till kommandona som ska köras efter att ha skickat lösenordet till shasum eller md5

        Det måste modifieras till olika behov för varje person, för att skydda olika saker på olika vägar med olika kommandon

        Eller kanske lägger till en annan del (GUI) för att skapa säkerhetskonfigurationen för vår fil

        Hälsningar 😀

        1.    Damian rivera sade

          Jag hade tid och xfce (i Archlinux) och jag har redan helt anpassat skriptet som det var, för xfce med zenity (tror jag) eftersom det jag lämnade ovan bara var skelettet jag använde

          http://paste.desdelinux.net/4644

          Kan den redigeras om den har en bugg från klistra in?

          Vad som händer är att jag har flera grafiska skal och jag vet inte om det kommer att fungera i ren xfce, till exempel i xubuntu

          Hälsningar 😀

  13.   Matias Gaston sade

    Intressant che !!! Bra bidrag !!!!!!

    Jag är väldigt ny i programmering, jag lär mig BASH lite efter lite ... men vissa saker har uppstått för mig och de kan vara användbara för dig.
    När du säger att det skalade skriptet innehåller lösenordet och det skulle vara oförlåtligt för någon att öppna det och läsa det därifrån ... föreslår du hela detta trick för att bädda in MD5 som ett skyddsåtgärd.

    Vilket är ganska bra som ett första steg för att göra livet svårt för den blivande inkräktaren, men kolla in följande idéer (som till och med kan appliceras på varandra)

    IDÉ 1) Vad händer om du sparar lösenordet i en fil på din dator och inte är värd för det i skriptet?

    EJ: sätt i nyckeln i en text och spara den i / hem / /bla/bla/key.txt
    I ditt skript kallar du nyckeln som KEY = "$ (cat $ HOME / blah / bla / key.txt)", sedan kastar du if $ frågetangenten = $ KEY, då .. etc etc

    På detta sätt uppnår du 3 saker +1 fördel:
    1) Att lösenordet aldrig fanns i skriptet. (Du undviker MD5)
    2) Sökvägen till lösenordet beror på användarnamnet. (Den som vill öppna den, omdirigerar den var som helst) I 99.9% av fallen misslyckas manuset.
    3) Om du vill ha mer säkerhet, ta bort alla behörigheter till filen key.txt för alla andra användare utom din.
    4) Fördel: Bärbarhet att ändra lösenord när du vill, utan att redigera skript. Eftersom verifieringen är extern via en fil.

    IDEA 2) Vad sägs om att du döljer hela bash-skriptet så att det inte ens kan öppnas?

    Ett sätt att göra detta är att dra nytta av det faktum att du i C behöver kompilera.
    Sedan introducerar det skriptet inuti en C-kod som allt det gör är att kalla det skriptet (men det finns i programmet). Vid tidpunkten för sammanställningen ... är allt kvar inne och din produktion är en körbar ... och inte mer ett skript. Det finns en person som redan har skapat ett "manus" som gör fördunkningsprocessen, vilket är mycket praktiskt.

    Mer info här: 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) Vad händer om du placerar ett virtuellt tillstånd i skriptet där det kräver administratörslösenord?

    Exempelvis kör ett villkor med "sudo" och fortsätt sedan med skriptet, om inte stoppa det.
    På det här sättet skulle allt skydd falla som en bro över ditt ROOT-lösenord.

    Tja, inget mer ...
    Skål!!!!!!!! och håll BASH.

    1.    KZKG ^ Gaara sade

      HAHAHAHA Tack 😀
      Egentligen använder jag nu SHA512 eftersom det är mycket bättre än MD5: https://blog.desdelinux.net/como-saber-la-suma-md5-o-sha-de-una-palabra-oracion-o-archivo/
      Förutom GPG som ett skyddsmedel istället för att komprimera med .RAR: https://blog.desdelinux.net/como-proteger-datos-con-gpg-de-forma-simple/

      Problemet med att placera lösenordet i en annan fil, är att det då skulle sätta lösenordet på en annan plats, ja, men skulle det vara i ren text? Om jag måste kryptera det (vilket rekommenderas), lämnar jag det i samma skript, ja ... Jag tvivlar sååååå mycket på att någon kan bryta SHA512 hahahaha (se 1: a länken så förstår du understand)

      När det gäller behörigheterna, om någon använder en LiveCD, kan de öppna .txt med LiveCD-roten, så behörigheterna är inte helt det bästa alternativet.

      Om att fördunkla Bash-koden ... ja, jag hade tänkt på det här och tanken är STOR, problemet är att jag inte vet hur man gör det, jag vet faktiskt inte ens om det kan göras HAHAHA.

      Åh vänta ... nu läste jag resten av kommentaren O_O ... hehe, jag visste inte att du kunde göra det. Jag har ingen aning om C eller C ++, men det skulle vara värt ett försök lol.

      Om idé 3, inte dåligt 😀

      Jag har gjort flera förbättringar av manuset sedan jag publicerade det här inlägget, 2 är de jag nämnde i länkarna i början av denna kommentar, en annan är att om du ändrar något tecken i manuset raderas det. Och nu måste jag prova detta för att fördunkla koden hahahaha.

      Tack för din kommentar och ... ja, vänta, snälla !!! HAHA

    2.    KZKG ^ Gaara sade

      WTF !!!
      Jag har redan använt SHC ... GE-NI-AL !!!! O_O

  14.   Atheyus sade

    Mycket bra skript, hej och om du använder en root checker, för att kunna köra skriptet som sudo. / Script

    Du måste bara lägga till den här koden i början

    http://paste.desdelinux.net/4663

    En hälsning

  15.   Neo61 sade

    KZKG ^ Gaara, min vän, jag tror att det inte är problemet att utarbeta en förklaring, det är bra för oss som inte har så mycket kunskap. Här har artiklar publicerats som inte lär ut, de ger bara information om något som finns. Så ursäkta dig inte och låt det finnas fler med utökade förklaringar.

  16.   djägare sade

    För saker som detta använder jag http://www.truecrypt.org/

  17.   Abel sade

    Kan någon dela skriptet? Jag är nyfiken och alla länkar är nere. 🙁

    Tack.