skip to main | skip to sidebar

Sunday 30 June 2019

Program Encrypt - Decrypt Script dengan Javascript

Pernahkan kalian melihat script Javascript atau program yang lain yang terenkripsi semisalnya \x64\x69\x73\x70\x6C\x61\x79 yang pastinya script tersebut tidak akan bisa dibaca secara langsung kecuali oleh komputer. Script atau kode tadi bisa disebut dengan Shellcode. Shellcode biasanya digunakan untuk membypass keamanan sebuah program dan program tidak akan berjalan sesuai fungsinya melainkan akan berjalan sesuai perintah yang ada di Shellcode.


Shellcode biasanya digunakan pada sebuah template website dan program hacking yang lain. Pada materi sebelumnya sudah dijelaskan tentang cara membuat sebuah konversi dari decimal ke hexadecimal, program itu akan digunakan untuk materi kali ini. Jika belum mencoba atau mengetahui programnya kalian bisa mengunjungi link berikut Program Konversi Dec - Hex.

Sebenarnya shellcode sama seperti text atau String pada umumnya. Karena Shellcode berasal dari character yang di ubah menjadi hexadecimal dan ditambahkan dengan "\x". Sebagai contoh :
- Huruf A jika dikonversi ke desimal memiliki nilai 65 jika dikonversi ke Hexa bernilai 41.
- Jadi Shellcode nya adalah \x41.

Program Encrypt - Decrypt sangatlah sederhana. Pertama kita akan membuat program untuk meng-Encrypt script. Buatlah sebuah file dengan nama latiahanEncDec.html lalu ketikan kode berikut.

<textarea id="source"></textarea>
<textarea id="result"></textarea>

<button onclick="scriptEnc()">Encrypt</button>
<button onclick="scriptDec()">Decrypt</button>

<script>
    // Bilangan Hexadecimal
    var bilHexa = "0123456789ABCDEF";
  
    // Bilangan Hexa digit pertama dan kedua
    var hexaDigit1 = 0, hexaDigit2 = 0;
  
    function hexa2dec(bilangan) {
        // Mengambil nilai dari bilangan hexa
        hexaDigit1 = bilangan.charCodeAt(0) - 55;
        hexaDigit2 = bilangan.charCodeAt(1) - 55;
      
        if(hexaDigit1 <= 2) hexaDigit1 += 7;
        if(hexaDigit2 <= 2) hexaDigit2 += 7;
      
        // Menghitung nilai dari hexa
        var nilaiKonversi = 0;
        nilaiKonversi += hexaDigit1 * 16;
        nilaiKonversi += hexaDigit2;
      
        return nilaiKonversi;
    }
  
    function dec2hexa(bilangan) {
        // Bilangan decimal dibagi dengan 16 dan mengamabil sisa bagi ( Mod - Modulo )
        hexaDigit1 = Math.floor(bilangan / 16);
        hexaDigit2 = bilangan % 16;
      
        // Mengambil bilangan dari nilai hexa
        var nilaiKonversi = "";
        nilaiKonversi += bilHexa.charAt(hexaDigit1);
        nilaiKonversi += bilHexa.charAt(hexaDigit2);
      
        return nilaiKonversi;
    }
  
</script>

- Atribut onclick pada tag button diatas digunakan untuk menjalankan fungsi atau program javascript ketika tombol di klik dengan mouse.

Fungsi diatas adalah fungsi dari program sebelumnya. Diatas tag script adalah kode untuk membuat sebuah tampilan UI di dalam HTML. Kita perlu UI karena Shellcode tidak bisa ditampilkan atau digunakan menjadi sebuah text / String secara langsung. Sekarang kita membuat fungsi untuk mengEncrypt sebuah Script.

function scriptEnc() {
        // Mengambil nilai atau text dari ID "Source" - textarea
        var data = document.getElementById("source").value;
        var hasilEnc = "";
       
        // MengEncrypt setiap Character pada String
        for(var i = 0; i < data.length; i++) {
            hasilEnc += "\\x" + dec2hexa( data.charCodeAt(i) );
        }
       
        // Menyimpan Nilai ke ID "Result" - textarea
        document.getElementById("result").value = hasilEnc;
}

- data.length, length digunakan untuk mengambil jumlah character atau huruf pada String.
- document.getElementById(), untuk mengambil sebuah object yang memiliki ID tertentu, object yang dimaksud adalah tag-tag HTML.

Selanjutnya membuat fungsi untuk menDecrypt script. Tulis kode berikut

function scriptDec() {
        // Mengambil nilai atau text dari ID "Source" - textarea
        var dataShell = document.getElementById("source").value;
        var data = dataShell.split("\\x");
        var hasilDec = "";
       
        // MengDecrypt setiap Shellcode pada String
        for(var i = 1; i < data.length; i++) {
            hasilDec += String.fromCharCode( hexa2dec(data[i]) );
        }
       
        // Menyimpan Nilai ke ID "Result" - textarea
        document.getElementById("result").value = hasilDec;
}

- Fungsi split digunakan untuk memisah sebuah String menjadi array berdasarkan key nya. String.split(key)
- String.fromCharCode() digunakan untuk merubah nilai Decimal menjadi character.

Kode program secara keseluruhan seperti ini

<textarea id="source"></textarea>
<textarea id="result"></textarea>

<button onclick="scriptEnc()">Encrypt</button>
<button onclick="scriptDec()">Decrypt</button>

<script>
    // Membuat variabel untuk di Encrypt
    var text1 = "Saya sedang makan";
   
    // Bilangan Hexadecimal
    var bilHexa = "0123456789ABCDEF";
   
    // Bilangan Hexa digit pertama dan kedua
    var hexaDigit1 = 0, hexaDigit2 = 0;
   
    function hexa2dec(bilangan) {
        // Mengambil nilai dari bilangan hexa
        hexaDigit1 = bilangan.charCodeAt(0) - 55;
        hexaDigit2 = bilangan.charCodeAt(1) - 55;
       
        if(hexaDigit1 <= 2) hexaDigit1 += 7;
        if(hexaDigit2 <= 2) hexaDigit2 += 7;
       
        // Menghitung nilai dari hexa
        var nilaiKonversi = 0;
        nilaiKonversi += hexaDigit1 * 16;
        nilaiKonversi += hexaDigit2;
       
        return nilaiKonversi;
    }
   
    function dec2hexa(bilangan) {
        // Bilangan decimal dibagi dengan 16 dan mengamabil sisa bagi ( Mod - Modulo )
        hexaDigit1 = Math.floor(bilangan / 16);
        hexaDigit2 = bilangan % 16;
       
        // Mengambil bilangan dari nilai hexa
        var nilaiKonversi = "";
        nilaiKonversi += bilHexa.charAt(hexaDigit1);
        nilaiKonversi += bilHexa.charAt(hexaDigit2);
       
        return nilaiKonversi;
    }
   
    function scriptEnc() {
        // Mengambil nilai atau text dari ID "Source" - textarea
        var data = document.getElementById("source").value;
        var hasilEnc = "";
       
        // MengEncrypt setiap Character pada String
        for(var i = 0; i < data.length; i++) {
            hasilEnc += "\\x" + dec2hexa( data.charCodeAt(i) );
        }
       
        // Menyimpan Nilai ke ID "Result" - textarea
        document.getElementById("result").value = hasilEnc;
    }
   
    function scriptDec() {
        // Mengambil nilai atau text dari ID "Source" - textarea
        var dataShell = document.getElementById("source").value;
        var data = dataShell.split("\\x");
        var hasilDec = "";
       
        // MengDecrypt setiap Shellcode pada String
        for(var i = 1; i < data.length; i++) {
            hasilDec += String.fromCharCode( hexa2dec(data[i]) );
        }
       
        // Menyimpan Nilai ke ID "Result" - textarea
        document.getElementById("result").value = hasilDec;
    }
   
</script>

Untuk penjelasan lebih jelas mengenai perintah seperti document.getElementById() dan split() bisa dipelajari di W3Schools. Jika ada yang masih belum dimengerti silahkan tulis di kolom komentar atau bisa hubungi kontak yang tertera.

0 comments:

Post a Comment