Www.tobuku.com MEMBUKA ENKRIPSI STORED STORED PROCEDURE Maret 2006 Oleh: Feri Djuandi Tingkat: √ Pemula Menengah Pendahuluan Stored procedure pada database Microsoft SQL Server adalah sebuah program yang ditulis dalam bahasa Transact SQL (T-SQL) SQL) dan disimpan sebagai sebuah objek di dalam database. Stored procedure bisa berbentuk sebuah perintah SQL SELECT sederhana, hingga serangkaian baris-baris is perintah INSERT, UPDATE, DELETE, penggunaan variabel-variabel, variabel formula/ekspresi, iterasi, kondisi hingga pemanggilan stored procedure lainnya. Pada stored procedure yang kompleks, panjang programnya bisa mencapai ratusan baris. Pembuatan stored procedure e untuk menulis program adalah sebuah cara yang sangat efektif karena program ini akan dijalankan dalam lingkup database dimana eksekusinya relatif lebih cepat daripada program serupa yang dijalankan pada sisi aplikasi.
Jan 14, 2015 Latihan Soal UAS Logika Dan Algoritma Semester 01. La tihan UAS Logika Algoritma Semester 1 Slamat malam sahabat bloger dan pembaca lainnya khususnya teman-teman dari BSI Purwokerto, malam ini saya mau share soal-soal UAS mata pelajaran Logika dan Algoritma, mungkin ini bisa membantu belajar kita untuk persiapan UAS. Jan 23, 2014 khususnya buat annak BSI nihh. Ane punya soal2 UAS LOGIKA DAN ALGORITMA. Soal ini di ambil pas ane uas bulan januari 2014. Langsung ajah nih di baca? Buat belajar. Latihan soal PTIK BSI. Diberdayakan oleh Blogger. Get this widget [get this widget].
Pada lingkungan clientserver, stored d procedure adalah sesuatu yang umum diterapkan. Pembuatan stored procedure pada database SQL Server bisa dilakukan pada aplikasi administrasi seperti SQL Enterprise Manager dan SQL Query Analyzer. Karena stored procedure adalah sebuah program, tidak ada cara lain kecuali Anda harus mengetik sendiri program itu baris demi baris. Tidak ada cara “click “ & drag” seperti saat Anda membuat program pada Visual Basic. Namun hal itu tidak menjadi masalah. Untuk seorang programer yang berpengalaman, mengetik baris-baris baris perintah T-SQL SQL bukanlah beban yang berat.
Untuk tujuan tertentu, seorang programer dapat mengenkrip sebuah stored procedure - misalnya untuk melindungi kode programnya supaya tidak bisa dibaca oleh orang lain. Hal ini dilakukannya saat pembuatan/pengubahan pembuatan/pengubahan stored procedure tersebut, dengan perintah: CREATE PROCEDURE Hal yang sama jika Anda hendak melakukannya pada Query Analyzer: An EXEC sphelptext encryptedproc The object comments have been encrypted. Jika Anda mengenkrip sebuah stored procedure, maka kode program di dalamnya tidak bisa dibaca lagi, bahkan oleh administrator sistem (SA). Tidak ada cara untuk mendekripnya kembali, ke sehingga Anda sangat dianjurkan untuk menyimpan kode programnya pada tempat lain SQL-FD-06002 – MEMBUKA ENKRIPSI STORED PROCEDURE 1 Mahir www.tobuku.com (misalnya berbentuk file teks). Walaupun tidak ada cara untuk mendekripnya kembali menggunakan cara normal, sesungguhnya stored procedure yang telah dienkrip sungguh-sungguh bisa dibaca kembali teks aslinya.
Hal ini memang tidak diketahui oleh banyak orang, namun kelemahan ini sudah terjadi pada SQL Server 7.0 dan masih terjadi pada SQL Server 2000 (kemungkinan besar celah keamanan ini sudah diperbaiki pada SQL Server 2005 dan setelahnya). Enkripsi stored procedure ini bisa diakali dengan cara yang cukup sederhana.
Tidak dengan kalkulasi matematika yang rumit, tidak dengan permutasi yang bolak-balik, tidak dengan iterasi yang berulang-ulang, tapi cukup dengan sebuah operasi logika exclusive-or (XOR). Algoritma Dekripsi Logika enkripsi stored procedure SQL Server bisa dijelaskan sebagai berikut. Andaikan kita memiliki sebuah teks bernama “a”. Kemudian fungsi enkripsi SQL Server kita namakan E(x). Maka jika teks “a” dienkrip, akan dihasilkan sebuah hasil enkripsi yang kita sebut saja “a`”. A` = E(a) Andaikan kita memiliki sebuah teks lain yang bernama “b`”. Teks ini adalah hasil enkipsi dan kita tidak mengetahui teks aslinya, sehingga tujuan kita saat ini adalah untuk memecahkan kode tersebut.
Dengan menggunakan “a” (yang diketahui teks aslinya) dan “a`” maka teks asli “b“ bisa diketahui. Hal pertama yang harus dilakukan adalah mendapatkan nilai-nilai unicode dari karakter-karakter teks “a”, “a`” dan “b`”. Nilai-nilai unicode dari sebuah karakter bisa diperoleh dengan mudah menggunakan fungsi UNICODE.
Contoh: SELECT UNICODE(′a′) -97 (1 row(s) affected) Andaikan teks “a” terdiri dari beberapa karakter: a0 a1 a2 a3 a4 a5 a6 an Ua6 Uan Maka nilai-nilai unicode dari rangkaian karakter diatas adalah: Ua0 Ua1 Ua2 Ua3 Ua4 Ua5 Demikian pula untuk “a`” dan “b`”, rangkaian nilai-nilai unicode-nya adalah: Ua`0 Ua`1 Ua`2 Ua`3 Ua`4 Ua`5 Ua`6 Ua`n Ub`0 Ub`1 Ub`2 Ub`3 Ub`4 Ub`5 Ub`6 Ub`n Sekarang adalah saatnya. Nilai unicode karakter-karakter “b” bisa diperoleh dengan melakukan operasi XOR yang melibatkan pasangan-pasangan nilai unicode karakter-karakter “a”, “a`” dan “b`”. Ub = Ua Ua` Ub` Keterangan: = simbol operasi XOR SQL-FD-06002 – MEMBUKA ENKRIPSI STORED PROCEDURE 2 www.tobuku.com Ua0 Ua1 Ua2 Ua3 Ua4 Ua5 Ua6 Uan Ua`0 Ua`1 Ua`2 Ua`3 Ua`4 Ua`5 Ua`6 Ua`n Ub`0 Ub`1 Ub`2 Ub`3 Ub`4 Ub`5 Ub`6 Ub`n Ub0 Ub1 Ub2 Ub3 Ub4 Ub5 Ub6 Ubn Akhirnya, untuk mendapatkan karakter-karakter b0, b1, b2 bn kita bisa menggunakan fungsi NCHAR. Contoh: SELECT NCHAR(97) -a (1 row(s) affected) Dengan menggabung karakter-karakter b0, b1, b2 bn, kita akan mendapatkan teks “b” yang asli. Pada SQL Server, operator XOR dinyakan dengan karakter “^”. Contoh: a ^ b ^ c.
Hasil operasi XOR tidak dipengaruhi urutan nilai-nilainya. Sebagai contoh, a ^ b ^ c; b ^ c ^ a; atau a ^ c ^ b akan memberikan hasil yang sama.
Algoritma di atas adalah rahasia dekripsi stored procedure SQL Server. Pada bagian berikutnya akan dijelaskan bagaimana teknik ini diterapkan untuk mendekrip sebuah stored procedure yang terenkrip. SQL-FD-06002 – MEMBUKA ENKRIPSI STORED PROCEDURE 3 www.tobuku.com Implementasi Untuk bahan latihan, kita akan membuat sebuah stored procedure kemudian mengenkripnya dan mendapatkan kembali teks asli kode programnya.
Silakan logon ke database SQL Server dan buat stored procedure bernama encryptedproc dibawah ini. If exists (select. from dbo.sysobjects where id = objectid(N'dbo.encryptedproc') N'IsProcedure') = 1) DROP PROCEDURE dbo.encryptedproc GO CREATE PROCEDURE encryptedproc AS PRINT 'I encrypted this procedure and forgot to check the source into cvs!' PRINT 'Now I don't work here any more and you can't find me!' And OBJECTPROPERTY(id, GO Skrip di atas bisa diperoleh dari file example1.sql yang disertakan bersama dokumen ini. Perhatikan bahwa stored procedure ini belum dienkrip. SQL Server menyimpan kode program dari stored procedure di dalam table sistem yang bernama syscomments.
Dengan menjalan perintah SELECT terhadap table ini, teks stored procedure tersebut bisa diperoleh. SELECT colid,text FROM syscomments WHERE id = objectid('encryptedproc') colid text - -1 CREATE PROCEDURE encryptedproc AS PRINT 'I encrypted this procedure and forgot to check the source into cvs!'
PRINT 'Now I don't work here any more and you can't find me!' (1 row(s) affected) SQL-FD-06002 – MEMBUKA ENKRIPSI STORED PROCEDURE 4 www.tobuku.com Query di atas menghasilkan sebaris record. Pada stored procedure yang cukup panjang, teksnya tidak akan cukup disimpan dalam sebuah baris sehingga ia akan dipecah dan disimpan dalam beberapa baris pada table syscomments. Sekarang kita akan memodifikasi stored procedure tadi dengan menambahkan beberapa teks yang panjang agar Anda bisa melihat bagaimana ia akan disimpan.
If exists (select. from dbo.sysobjects where id = objectid(N'dbo.encryptedproc') and OBJECTPROPERTY(id, N'IsProcedure') = 1) DROP PROCEDURE dbo.encryptedproc GO CREATE PROCEDURE encryptedproc AS -Chapter I. Down the Rabbit-Hole.
A.Membuat program.b. Membuat Algoritma c. Membeli komputer d. Sebuah prosedur langkah demi langkah yang pasti untuk menyelesaikan sebuah masalah disebut: a. Pseudocode yang digunakan pada penulisan algoritma dapat berupa: a.
Bahasa Inggris b. Bahasa Puitis c. Bahasa pemrograman.d.
Sembarang bahasa asal terstruktur 4. Pada saat pembuatan program komputer, algoritma dibuat:.a. Sebelum pembuatan program b. Pada saat program dibuat c.
Sesudah pembuatan program d. Pada saat verifikasi program 5. Tahapan dalam menyelesaikan suatu masalah adalah: a. Masalah – Pseudocode – Flowchart – Program – Eksekusi – Hasil b. Masalah – Algoritma – Flowchart – Program – Eksekusi – Hasil c. Masalah – Model – Algoritma – Eksekusi – Hasil.d.
Masalah – Model – Algoritma – Program – Eksekusi– Hasil 6. Diketahui bahwa kantong P kosong, kantong Q berisi 10 buah kelereng dan kantong R berisi 15 kelereng. Apabila yang terbawa hanya sebuah kantong dan dikatakan BUKAN Kantong P yang terbawa, maka jumlah kelereng yang terbawa adalah: a.10 b. 15.c.10 atau 15 d. Diberikan algoritma: Apabila warna merah maka jadi hijau. Apabila warna hijau maka jadi putih, selain warna merah dan hijau maka jadi ungu.
Jika kondisi input warna adalah hitam, maka warna jadi: a. Instruksi P=Q akan mengakibatkan nilai P = nilai Q, dan nilai Q menjadi: a. Menjadi Sembarang Nilai b. Menjadi hampa.c. Apabila a=5, b = 10, maka jika diberikan instruksi a=b; b=a akan mengakibatkan: a. A=10, b=0.d. A=10, b=10 10.
Diberikan algoritma P=10; P=P+5; Q=P. Nilai P dan Q masing-masing adalah: a. 10 dan 15 11. Type data yang hanya mengenal kondisi True atau False pada Pascal programming, adalah: a. Character 12. Dalam bahasa Pascal terdapat suatu tipe data yang nilainya tidak boleh memiliki nilai desimal, yaitu: a.
Character 13. Program Pascal dirancang pertama kali oleh: a. Al Khawarizmi b.Blaise Pascal.c. Niklaus Wirth d. Fungi standard yang digunakan untuk mengetahui nilai pendahulu dari suatu variabel disebut a.
Pada Tipe data Boolean, berlaku operator-operator: a. AND, OR, NOT c. True, False d. Simbol flowchart yang digunakan sebagai awal dan akhir suatu proses adalah. Preparation c. Apabila terjadi dua kondisi (benar atau salah), pada pembuatan flowchart menggunakan simbol. Struktur pernyataan yang BUKAN berupa perulangan (looping) adalah: a.
Repeat Until.d. Caseand(x) 22. Suatu proses pengulangan kembali alur kerja disebut a. Branching.b. Diberikan penggalan algoritma: while (x7) do x=x-1; write(x) Apabila nilai awal x adalah 9, maka nilai yang ditampilkan berturut-turut adalah a. Diberikan penggalan algoritma: repeat write (x); x=x-1 until x.