Script avanzato in Bash (bash + md5) per proteggere 'qualcosa' (+ spiegazione dettagliata)

Alcuni giorni fa Ne ho parlato Pressa piatta, un'applicazione web (CMS) attraverso la quale possono avere un blog o qualcosa di simile senza utilizzare database o diventare troppo complicati 🙂

Bene, ho sul mio laptop un file Pressa piatta per appunti personali, cose che non voglio dimenticare ed è per questo che li scrivo in questo blog personale. Ma, come molti di voi già sapranno ... sono un po 'paranoico riguardo alla sicurezza e, se riguarda la sicurezza dei MIEI pensieri, non avete idea di quanto possa essere paranoico

Quindi mi sono trovato di fronte al problema: come posso proteggere tutto il contenuto con FlatPress usando FlatPress?

Ho pensato a diverse applicazioni che consentissero di crittografare i dati, ma ... nessuna ha fatto esattamente quello che volevo, quindi ho assunto il compito di programmare ciò che volevo io stesso.

Ora ti mostrerò uno script che ho realizzato, che fa quanto segue:

Lo script è progettato per lavorare in KDE, se non lo hanno KDE le finestre di dialogo non appariranno loro.

1. Mostra una finestra di dialogo che chiede se sei KZKG ^ Gaara, se premi NO lo script si chiude, se premi YES tutto continua normalmente.

2. Mostra una casella di testo che chiede qual è la password:

3. Se premi Annulla lo script si chiude, ora arriva uno dei trucchi dello script 😉 ...

3.1 La logica è che lo script confronta la password che scriviamo con una che è già predefinita nello stesso script, e se le password corrispondono, allora continua a funzionare, e se le password non corrispondono verrà visualizzato un messaggio di errore. Il problema è che, se inseriamo la password corretta all'interno dello script in questo modo, chiunque apra lo script con un editor di testo potrebbe vedere la password corretta molto chiaramente .. e questo amici miei, è semplicemente un errore imperdonabile 🙂

3.2 Per evitare di inserire la password come questa in testo normale nello script, ho usato MD5. Cioè, all'inizio dello script, ho dichiarato che la password corretta è «2dac690b816a43e4fd9df5ee35e3790d«, E questo è l'MD5 di:«desdelinux«. ... Io non capisco niente!! ... 😀

Analizziamo un po 'di più. Se ora scrivo su un file (ad esempio, ~ / pass.txt) di testo: desdelinux

Se in un terminale scrivo: md5sum ~ / pass.txt

Tornerà a me: 2dac690b816a43e4fd9df5ee35e3790d sum

E ... come puoi vedere, quella prima colonna che ha molti numeri e lettere in nessun ordine apparente, è identica a quella che ho inserito sopra ed è quella nella sceneggiatura dichiarata.

Ebbene, quella prima colonna è l'MD5 di desdelinux 😉

Se mettono quanto segue, restituirà solo la prima colonna, che è quella che ci interessa: md5sum ~/pass.txt | awk '{print $1}'

4. Quindi, il funzionamento dello script in questa parte specifica è:

4.1 Lo script inserirà la password che hai scritto in un file temporaneo chiamato temp.txted estrarrà l'MD5 dal contenuto di quel file utilizzando il comando:

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

4.2 Se l'MD5 della password appena scritta NON è uguale a quello che ha definito (ovvero, quello scritto nello script) si chiuderà e darà un errore:

4.3 Se la password corrisponde, perfetto ... lo script continua 😀

5. Quando la password corrisponde, lo script eseguirà una serie di passaggi, nel mio caso:

5.1 Entrerà nella cartella / home / shared / hosted / - » cd / home / condiviso / ospitato /

5.2 La cartella FlatPress si chiama "me", ed è compressa in .RAR protetta da password (la password è la stessa che dovrebbe essere impostata prima), quindi lo script decomprimerà quel file (me.rar) - » rar x me.rar -hp $ MWORD

raro x - »Quello che fa è decomprimere file e cartelle mantenendo lo stesso ordine che hanno.

io.rar - »Questo è il file che voglio decomprimere.

-hp $ MWORD - »Qui ti dico che devi usare la password per decomprimere il file, e la password è la variabile $ MWORD (questa variabile è la password che abbiamo inserito prima)

5.3 Quindi, se è stato decompresso bene, passo a cancellare il file me.rar ... perché? Bene, perché non ha senso che il .rar esista se sto lavorando con i file che avevo dentro, e quei file stanno cambiando perché sto scrivendo cose nuove sul blog - » rm me.rar

5.4 Devo modificare le autorizzazioni affinché tutto funzioni bene - » chmod 777 -R me / (ricorda che la cartella me / è quella che conteneva il me.rar compresso)

5.5 Mi mostrerà una finestra che mi dice che ho 10 secondi per aprire "il" browser…. WTF!, Cosa significa? ...

5.5 (a). Semplice, molto semplice ... 🙂 ... apro il browser (in questo caso rekonq) e sto lavorando a un nuovo post, ma quando chiudo il browser, lo script comprime nuovamente la cartella me / in .rar (rimanendo in me.rar).

Questo è possibile perché lo script controlla ogni 3 secondi se Rekonq è aperto o meno, se rileva che è aperto, lo script non fa nulla, ma se rileva che NON è aperto, esegue: rar a me.rar -hp $ MWORD me / * && rm -R me /

Ciò significa che comprimerà la cartella me/ en io.rar (e metterà una password, che sarebbe la stessa che abbiamo già visto), e una volta compresso e se non ci sono stati errori, eliminerà la cartella me/ con tutto il suo contenuto.

5.5 (b). In che modo questo ci aiuta? ... semplice, questo ci evita di dover ricordare che dobbiamo proteggere nuovamente il nostro contenuto, poiché dobbiamo solo smettere di lavorarci (chiudere il browser) e lo script farà tutto il resto del lavoro 😉

6. Pronto, tutto questo è stato spiegato in modo generale 🙂

... anche se c'è ancora un altro dettaglio 😀

Lo script ha una protezione ancora maggiore, la protezione disabilitata (commentata) sono queste righe:

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

Quello che fa è semplice. La variabile $ USER è una variabile globale del sistema, se in un terminale mettere:

echo $USER

Vedrai cosa ti mostra il tuo utente ... beh, la logica di queste righe è semplice.

Se $ USER non corrisponde alla variabile $ ME (ed è stata dichiarata da me nello script, ed è: "gaara") lo script cancellerà TUTTI i file .sh che si trovano in quella cartella, cioè si autodistruggerà 😉

Questo per impedire a qualcun altro di eseguire lo script su un altro computer hehehehe.

E beh, non credo ci sia molto altro da spiegare, lascio la sceneggiatura:

Download del file .SH
Guarda lo script nel nostro Paste

So che molti lo troveranno estremamente complesso, ma in realtà è più spaventoso di quanto dovrebbe ... lo script ha una logica di lavoro davvero semplice, per uno scopo semplice.

L'ho fatto per soddisfare un mio bisogno molto specifico, lo condivido sperando che qualche altra linea o idea spiegata qui possa servire a qualcuno 😉

A proposito, lo script è inteso per KDE, perché le finestre di dialogo (finestre) che mostra provengono da KDE (usando KDialog), ma può essere adattato per Gnome / Unity / Cinnamon / Mate usando Zenità, o usalo al 100% nel terminale semplicemente usando il comando dialog.

E sì, lo script ha ancora alcuni altri difetti, ad esempio se lo script decomprime il .rar, e poi qualcuno chiude forzatamente (uccide) lo script, il contenuto del .rar non sarà protetto, ci sono alcuni dettagli che devono essere lucido ... ma ehi, dobbiamo anche controllare che nessuno possa controllare il nostro computer 😀

Per finire ci tengo a precisare che NON sono un programmatore, tanto meno, non mi considero tale, immagino che si possano ottimizzare le righe nel codice, oppure utilizzare qualche funzione per migliorare il funzionamento dello script ... ma io ha detto, non sono un programmatore 😉

Qualsiasi domanda abbiano a riguardo mi dicono, anche se la sceneggiatura potrebbe non essere utile perché non ne hanno bisogno, possono sempre imparare qualche altro suggerimento da essa

saluti

PD: Lo so vivace dirà che sono troppo paranoico ... o che spreco il mio tempo, ma non è così. Volevo qualcosa di molto specifico, un sistema di sicurezza molto specifico, e l'ho programmato da solo ... quanto è geniale? … LOL !!


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Hackan suddetto

    Questo è interessante, ma penso che la questione del sì / no sia molto scoreggia xD
    E cosa ne pensi, invece di usare rar che è proprietario e non offre una vera sicurezza, sostituiscilo con gpg, che è un software di sicurezza più che provato nel corso degli anni ed esiste praticamente in tutte le distribuzioni 😉
    Un'altra cosa, puoi passare md5sum una stringa, non è necessario creare un file temporaneo. Qui ti consiglio anche di andare su sha che è molto più sicuro, prova nel terminale: shasum

    Saludos!

    1.    KZKG ^ Gaara suddetto

      Ciao e grazie per il tuo commento 😀
      GPG mi permette di impacchettare una directory con tutto il suo contenuto? È che l'ho usato solo per i singoli file, non per le directory che contengono sottodirectory e file.

      ooo ... fantastico riguardo allo shasum, non lo conoscevo 😀
      Continuerò a modificare lo script per usare questo e ... sì !! vero, semplicemente: echo "$ PASSWORD" | shasum Ho già ricevuto la stringa, anzi non c'è bisogno di scriverla su un file :)

      Grazie mille per il tuo commento, ho già imparato qualcosa di nuovo 🙂
      saluti

    2.    sig84 suddetto

      è la stessa cosa che stavo chiedendo ...

      1.    KZKG ^ Gaara suddetto

        Quello di cui hai bisogno è capire come crittografare un file con GPG e passargli la password sulla stessa riga ... per esempio:
        gpg -e file.tar.gz –password elpassword qualunque

        Qualche idea su come farlo? 🙂

        1.    Hackan suddetto

          Per crittografare una directory c / gpg, devi prima comprimerla con tar.
          quindi, in questo caso, è conveniente utilizzare la crittografia simmetrica, con il parametro -c (vedere la differenza tra crittografia simmetrica e asimmetrica su wikipedia).
          questo sarebbe quindi qualcosa del tipo:
          tar -czf destinazione.tgz directory_origine / && echo $ passwd | gpg –batch –compress-level 0 -c –passphrase-fd 0
          questo creerà un file compresso chiamato "destination.tgz" e il file crittografato chiamato "destination.tgz.gpg". sia la directory di origine che la compressa stessa dovrebbero essere rimosse per sicurezza (controlla il comando shred)

          per decifrare:
          echo $ passwd | gpg –batch -d –passphrase-fd 0 file_crittografia.tgz.gpg | tar -xz
          che estrarrebbe i file nella directory corrente (quindi mv può essere utilizzato per spostarli altrove)

          Per qualsiasi domanda, rispondi a questo commento 🙂

          Saluti !!

          1.    Hackan suddetto

            ehm, attenzione ai doppi trattini (-) e ai singoli trattini (-)… c'è un modo per scrivere qualcosa come se fosse codice in modo che il formato non cambi?
            prueba de codigo -- -
            [code] codice di prova - - [/ code]

          2.    Hackan suddetto

            Lo spendo in modo più prolisso

            comprimere e crittografare:
            tar -czf destino.tgz directorio_fuente/ && echo $passwd | gpg –batch –compress-level 0 -c –passphrase-fd 0
            Nota che qui ci sono due passaggi: prima crea il file compresso e poi, se non ci sono stati errori, continua con la crittografia (concatenato con &&)

            decifrare e decomprimere:
            echo $passwd | gpg –batch -d –passphrase-fd 0 archivo_cifrado.tgz.gpg | tar -xz

            saluta!

          3.    KZKG ^ Gaara suddetto

            Sì, in realtà ieri a casa ho letto il gpg man e c'era tutto ciò di cui avevo bisogno 😀
            In realtà, non l'ho fatto proprio così, non ho usato l'eco o la compressione, ho scritto un post su questo, l'ho appena pubblicato.

            Grazie mille per l'aiuto amico, davvero.

  2.   Josh suddetto

    Meraviglioso Stavo solo cercando qualcosa del genere e mi sono imbattuto nel tuo articolo. Lo testerò per proteggere i miei dati. Quando si tratta di sicurezza informatica, non si può mai essere troppo paranoici. Grazie

    1.    KZKG ^ Gaara suddetto

      Grazie ahah.
      Hai capito come funziona la sceneggiatura, vero?

      Sembra molto più complesso di quanto non sia in realtà lol.

      Grazie per il commento, davvero 😀

      saluti

      PS: In effetti, la sicurezza non è mai abbastanza ahahah.

      1.    Josh suddetto

        Mi è costato un po 'capirlo (l'ho letto 3 volte) dato che non uso linux da molto tempo. Ma è davvero semplice ed è sempre bello imparare cose come queste. Saluti e grazie ancora.

        1.    KZKG ^ Gaara suddetto

          L'importante è capirlo hehe. Ho provato a spiegare tutto in modo estremamente dettagliato, ma penso di aver esteso troppo ahahah.
          Grazie a te 🙂

  3.   aurosx suddetto

    Wow, ottimo copione 🙂

    PS: la paranoia è più di 9000! xD

    1.    KZKG ^ Gaara suddetto

      hahahahahahaha sono io ... LOL !!

  4.   Rafael suddetto

    Guardando il tuo script penso che possa essere fatto con xdialog nel caso tu non abbia kde :)! Saluti

    1.    KZKG ^ Gaara suddetto

      Oh, non sapevo di xdialog ... dovrò dare un'occhiata per vedere 😀
      Grazie per l'informazione.

  5.   sig84 suddetto

    invece di rar perché non usare tar.xz / gz e gpg?

    1.    Rafael suddetto

      è perché lo hai già in rar dove hai il tuo CMS

  6.   Città suddetto

    Eccellente @ KZKG ^ Gaara giorni fa stavo pensando a qualcosa del genere, ma sono agli esami quindi non ho avuto tempo per niente, e all'improvviso vedo il tuo articolo….
    Lo proverò la prossima settimana 🙂

    1.    KZKG ^ Gaara suddetto

      Grazie, tutti i dettagli sono qui 😀

  7.   camion22 suddetto

    xD Non ho capito niente uu ma se volessi usare correttamente kdialog negli script, come ricevere un messaggio nel notificatore di KDE

    1.    KZKG ^ Gaara suddetto

      Per ricevere messaggi nelle notifiche di KDE prova a installare il pacchetto: libnotify-bin
      Quindi in un terminale metti:
      notify-send "texto texto texto"

      E vedrai quanto è bello 😀 ... e funziona per KDE, Gnome, Unity, Cinnamon, Mate e Xfce 😉

      Tuttavia, in questo script non uso le notifiche in quanto tali, ma solo le finestre di KDialog. In un tipo di terminale:
      kdialog

      E vedrai l'aiuto lì 😉

      Saluti 😀

      1.    camion22 suddetto

        Grazie mille o /

  8.   Joel antonio vasquez suddetto

    Ciao, buon post, solo un suggerimento, vale la pena che con md5 non si vede ad occhio nudo, ma qualche curioso potrebbe usare una tabella arcobaleno per vedere se la password convertita in md5 è lì dentro, consiglio di usare bcrypt (http://bcrypt.sourceforge.net/), è solo un suggerimento, puoi prenderlo per ogni occasione, Saluti.

    1.    KZKG ^ Gaara suddetto

      Grazie 😀
      Effettivamente si, MD5 non è perfetto e c'è chi è riuscito a ottenere le password, darò un'occhiata a questa applicazione 😉

      Grazie per il tuo commento.

  9.   sig84 suddetto

    con quello simmetrico solo in kdialog ti chiede la password
    e con quello asimmetrico che utilizza una chiave pubblica.

    Devo precisare che non ho traccia di programmatore.

    1.    KZKG ^ Gaara suddetto

      Sì, sono già riuscito a crittografare con GPG (infatti ho appena messo un post su questo) hehe.

  10.   Caro suddetto

    KZKG ^ Gaara legge sempre i tuoi post.
    Creane uno da utilizzare con XFCE.
    Bacio. Costoso

    1.    KZKG ^ Gaara suddetto

      Ciao e prima di tutto benvenuto nel blog 😀
      hahaha grazie, so che a volte diventa difficile perché scrivo cose un po 'tecniche, ma cerco sempre di spiegare tutto nel modo più chiaro possibile 🙂

      Sperimenterò un po 'con XDialog o Zenity per vedere se funziona per Xfce haha, farò i test in un Xubuntu virtuale 🙂

      saluti

  11.   elynx suddetto

    Uomo abbastanza utile, grazie!

    Saluti!

  12.   Damian rivera suddetto

    Grazie, mi aiuterà molto a proteggere alcuni file

    Ho dovuto adattarlo a zenity perché al momento non ho kde: \

    Qui lascio lo scheletro che userò adattato allo zenity

    http://paste.desdelinux.net/4641

    Grazie ancora e saluti 😀

    1.    KZKG ^ Gaara suddetto

      oooo fantastico, grazie mille 😀 😀
      Ricordo che qualcuno lo ha chiesto ma per Xfce, con Zenity funzionerebbe in Xfce, giusto?

      1.    Damian rivera suddetto

        Si, solo che restava il comando per aggiungere i comandi da eseguire, dopo aver passato la password di shasum o md5

        Dovrebbe essere modificato in base a esigenze diverse per ogni persona, per proteggere cose diverse in percorsi diversi con comandi diversi

        O magari aggiungendo un'altra parte (GUI) per creare la configurazione di sicurezza del nostro file

        Saluti 😀

        1.    Damian rivera suddetto

          Ho avuto tempo e xfce (in Archlinux) e ho già adattato completamente lo script così com'era, per xfce usando zenity (credo) poiché quello che ho lasciato sopra era solo lo scheletro che ho usato

          http://paste.desdelinux.net/4644

          Può essere modificato se ha un bug dalla pasta?

          Quello che succede è che ho diverse shell grafiche e non so se funzionerà in clean xfce, ad esempio in xubuntu

          Saluti 😀

  13.   Matias Gaston suddetto

    Interessante che !!! Buon contributo !!!!!!

    Sono molto nuovo nella programmazione, sto imparando BASH a poco a poco ... ma alcune cose mi sono venute in mente e potrebbero o meno esserti utili.
    Quando dici che lo script pelato ha la password incorporata e sarebbe imperdonabile per qualcuno aprirlo e leggerlo da lì ... proponi tutto questo trucco di incorporare l'MD5 come misura di protezione.

    Il che è abbastanza buono come primo passo per rendere la vita difficile all'aspirante intruso, ma dai un'occhiata alle seguenti idee (che possono anche essere applicate una sopra l'altra)

    IDEA 1) Cosa succede se salvi la password in un file sulla tua macchina e non la ospiti nello script?

    EJ: in un txt metti la chiave e salvala in / home / /bla/bla/key.txt
    Nel tuo script chiami la chiave come KEY = "$ (cat $ HOME / blah / bla / key.txt)", quindi lanci if $ questionkey = $ KEY, quindi .. ecc ecc

    In questo modo, stai ottenendo 3 cose +1 vantaggio:
    1) Che la password non è mai stata nello script. (Eviti l'MD5)
    2) Il percorso in cui si trova la password dipende dal nome utente. (Chiunque voglia aprirlo, lo reindirizza ovunque) Nel 99.9% dei casi lo script fallirà.
    3) Nel caso in cui desideri maggiore sicurezza, rimuovi tutte le autorizzazioni per il file key.txt per tutti gli altri utenti tranne il tuo.
    4) Vantaggio: portabilità per cambiare la password ogni volta che vuoi, senza modificare lo script. Perché la verifica è esterna tramite un file.

    IDEA 2) Che ne dici di offuscare l'intero script bash, in modo che non possa nemmeno essere aperto?

    Un modo per farlo è sfruttare il fatto che è necessario compilare in C.
    Quindi, introduce lo script all'interno di un codice C che tutto ciò che fa è chiamare quello Script (ma che è all'interno del programma). Al momento della compilazione ... tutto è lasciato dentro e il tuo output è un eseguibile ... e non più uno script. C'è una persona che ha già realizzato un "copione" che esegue il processo di offuscamento, il che è molto pratico.

    Maggiori informazioni qui: 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) E se si inserisse una condizione virtuale nello script in cui richiede la password di amministratore?

    Ad esempio, eseguire una condizione utilizzando "sudo" e quindi continuare con lo script, se non interromperlo.
    In questo modo, tutta la protezione cadrebbe come un ponte sulla tua password di ROOT.

    Beh, niente di più ...
    Saluti!!!!!!!! e tieni premuto BASH.

    1.    KZKG ^ Gaara suddetto

      HAHAHAHA Grazie 😀
      In realtà ora sto usando SHA512 perché è molto meglio di MD5: https://blog.desdelinux.net/como-saber-la-suma-md5-o-sha-de-una-palabra-oracion-o-archivo/
      Oltre a GPG come mezzo di protezione invece di comprimere con .RAR: https://blog.desdelinux.net/como-proteger-datos-con-gpg-de-forma-simple/

      Il problema con l'inserimento della password in un file diverso, è che poi metterebbe la password in un altro posto sì, ma sarebbe in testo normale? Se devo crittografarlo (cosa consigliata), lo lascio nello stesso script, beh ... dubito così tanto che qualcuno possa rompere SHA512 hahahaha (guarda il 1 ° link e capirai)

      Per quanto riguarda i permessi, se qualcuno usa un LiveCD allora potrebbe aprire il .txt usando la radice del LiveCD, quindi i permessi non sono del tutto l'opzione migliore.

      Riguardo all'offuscamento del codice Bash ... sì, ci avevo pensato e l'idea è FANTASTICA, il problema è che non so come farlo, infatti non so nemmeno se si può fare HAHAHA.

      Oh aspetta ... ora ho letto il resto del commento O_O ... hehe, non sapevo che tu potessi farlo. Non ho idea di C o C ++, ma potrebbe valere la pena provare lol.

      A proposito dell'idea 3, non male 😀

      Ho apportato diversi miglioramenti allo script da quando ho pubblicato questo post, 2 sono quelli che ho menzionato nei link all'inizio di questo commento, un altro è che se cambi qualsiasi carattere nello script, viene cancellato. E ora devo provare questo per offuscare il codice hahahaha.

      Grazie per il tuo commento e ... sì, aspetta, bash !!! HAHA

    2.    KZKG ^ Gaara suddetto

      WTF !!!
      Ho già usato SHC… GE-NI-AL !!!! O_O

  14.   Ateo suddetto

    Script molto buono, ehi e se usi un root checker, per poter eseguire lo script come sudo ./script

    Dovresti solo aggiungere questo codice all'inizio

    http://paste.desdelinux.net/4663

    Un saluto

  15.   Neo61 suddetto

    KZKG ^ Gaara, amico mio, penso che elaborare una spiegazione non sia il problema, questo è un bene per quelli di noi che non hanno così tanta conoscenza. Qui sono stati pubblicati articoli che non insegnano, danno solo informazioni su qualcosa che esiste. Quindi non scusarti e lascia che ce ne siano di più con spiegazioni estese.

  16.   cacciatore suddetto

    Per cose come questa io uso http://www.truecrypt.org/

  17.   Abel suddetto

    Qualcuno potrebbe condividere la sceneggiatura? Sono curioso e tutti i collegamenti sono interrotti. 🙁

    Grazie.