Cara Sederhana Encrypt Bash Script pada Linux Menggunakan SHC

Posted on

Ilustrasi Enkripsi

Beberapa kali saya buat script bash dan menanyakan, bagaimana sih cara encrypt script yang saya buat agar tidak dapat dibaca oleh orang lain. Karena penasaran saya coba searching beberapa artikel dari mbah Google dan ketemu yang dinamakan SHC.

SHC ini semacam shell script compiler yang membuat script bash hanya bisa dibaca oleh linux dan tidak bisa dibaca oleh manusia biasa. Sebenarnya sih bisa cuma huruf dan angkanya aneh-aneh gimana bacanya.,.haha

Nah sekarang gimana cara install dan menggunakan SHC, kurang lebih seperti ini:

1. Download & install shc

Download SHC dan install seperti ini:

apt-get install build-essential -y
wget -c https://github.com/neurobin/shc/archive/4.0.2.tar.gz
tar xzvf 4.0.2.tar.gz 
cd shc-4.0.2/
./configure 
make
make install

Verifikasi hasil instalasi SHC dengan perintah:

shc -v
shc parse(-f): No source file specified
shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-o outfile] [-rvDSUHCABhs] -f script

2. Buat Script Sederhana

Kita buat script sederhana untuk diencrypt nantinya menggunakan shc, buat file random.sh seperti ini:

# vi random.sh
#!/bin/bash

echo -n "How many random numbers do you want to generate? "
read max

for (( start = 1; start <= $max; start++ ))
do
  echo -e $RANDOM
done

Buat hak akses eksekusi menggunakan chmod seperti ini:

# chmod +x random.sh

Eksekusi file random.sh seperti berikut:

# ./random.sh
How many random numbers do you want to generate? 3
25800
8219
26078

3. Uji coba encrypt random.sh menggunakan SHC

Nah sekarang tahap uji coba encrypt file random.sh yang tadi sudah kita buat seperti ini:

# shc -f random.sh

Ini akan membuat dua file seperti ini:

# ls -l random.sh*
-rwxr-xr-x 1 root root   153 Jun 28 08:31 random.sh
-rwxrwxr-x 1 root root 11400 Jun 28 08:39 random.sh.x
-rw-r--r-- 1 root root 16195 Jun 28 08:39 random.sh.x.c

Catatan:

  • random.sh : script yang tidak diencrypt (script asli)
  • random.sh.x : script yang berhasil diencypt dalam binary format
  • random.sh.x.c : source code dalam bahasa C untuk script random.sh dan dapat membuat file random.sh.x ketika dicompile menggunakan file ini.
# file random.sh
random.sh: Bourne-Again shell script, ASCII text executable

# file random.sh.x
random.sh.x: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 2.6.32, BuildID[sha1]=547f5ce39e587d30967cb9337ec23155b1419bf5, stripped

# file random.sh.x.c 
random.sh.x.c: C source, ASCII text

Jika dicek kurang lebih seperti bila menggunakan cat:

# cat random.sh.x
ELF>`
     @@H%@8	@@@@@@?88@8@@@DD ``X ((`(`?TT@T@DDP?td??@?@||Q?tdR?td``??/lib64/ld-linux-x86-64.so.2GNU GNUT\?X}0?|?3~?1U?A??0?@ĉ?ݣkĹ?@9??a>S-Z?rLy??? ?(???
                                                                                                                                                            ?E??! $?! $? $?@$libc.so.6exitsprintf__isoc99_sscanftime__stack_chk_failgetpidstrdupcallocstrlenmemset__errno_locationmemcmpputenvmemcpymallocgetenvstderrexecvpfwritefprintfatollstrerror__libc_start_main__environ__xstat__gmon_start__GLIBC_2.7GLIBC_2.14 $`$` `  `( `0 `8 `@ `H `P X `	` `
h `
   p `
      x `? `? `? `? `? `? `? `? `? `? `H?H?E H??t?H???52 ?%4 @?%2 h??????%* h??????%" h??????% h?????% h?????%
 h?????% h?????%? h?p????%? ?`????%? h	?P????%? h
?@????%? h
          ?0????%? h
?????%? h?????%? h??????%? h??????%? h??????%? h??????%? h?????%? h?????%? h?????%? h?????%? f?1?I??^H??H???PTI?? @H???@H???@?????fD?$`UH-$`H??H??vH??t]?$`??f?]?@f.??$`UH??$`H??H??H??H???H?H??t?H??t
                                                                                                                                                                                                      ]?$`??]?fD?=1 uUH???n???]? ??@? `H??u??H??t?UH????]?z???UH??? ?? ?? ?? ?? ?? ???? H???`$`?? ???? ?? ??u̐]?UH??H?}?u?H?E?H?E???? ??H???`$`?E??{ ?E?Јo ?f ????}??Hc?H?E?H???K ЈC ?: ???2 ??H???`$`Hc???`$`? ??H??U???`$`?? ???? ?? ???P???H?E??m??}??7????]?UH??H?}?u?H?E?H?E???? ???? ?? ??H???`$`?E??? ?E?Јz ?r ???i ??H???`$`Hc???`$`?M ??H??U???`$`?6 ??H???`$`E?H?E???E?H???`$`1?H?E??H?E??m??}??F????]?UH??H??@H??????dH?%(H?E?1?H??????H??????H??H????y
??????H??`??????H???d???H??????H??h???H??????H??`???H??????H?E?????????|??????????E?H?????H?E?H??(???H?E?H??8???H?E?H??`?????H???u????H?M?dH3
                                                                                                                                             %(t???????UH??H?}?H?u??H?EH?}?t/H?E?H?H??t#H?E?H?H;E?u??H?E?HH?E?H?H?EH?}?t
            H?E?H?H??uِ]?UH??H??P??????dH?%(H?E?1??$???H?H???????l?????@??@H)?H?Љƿ?@??????!`????H??????H??????H??????H???Y???H??????H???????X@H?Ǹ????H??????H???t???H??????H??????H????????????H??????uVH??????H????????????Hc?H?????? ??u?7!`???????t
?7!`?m??B!`?
            ??????|!`???????>"`???????>"`???????S"`???????S"`?>"`?v?????t
?>"`????????H?E?H?}?u
 ??t;?????H?E?H?}?u?H???|!`H???g????N?
??H?U?H?EؾD!`H?Ǹ????H?E?H?E??E??EЍP?U?H?H??H?E?H?H?E?H?H??}?t,??
                                                                 ??t!?EЍP?U?H?H??H?E?H?H?B!`?i
                                                                                               ??t!?EЍP?U?H?H??H?E?H?H?V!`?EЍP?U?H?H??H?E?H?H?E?H??? ??t!?EЍP?U?H?H??H?E?H?H?$`?}?~?E????E??;?EЍP?U?H?H??H?E?H?
????7!`H??H[]?UH??ATSH???}?H?u?H?E?H?H?U??E?H?։?????H?H?E?H?H?H??t
 I??M?ྜ@H?Ǹ??????H??[A\]?DAWAVA??AUATL?%N UH?-N SI??I??L)?H?H???????H??t 1??L??L??D??A??H??H9?u?H?[]A\A]A^A_Ðf.???f.?@H??H???????H?H??x%lx=%lu %d%lu %d%c_E: neither argv[0] nor $_ works.: %s%s%s: %s
|(??????????????
???????0????P????p??????????????G?????? x???h?????zRx
                                                    ???*zRx
                                                          $X????FJ
W                                                                 ??;*3$"D????\A?C
??????A?C
??????A?C
?k????A?C
Z8???_A?C
?w????A?C
B???A?C
E?I??SA?C
G???G????A?C
   Dt????eB?B?E ?B(?H0?H8?M@r8A0A(B BB???????0
                                              @
                                               @
@???o?@?@?@                                     ?	@

 `(?@8H	???o?@???o???o?@(`?	@?	@
@
@&
@6
@F
@V
@f
@v
@?
@?
@?
@?
@?
@?
@?
@?
@
 @
  @&
    @6
      @F
zӅ?&?m?>?T?u?W\j??H?
/c???i????!
PN.	?!?͚6|?8??i{H&u???nu
                           x?CT?
                                
                                                                                                                                      ?@?F?@?N???o?@?:[???o?@?j8@8tB?@?~?	@?	y?	@?	??P
                                                                                                                                                                                                           @P
?`
  @`
    ?
     ?@@@	?P@P??@?|?(@? ?(`(?? `?? `? 5  $`$H ?0$5J$?

4. Uji Coba Script yang sudah diencypt

Tahap terakhir ujicoba script yang sudah diencypt untuk memastikan script tersebut bisa dijalankan dengan normal, seperti ini:

# ./random.sh.x
How many random numbers do you want to generate? 3
19058
4336
3815

Jika OK seperti diatas, berarti kita telah sukses melakukan enkripsi script yang kita buat. Hal ini juga bisa menjaga pembajakan script yang kita buat terhadap pihak lain yang ingin menggunakannya.

Sampai sini sudah mengerti ya guys? Kalau belum, yuk baca lagi dari awal hehe..

See you in next article ~~~

Credit: www.thegeekstuff.com

Gravatar Image
Seorang warga negara Indonesia biasa. Pengguna MAC dan develop server Ubuntu & CentOS. Contact : admin [at] nugi.biz

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.