Bash script nasıl şifrelenir?
Eğer bash scriptinizi bazı nedenlerden dolayı şifrelemek istiyorsanız bunu SHC ile yapabilirsiniz. Scriptinizi SHC ile şifrelemek size temel bir koruma türü sağlar. Unutmayın ki SHC tarafından oluşturulmuş şifreli shell scripti normal kullanıcılar açısından okunabilir değiller lakin marifetli bir kullanıcı orijinal shell scriptini şifreli binary'den ayrıştırabilir. SHC, shell script compiler demek.
SHC'ı indirin ve aşağıda gösterildiği gibi kurun:
Kod:
[COLOR="white"]# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz
# tar xvfz shc-3.8.9.tgz
# cd shc-3.8.9
# make[/COLOR]
SHC'ın düzgünce kurulduğunu doğrulayın:
Kod:
[COLOR="white"]$ ./shc -v
shc parse(-f): No source file specified
shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script[/COLOR]
Deneme amaçlı, SHC'ı kullanarak şifrelemek istediğiniz örnek bir bash shell scripti oluşturun:
Kod:
[COLOR="white"]$ vi random.sh
#!/bin/bash
echo -n "Kaç tane rastgele sayı oluşturmak istersiniz? "
read max
for (( start = 1; start <= $max; start++ ))
do
echo -e $RANDOM
done
$ ./random.sh
Kaç tane rastgele sayı oluşturmak istersiniz? 3
54213
7542
465[/COLOR]
random.sh shell scriptini SHC kullanarak aşağıda gösterildiği gibi şifreleyin:
Kod:
[COLOR="white"]$ ./shc -f random.sh[/COLOR]
Bu, aşağıdaki gibi iki tane daha dosya oluşturacak:
Kod:
[COLOR="white"]$ ls -l random.sh*
-rwxrw-r--. 1 ramesh ramesh 149 Mar 27 01:09 random.sh
-rwx-wx--x. 1 ramesh ramesh 11752 Mar 27 01:12 random.sh.x
-rw-rw-r--. 1 ramesh ramesh 10174 Mar 27 01:12 random.sh.x.c[/COLOR]
random.sh = Orijinal, şifrelenmemiş shell scripti.
random.sh.x = Binary düzeninde şifrelenmiş shell scripti.
random.sh.x.c = random.sh dosyasının C kaynak kodudur. Bu C kaynak kodu, yukarıdaki şifreli random.sh.x dosyasını oluşturmak için derlendi. SHC ardındaki bütün mantık, yukarıdaki random.sh shell scriptini random.sh.x.c C programına dönüştürmekten ve bittabi bunu çalıştırılabilir random.sh.x dosyasını oluşturmak için derlemekten ibaret.
Kod:
[COLOR="white"]$ file random.sh
random.sh: Bourne-Again shell script text executable
$ file random.sh.x
random.sh.x: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux, stripped
$ file random.sh.x.c
random.sh.x.c: ASCII C program text[/COLOR]
Beklendiği gibi çalıştığından emin olmak için şifreli shell scriptini çalıştıralım:
Kod:
[COLOR="white"]$ ./random.sh.x
Kaç tane rastgele sayı oluşturmak istersiniz? 3
2189
76234
34678[/COLOR]
Binary'nin kendisinin, scripti çalıştırmaya münasip olması için shelle (random.sh'daki ilk satır, örneğin /bin/bash) bağlı olduğunu unutmayın.
SHC'ı kullanarak ayriyeten sona erme tarihini de belirleyebilirsiniz. Demem o ki, belirlediğiniz tarih sonrasında birisi shell scriptinizi açmaya çalıştığı zaman bir hata mesajı alacak.
Kod:
[COLOR="white"]$ ./shc -e 31/12/2018 -f random.sh[/COLOR]
Bu örnekte, birisi random.sh.x dosyasını 31 Aralık 2018'den sonra açmaya çalıştığında gösterilecek varsayılan hata mesajı aşağıdadır:
Kod:
[COLOR="white"]$ ./random.sh.x
./random.sh.x: has expired!
Please contact your provider[/COLOR]
Eğer kendi hata mesajınızı yazmak isterseniz de bunu -m ile aşağıdaki gibi yapabilirsiniz:
Kod:
[COLOR="white"]$ ./shc -e 31/12/2014 -m "Scriptin yeni versiyonu için [email protected]'a ulaşın." -f random.sh
$ ./random.sh.x
./random.sh.x: has expired!
Scriptin yeni versiyonu için [email protected]'a ulaşın.[/COLOR]
Moderatör tarafında düzenlendi: