HOWTO: Crittografia di uno script di shell su un sistema basato su Linux o Unix
Scopo: Questo blog vi spiegherà come crittografare uno script di shell sul vostro Linux o un sistema basato su Unix. Anche se ci potrebbero essere altri modi per cifrare i vostri script di shell ho trovato questo uno dei più facili da usare. Noi criptare lo script usando il SHC utilità. Ho utilizzato questa utility da ultimi 3 anni e funziona benissimo in situazioni in cui si desidera che gli utenti di eseguire lo script di shell, ma allo stesso tempo non si vuole loro di vedere il codice sorgente dello script di shell. Quindi cerchiamo di iniziare ...
Passo 1: Scaricare o ottenere la fonte
Fortunatamente Debian Etch ha ". deb" pacchetto per l'utility SHC così lo useremo. Su un sistema Debian Etch fare:
# apt-get update;
# apt-get install shc
Ora, andare al passo 3 se si è su un sistema Debian Etch. Se siete su un sistema di Lenny quindi seguire il passo 2.
Se siete su sistema Debian Lenny (le probabilità sono molto alte), allora si avrà bisogno di scaricare il file ". Deb" da repo Debian Etch. È scaricarlo da qui o si può dare il seguente comando:
# apt-get update; apt-get install wget
# wget http://http.us.debian.org/debian/pool/main/s/shc/shc_3.8.6-2_i386.deb
Questo scaricherà il file denominato shc_3.8.6-2_i386.deb nella directory da cui si invoca il comando.
Se siete su un sistema diverso da Debian, è possibile scaricare il tarball da qui o dando il comando:
fedora# wget http://www.datsi.fi.upm.es/%7Efrosal/sources/shc-3.8.6.tgz
Fase 2: Installare il file (solo per utenti su Debian Lenny o Debian Sid) "deb".
". Deb" Una volta scaricato il file sul vostro sistema Linux, installarlo usando il comando dpkg:
# dpkg -i <file-you-downloaded-from-step1>
Example:
# dpkg -i shc_3.8.6-2_i386.deb
Hai solo bisogno di fare quanto sopra su un sistema di Lenny. Se siete su un sistema Debian Etch che viene installato automaticamente.
Fase 3: Crittografare il vostro script di shell
Ora entrare in possesso del vostro script di shell che si desidera crittografare. In questo esempio, useremo un shell script bash chiamato cleanlog.sh cui contenuti sono i seguenti:
#!/bin/bash
echo "Starting to clear Log files..."
cd /var/log;
find ./ -type f -print >> list.txt
cat list.txt | while read a_line
do
cat /dev/null > $a_line;
done
cd;
echo "Log files cleared!"
Ora dare il seguente comando per cifrare il vostro script di shell:
# shc -f cleanlog.sh
Avrete notato che il comando precedente crea due file:
# ls -l
cleanlog.sh.xc
cleanlog.sh.x
cleanlog.sh.x - è il file binario crittografato che useremo
cleanlog.sh.xc - è il file di codice sorgente C.
Fondamentalmente le SHC copritrici comando lo script di shell in un programma C prima e poi compila il programma C in un binario utilizzando un algoritmo di crittografia:
Shell Script-> C sorgente del programma-> codice eseguibile binario
È possibile eliminare il file cleanlog.sh.xc e la vostra shell script originale, cleanlog.sh, in modo sicuro.
Fase 4: eseguire il vostro script di shell criptato
Ora si è pronti per eseguire il vostro script di shell:
# ./cleanlog.sh
Starting to clear Log files...
Log files cleared!
#
Note aggiuntive
1. Ci sono alcune caratteristiche interessanti che è possibile attivare alcune opzioni da passare al comando SHC. Per esempio fare questo:
# shc -v -r -f cleanlog.sh
shc shll=bash
shc [-i]=-c
shc [-x]=exec '%s' "$@"
shc [-l]=
shc opts=
shc: cc cleanlog.sh.xc -o cleanlog.sh.x
shc: strip cleanlog.sh.x
shc: chmod go-r cleanlog.sh.x
#
Le opzioni di cui sopra:
"-F" - dice che il nome del file segue e deve essere data ogni volta.
"-V" - Indica a comando SHC essere verboase
"-R" - Indica a comando SHC per rilassare la misura di sicurezza ovvero fare un binario ridistribuibile che esegue su sistemi diversi con lo stesso sistema operativo (dalla pagina di manuale).
Così, per esempio, se si tenta di eseguire il file binario generato dal punto 4 (cioè non dando l'opzione "-r") su un sistema Linux diverso (copiando l'eseguibile dal sistema su cui è stato compilato per un altro sistema Linux) è non sarà in grado di eseguirlo e si otterrà un messaggio di errore come questo:
system2# ./cleanlog.sh.x
./cleanlog.sh.x: ªÃ¨«ZÉÆ¥«ÞÀãì+
ï'ÛìHhas expired!
Please contact your provider
system2:~#
2. Inoltre, ci sono altre opzioni, come anche in seguito, che può provare:
-E data Data di scadenza nel formato gg / mm / aaaa [Nessuno]-M messaggio messaggio da visualizzare allo scadere ["Vi preghiamo di contattarci il fornitore "]
# shc -v -r -e 01/17/2009 -m "Your program has expired" -f cleanlog.sh
3. Se si ottiene il seguente messaggio di errore su di dare il comando di cui sopra:
# shc -f cleanlog.sh
cleanlog.sh.xc:108:22: error: sys/stat.h: No such file or directory
cleanlog.sh.xc:109:23: error: sys/types.h: No such file or directory
cleanlog.sh.xc:111:19: error: errno.h: No such file or directory
cleanlog.sh.xc:112:19: error: stdio.h: No such file or directory
cleanlog.sh.xc:113:20: error: stdlib.h: No such file or directory
cleanlog.sh.xc:114:20: error: string.h: No such file or directory
cleanlog.sh.xc:115:18: error: time.h: No such file or directory
cleanlog.sh.xc:116:20: error: unistd.h: No such file or directory
cleanlog.sh.xc: In function 'key_with_file':
cleanlog.sh.xc:178: error: array type has incomplete element type
cleanlog.sh.xc:179: error: array type has incomplete element type
cleanlog.sh.xc:185: warning: incompatible implicit declaration of built-in function 'memset'
.....................
.....................
poi dare il seguente comando:
# apt-get install gcc libc6-dev
Ultimo ma non meno importante. Non vi è alcuna garanzia che questa utility vi fornirà una forte protezione di sicurezza. Gli utenti esperti o hacker che hanno una conoscenza sufficiente di "gdb" o altri strumenti di debugger in grado di decifrare il tuo script di shell. Anche se non forniscono un buon punto ha iniziato a criptare (nascondere) gli script di shell da parte degli utenti "regolari", se sei un amministratore di sistema.
Questo è tutto gente. Godetevi la crittografia dei script di shell.













27 gennaio, 2009 alle 23:17
Grande post
Ho un problema:
[Root @ CRBC-SRV-SYSLOG SHC-3.8.6] # SHC-f test.sh
sh: cc: non comando trovato
SHC: Successo
Si crea il file test.sh.xc ma non altro.
Si presenta come una grande applicazione, ma come faccio a farlo funzionare?
test.sh:
#! / Bin / sh
echo "Questo è un test!
Rispondi a questo commento
Kushal Rispondi:
27 gennaio, 2009 alle 23:36
Avete installato gcc? fare:
apt-get update
apt-get install gcc libc6-dev
Se questo non funziona poi fammi sapere quale distro si utilizza ....
Grazie per il tuo commento.
Rispondi a questo commento
SeeFor Rispondi:
28 gennaio, 2009 alle 02:56
Che ha fatto, grazie per il vostro aiuto.
Questo è un buon modo per proteggere i vostri script di shell.
Grazie,
Sif
Rispondi a questo commento
28 gennaio, 2009 alle 14:55
Che ha fatto grazie, sto usando Fedora 10
Grazie per l'aiuto, questo è davvero modo fresco di proteggere i vostri script di shell.
Rispondi a questo commento
12 marzo 2009 alle 05:23
Grazie amico!
Hai fatto la mia giornata :) Funziona!
Rispondi a questo commento
26 Luglio 2009 alle 13:59
grazie per questo post
ma dopo che ho una criptata dei miei script bash e funziona benissimo
Ho avuto un problema con il mio hard disk e ho solo lo script cifrato con il mio amico
c'è un modo per decifrare questi file?
alcuni di questi script hanno bisogno di aggiornamento e 'a circa 900 linea non riesco a digitare di nuovo
per favore fatemi sapere se c'è un modo possibile per decifrare questo file
Rispondi a questo commento
Admin Rispondi:
26 Luglio 2009 alle 8:15 pm
Hmm ... Immagino che non hai visto che arrivando ... Beh, posso dirti due cose:
a) Provate a leggere il codice sorgente e vedere se è possibile ottenere qualche indizio da lì su come smontarlo. Per quanto ne so, lo script utilizza l'algoritmo RC4 per cifrare.
b) Provare a inviare email l'autore e vedere se risponde indietro. Molto probabilmente non lo faranno.
http://www.datsi.fi.upm.es/ ~ frosal /
Rispondi a questo commento
bidoni Rispondi:
13 Febbraio 2013 alle 07:21
eseguire lo script e aprire un altro terminale e digitare ps-ef | grep nome dello script
Rispondi a questo commento
21 settembre 2009 alle 02:18
avendo un problema.
ogni volta che provo encrpyt uno script dà questo errore. Sto cercando di utilizzare il comando aspettarsi nello script così sto indovinando SHC non lo riconosce
qui l'errore.
SHC guscio Sconosciuto (aspettare): specificare [-i] [-x] [-l]
SHC: Successo
Grazie in anticipo
Rispondi a questo commento
Admin Rispondi:
23 Settembre 2009 alle 22:42
Sembra che si aspettano è una sorta di programma interattivo. Non ho mai usato quindi non ho idea molto. Sembra che si aspetta il comando si aspetta (no pun intended), un tipo di input di dati. Se si riesce a postare parte dello script in cui si hanno problemi può essere che posso darvi qualche idea in più la tua?
Rispondi a questo commento
Mohammed Rispondi:
9 Febbraio, 2010 alle 02:37
È possibile utilizzare tclkit e Starkit per crittografare aspettarsi script.
Fare riferimento http://www.equi4.com/ per maggiori dettagli.
~ Mohammed
Rispondi a questo commento
16 Aprile, 2010 alle 10:06
Interruttori con-fwwu il comando ps manifesteranno comunque lo script originale. Altro che l'aggiunta di un po 'di commenti vuote all'inizio dello script, hai qualche idea di come evitare questo?
Rispondi a questo commento
18 maggio, 2010 alle 07:30
Posso avere shell di crittografia utilità SHC sul mio RHEL OS. Si prega di dare me collegare per avere il numero di giri per la stessa e la procedura da seguire l'installazione degli stessi.
Rispondi a questo commento
3 giugno 2010 alle 01:00
maddy,
check this out:
http://www.linuxsecurity.com/content/view/117920/49/1/1/
~ Mohammed
Rispondi a questo commento
23 Agosto 2010 alle 23:49
[...] Anche questo può essere disponibile: Crittografia Crittografia di script di shell script di shell 2 Cordiali saluti, [...]
25 agosto 2010 alle 03:12
Ciao,
Sto utilizzando SHC-3.8.6-1 sotto Centos. Non ho alcun errore durante la compilazione degli script di shell. Ma ho ottenuto il seguente errore durante l'esecuzione del file eseguibile test.sh.x o C del corrispondente script di shell.
-Bash:. / Test.sh.x: Permesso negato
Qual è il problema con SHC qualsiasi indizio per favore.
Grazie,
Haridas N.
Rispondi a questo commento
1 ottobre, 2010 alle 09:07
Ciao,
durante la compilazione attraverso SHC di test.sh dà errore sotto:
[Ghoshd @ / home / ghoshd] #. / SHC-f test.sh
ksh:. / SHC: non può eseguire
[Ghoshd @ / home / ghoshd] # w
[Ghoshd @ / home / ghoshd] # ll SHC
-Rwxrwxrwx 1 ghoshd orasupp 39767 10 luglio 2006 SHC
[Ghoshd @ / home / ghoshd] #
anyidea?
grazie,
Dipankar
Rispondi a questo commento
Admin Rispondi:
1 ottobre, 2010 alle 09:18
Si sta tentando di eseguire il comando "SHC" come ". / SHC", che non è corretto. Si utilizza solo quelli sintassi per gli script. Quello che vi serve è questo:
# SHC-f test.sh
# Sh tesh.sh
oppure
#. / Test.sh
La speranza è chiaro adesso.
Rispondi a questo commento
11 Ottobre 2010 alle 11:09
Posso creare correttamente i file * sh.x ma quando provo a correre li ricevo il seguente errore.:
somefilename.sh.x: comando non trovato
Rispondi a questo commento
Admin Rispondi:
19 ottobre 2010 alle 04:26
Hai fatto il file eseguibile?
Prova:
# Sh somefilename.sh.x
Rispondi a questo commento
19 ottobre 2010 alle 19:54
Grazie per la vostra risposta. Vorrei provare questo e incrociare le dita. Ho provato questo sul affrancatura 4 r1 "start cd persistente", e dopo aver ottenuto il "comando non trovato" Errore mio disco lentamente riempito (4% a sinistra e poi 0%) e poi basta Nuke disco USB e ricominciare . Stavo cominciando a pensare SHC è un virus :-)
Rispondi a questo commento
27 Ottobre 2010 alle 04:18
ho provato la compilazione mio script usando il comando seguente
SHC-r-v-f
Quando ho eseguito il. / scriptname.sh.x, funziona!
ma quando ho copiato il scriptname.sh.x ad un'altra macchina linux, dare il permesso (chmod 777), si genera un errore ...
-Bash: scriptname.sh.x: non è possibile eseguire il file binario
tutte le idee?
Rispondi a questo commento
9 febbraio 2011 alle 02:02
Io sono su una macchina a 64 bit 10.10 Ubuntu. Ho seguito le indicazioni sopra per rendere il file binario (update.sh.x) io in grado di eseguire lo script.
$. / Update.sh.x
. / Update.sh.x: Operation not permitted
Ucciso
Quando ho fatto il file mi sono imbattuto in un paio di linee che potrebbero non aver sembrava giusto. Ecco quello che ho trovato sul terminale. Qualcuno può dare un senso a questo?
$ SHC-v-e 01/01/2020-m "lo script di aggiornamento è scaduto"-f update.sh
SHC shll = bash
SHC [-i] =-c
SHC [-x] = exec '% s' "$ @"
SHC [-l] =
SHC opta =
SHC: cc update.sh.xc-o update.sh.x
update.sh.xc: In funzione 'chkenv':
update.sh.xc: 269: warning: cast del puntatore a intero di dimensioni diverse
SHC: Striscia update.sh.x
SHC: chmod go-r update.sh.x
Rispondi a questo commento
1 Apr 2011 alle 00:39
Ho caricato SHC in RHEL 5.2.
Hai una scrittura criptica con l'utilità come test1.sh.x utilizzando
SHC-v-r-f test1.sh
Ho provato a fare funzionare questo in un'altra macchina con RHEL 4.4, si sta dando un errore di virgola mobile.
Potete aiutarmi.
Rispondi a questo commento
20 giugno 2011 alle 03:55
[...] Fonte: http://linux.koolsolutions.com [...]
16 settembre 2011 alle 01:29
Funziona con script awk implementato in script di shell?
Rispondi a questo commento
18 novembre, 2011 alle 18:47
Ho dovuto scaricare il file tar, estrarlo, make install, e le opere di comando SHC. Ho anche i corretti libc6 file. Quando eseguo SHC-f scriptname.sh mi dà:
SHC: prima riga non valida in script: cd / root / Desktop
SHC: Successo
Non crea alcun file.
??
Rispondi a questo commento
1 febbraio 2012 alle 05:45
Come convers. X file al codice standard. Codice sh
Rispondi a questo commento
1 Marzo 2012 alle 06:50
su CentOS 6.2, ho installato SHC con la versione rpm è SHC-3.8.6-1.el6.rf.i686
Ho corso
# SHC-v-e 01/01/2013-m "Si prega di trovare la versione aggiornata"-f ll.sh
ora i file ll.sh.x e ll.sh.xc ci sono, ma quando ho intenzione di eseguire ll.sh.x come questo
sh ll.sh.x o. / ll.sh.x
mi dà errore:
ll.sh.x: ll.sh.x: non è possibile eseguire il file binario
$ File ll.sh.x
ll.sh.x: ELF eseguibile a 32 bit LSB, Intel 80386, version 1 (SYSV), collegate dinamicamente (uses shared libs), per GNU / Linux 2.6.18, spogliato
vi prego di aiutarmi per quanto riguarda questo??
Grazie per questo bel post che, mi è molto di aiuto
Sto eseguire correttamente questi comandi e script su CentOS 5x
ma il problema è su CentOS 6.2
Rispondi a questo commento
25 Maggio 2012 alle 00:37
Sto diventando un
. / Test.sh: è scaduto!
Contattare il fornitore
Tutte le idee?
Rispondi a questo commento