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