Assalamu alaikum wr...wb.
Hallo
semuanya...
Sekarang
kita ketemu lagi untuk belajar linux, kali ini kita tidak akan membahas lagi
tentang terminal linux, shell scripting maupun Arimathmatic compararisons,
karena saya yakin teman-teman semua sudah pada bisa semua. Sekarang
kita akan belajar sesuatu yg lebih keren sedikit dari pada hanya sekedar
membuat program untuk menampilkan bilangan prima, tapi kali ini kita akan
belajar membuat sebuah virus dan memindahkan file selain extensinya doc dengan
menggunakan bash.
Namun
sebelum kita membuat virus dan memindahkan file selain extensi doc kita juga
harus terlebih dahulu apa-apa saja yg harus di lakukan sebelum kita membuatnya.
Nah kali ini saya juga akan membahas tentang proses dan daemon, karena ini nanti bakal ada
hubungannya dengan program yg akan kita buat.
Proses
Proses
adalah keadaan ketika sebuah program sedang di eksekusi. Sebuah proses dibuat
melalui system call create-process yang membentuk proses turunan ( child
process) yang dilakukan oleh proses induk ( parent process). Proses turunan
tersebut juga mampu membuat proses baru sehingga semua proses ini pada akhirnya
membentuk pohon proses.
Pengelolaan Proses
Pengelolaan Proses
Proses
perlu dikelola karena dalam sebuah proses membutuhkan beberapa sumber daya
untuk menyelesaikan tugasnya. Sumber daya tersebut dapat berupa CPU time,
memori, berkas-berkas, dan perangkat-perangkat I/O. Sistem operasi juga bertanggung
jawab atas aktivitas-aktivitas yang berkaitan dengan managemen proses seperti:
• Pembuatan dan penghapusan proses
pengguna dan sistem proses.
• Menunda atau melanjutkan proses.
• Menyediakan mekanisme untuk proses sinkronisasi.
• Menyediakan mekanisme untuk proses komunikasi.
• Menyediakan mekanisme untuk penanganan deadlock.
• Menunda atau melanjutkan proses.
• Menyediakan mekanisme untuk proses sinkronisasi.
• Menyediakan mekanisme untuk proses komunikasi.
• Menyediakan mekanisme untuk penanganan deadlock.
Daemon
Daemon adalah sebuah proses yang bekerja
pada background karena proses ini tidak memiliki terminal pengontrol. Daemon
adalah sebuah proses yang didesain supaya proses tersebut tidak mendapatkan
intervensi dari user. Daemon biasanya bekerja dalam jangka waktu yang sangat
lama dan bertugas menerima request dan menjalankan responsnya. Adapun hal-hal
yang membedakan daemon dengan proses lainnya adalah: daemon tidak memiliki
parent proses ID, daemon tidak memiliki pengontrol baik itu STDOUT, STDIN,
maupun STDERR, dan daemon berjalan dalam previlege super user.
Cara Membuat Daemon
Sebelum
kita membuat daemon kita harus terlebih dahulu apa-apa saja proses yg di
perlukan untuk membuat daemon tersebut. Ada 6 proses untuk membuat daemon yaitu
sebagai berikut :
1. Fork parent
process dan penghentian parent proses
2. Mengubah
mode file menggunakan UMASK(0)
3. Membuat
Unique sesion ID (SID)
4. Mengubah
directory kerja
5. Menutup standar
I/O desriptor
6. Membuat
loop utama(inti kerja dari daemon)
Fork Parent Proses Dan Pengehentian Parent Proses
Yang pertama kali kita harus lakukan
adalah melakukan forking gunanya itu nanti untuk membuat proses yang baru
kemudian mematikan parent prosesnya. Proses induk yang mati nanti akan membuat
sytem mengira kalau proses telah selesai sehingga akan kembali ke terminal
user. Dari langkah tersebut kita akan mendapatkan sebuah proses anak yang
melanjutkan program setelah induknya mati, sehingga kita mendapatkan sebuah
proses yang hampir bekerja pada backround.
pid_t,pid;
pid=fork();
if(pid<0)
{
exit(EXIT_FAILURE);
}
if(pid<0)
{
exit(EXIT_SUCCESS);
}
Jika pembuatan prosesnya berhasil maka parent prosesnya akan langsung di
matikan. Selanjutnya kita mengubah mode file menggunakan umask agar mendapatkan akses penuh dari file yang di
buat daemon.
Mengubah Mode File Menggunakan UMASK(0)
Untuk menuliskan beberapa file (termasuk
logs) yang dibuat oleh daemon, mode file harus di ubah terlebih dahulu untuk
memastikan bahwa file tersebut dapat ditulis dan dibaca secara benar. Pengubahan
mode file menggunakan implementasi umask(). Umask(0) berfungsi untuk
mendapatkan akses penuh dari file yang di buat daemon. Syntaxnya sbb:
umask(0)
Membuat Unique sesion ID (SID)
Proses
anak atau sering disebut dengan child proses harus memiliki unik SID dari
kernel untuk dapat beroperasi. Sebaliknya, child proses menjadi Orphan proses
pada system. Tipe pid_t yang di deklarasikan pada bagian sebelumnya, juga di
gunakan untuk membuat SID baru untuk proses anak. Pembuatan SID baru
menggunakan implementasi setsid(). Fungsi setsid() memiliki return tipe yang
sama seperti fork().
sid=setsid();
if(sid<0)
{
exit(EXIT_SUCCESS);
}
Mengubah directory kerja
Setelah mengubah unique SID kita juga
harus mengubah direktory kerja yang aktif gunanya itu untuk menuju kesuatu
tempat yang telah pasti akan selalu ada. Pengubahan tempat direktori kerja
dapat dilakukan dengan implementasi fungsi chdir().
if((chdir(“/”)<0)
{
exit(EXIT_FAILURE);
}
Menutup standar I/O descriptor
Kemudian setelah semua
proses di lakukan , kita juga harus melakukan proses yang satu ini yaitu
menutup standar I/O descriptornya (STDIN, STDOUT, STDERR). Karena daemon tidak
perlu menggunakan kendali terminal, file descriptor dapat berulang dan
berpotensi memiliki bahaya dalam hal keamanan. Untuk mengatasi hal tersebut
maka digunakan implemtasi fungsi close().
close(STDIN_FILENO)
close(STDOUT_FILENO)
close(STDERR_FILENO)
Membuat loop utama(inti kerja dari daemon)
Nah
ini merupakan proses yang sangat penting dalam membuat daemon, yaitu membuat
inti kerja dari daemon (loop utama). Karen daemon berkerja dalam jangka waktu
tertentu ,sehingga di perlukan sebuah looping. Misalnya daemonnya akan berkerja
setiap 10 detik sekali maka kita harus mendeklarasikannya dengan cara sebagai
berikut.
while(1)
{
sleep(10); //daemonnya akan bekerja
setiap 10 detik
}
exit(EXIT_SUCCESS);
sekarang kita semua sudah
tahu proses-proses yang dibutuhkan untuk membuat daemon, untuk implementasi
daemonnya itu kita harus menggabungkan semua proses yang diatas agar menjadi
sebuah daemon;
#include<sys/types.h>
#include<sys/stat.h>
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<errno.h>
#include<unistd.h>
#include<syslog.h>
#include<string.h>
int main(void)
{
pid_t,pid;
pid=fork();
if(pid<0)
{
exit(EXIT_FAILURE);
}
if(pid>0)
{
exit(EXIT_SUCCESS);
}
umask(0);
sid=setsid();
if(sid<0)
{
exit(EXIT_FAILURE);
}
if((chdir(“/”)<0)
{
exit(EXIT_FAILURE);
}
close(STDIN_FILENO)
close(STDOUT_FILENO)
close(STDERR_FILENO)
while(1)
{
sleep(10);
}
exit(EXIT_SUCCESS);
}
Nah sekarang kita sudah tahu semua bagaimana cara membuat daemon dan apa-apa saja proses yg dibutuhkan untuk membuat daemon itu. Karena daemon itu bekerja pada background dan prosesnya ini tidak memiliki terminal pengontrol maka kita bisa mengembangkan daemon itu menjadi sebuah virus sederhana hanya cukup dengan mengganti proses loopingnya.
Nah sekarang kita sudah tahu semua bagaimana cara membuat daemon dan apa-apa saja proses yg dibutuhkan untuk membuat daemon itu. Karena daemon itu bekerja pada background dan prosesnya ini tidak memiliki terminal pengontrol maka kita bisa mengembangkan daemon itu menjadi sebuah virus sederhana hanya cukup dengan mengganti proses loopingnya.
Membuat Virus
Nah sekarang kita sudah tahu semua bagaimana cara membuat daemon dan apa-apa saja proses yg dibutuhkan untuk membuat daemon itu. Karena daemon itu bekerja pada background dan prosesnya ini tidak memiliki terminal pengontrol maka kita bisa mengembangkan daemon itu menjadi sebuah virus sederhana hanya cukup dengan mengganti proses loopingnya.
Sekarang kita akan belajar bagaimana caranya membuat sebuah virus. Disini saya akan membuat sebuah virus ,dimana virus tersebut terdiri dari file aplikasi virus dan daftar quotes dalam sebuah file bernama virus.txt. Jika virus ini ada dalam komputer anda, maka akan muncul pop-up dari semua isi file virus.txt yang terpisah dengan tanda delimiter koma (,) satu persatu setiap 10 detik sekali.
Sekarang kita akan belajar bagaimana caranya membuat sebuah virus. Disini saya akan membuat sebuah virus ,dimana virus tersebut terdiri dari file aplikasi virus dan daftar quotes dalam sebuah file bernama virus.txt. Jika virus ini ada dalam komputer anda, maka akan muncul pop-up dari semua isi file virus.txt yang terpisah dengan tanda delimiter koma (,) satu persatu setiap 10 detik sekali.
Langkah-langkah yang harus kita
lakukan adalah sebagai berikut :
1. Pastikan di laptop
teman-teman sudah terinstall linux, disini saya menggunakan ubuntu.
2. Setelah itu teman-teman
membuka linuxnya dan membuka GEDIT atau bisa juga dengan menggunakan perintah
nano di terminal.
3. Setelah itu teman-teman
menuliskan scriptnya seperti di bawah ini
#include<sys/types.h>
#include<sys/stat.h>
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<errno.h>
#include<unistd.h>
#include<syslog.h>
#include<string.h>
int main(void)
{
pid_t,pid;
pid=fork();
if(pid<0)
{
exit(EXIT_FAILURE);
}
if(pid>0)
{
exit(EXIT_SUCCESS);
}
umask(0);
sid=setsid();
if(sid<0)
{
exit(EXIT_FAILURE);
}
//if((chdir(“/”)<0)
//{
//exit(EXIT_FAILURE);
//}
//close(STDIN_FILENO)
//close(STDOUT_FILENO)
//close(STDERR_FILENO)
while(1)
{
FILE * load=fopen(“/home/rahmat/Modul2/virus.txt”,”r”);
char huruf;
char sting[100];
int i;
for(i=0; i<100; i++) string[i]=’\0’;
int count=0;
while(!feof(load))
{
fscanf(load, “%c”, &huruf);
if(huruf==’,’)
{
sleep(10)
char temp[]=”zenity –warning –text=’ ”;
strcat(temp,string);
strcat(temp,” ‘ ”);
system(tempt);
count=0;
for(i=0; i<100; i++) string[i]=’\0’;
}
else
{
String[count]=ptr;
Count++;
}
}
}
exit(EXIT_SUCCESS);
}
4. Kemudian save pogram teman-teman di direktori yang teman-teman2 inginkan. Disini
saya menyimpan di direktori Modul2
5. Lalu buka terminal dan ketikkan password teman2 jika misalnya teman2
loginnya sepagai root atau superuser.
6. Kemudian langsung menuju kedirektori tempat teman2 menyimpan file yg tdi
dengan menggunakan perintah cd . misalkan cd /home/rahmat/Modul2/
7. Setelah itu , kini saat nya kita untuk menjalankan pogramnya , yaitu dengan
cara gcc namafilemu.c –o ubahnamafilemu.o . gcc itu di gunakan untuk mengexecute
file.c agar bisa di jalankan di linux. Disini
saya mengganti nama filenya dengan gcc dae1.c -o virus.o
8. Kemudian execute program dengan mengetik ./namafilemu.o
lalu tekan enter, dan akan muncul tampilan seperti dibawah ini.
9. Nah program virus mu telah berhasil, sekarang satu hal lagi yang sangat
penting dan gak boleh kamu lupa lakukan yaitu membunuh virusmu atau menghentikannya
dengan cara kill [PID] virusmu atau langsung pkill[namafilemu.o]. Tetapi pertama yg harus kamu lakukan adalah
dengan menekan ps aux diterminal ps aux itu gunanya untuk
melihat dan menampilkan kegiatan user kelayar. Nah baru setelah kegiatan
usernya ditampilkan kamu bisa langsung mengkill virusnya.
Penjelasannya :
while(1)
{
//untuk membuka dan membaca file virus yang ada di direktori Modul2
FILE * load=fopen(“/home/rahmat/Modul2/virus.txt”,”r”);
//mendeklarasikan variabel huruf yg bertipe karakter
char huruf;
char sting[100];
int i;
//proses looping untuk mengosongkan isi stringnya
for(i=0; i<100; i++) string[i]=’\0’;
int count=0;
//selama dia tidak end of file maka terus di baca isi dari file virus.txt
while(!feof(load))
{
//mengambil isi dari file virus.txt setiap per karakter
fscanf(load, “%c”, &huruf);
//kondisi jika hurufnya sudah sampai di koma
if(huruf==’,’)
{
//virusnya akan berjalan setiap 10 detik
sleep(10)
//untuk menampilkan isi dari virusnya ke layar
char temp[]=”zenity –warning –text=’ ”;
//mengambil isi string kemudian di tempelkan di temp
strcat(temp,string);
//mengambil tanda ‘ kemudian di tempelkan di temp
agar fungsi zenitynya bisa di jalankan
strcat(temp,” ‘ ”);
//menjalankan fungsi zenity yg di temp
system(tempt);
count=0;
//proses looping untuk mengosongkan isi stringnya
for(i=0; i<100; i++) string[i]=’\0’;
}
else
{
String[count]=ptr;
Count++;
}
}
}
exit(EXIT_SUCCESS);
Kini teman-teman telah berhasil membuat sebuah virus yang berjalan
setiap 10 detik sekali. Selanjutnya kita akan belajar bagaimana caranya jika
didalam suatu folder misalnya nama folder itu word dan terdapat banyak jenis file yang extensi berbeda
misalnya extensinya .jp , .png, .txt ,. cdr, .doc dan lain2 di dalamnya . Namun kita hanya
ingin di folder word itu terdapat file yang berektensi .doc saja. sedangkang yg
selain extensi .doc di pindahkan ke folder yag lain misalnya nama foldernya campuran.
Memidahkan File Selain Extensi .Doc
Dengan Menggunakan Bash
Langkah-langkahnya juga sama dengan dengan caranya membuat virus diatas
namun yg membedakannya hanya saja di looping daemonnya saja. Langkah-langkahnya
adalah sebagai berikut :
1.
Buka GEDIT atau dengan mengetikkan nano di
terminal.
2.
Lalu tuliskan scriptnya standar daemonnya
seperti diatas, hanya saja kali ini di proses looping nya yg berbeda yaitu
sebagai berikut.
#include<sys/types.h>
#include<sys/stat.h>
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<errno.h>
#include<unistd.h>
#include<syslog.h>
#include<string.h>
int main(void)
{
pid_t,pid;
pid=fork();
if(pid<0)
{
exit(EXIT_FAILURE);
}
if(pid>0)
{
exit(EXIT_SUCCESS);
}
umask(0);
sid=setsid();
if(sid<0)
{
exit(EXIT_FAILURE);
}
if((chdir(“/home/rahmat/Modul2”)<0)
{
exit(EXIT_FAILURE);
}
close(STDIN_FILENO)
close(STDOUT_FILENO)
close(STDERR_FILENO)
while(1)
{
//pindah kedirektori word
system(“cd /home/rahmat/Modul2/word”);
//setelah itu mencari nama file selain ektensi doc di direktori word lalu di pindahkan kedirektorinya campuran
system(“find
. –type f ! –name ‘*.doc’ –exec mv {} /home/rahmat/Modul2/campuran ‘;’”);
}
exit(EXIT_SUCCESS);
}
3.
Kemudian save script program kamu dan execute
program kamu dengan cara yang sama di atas yaitu dengan cara menekan gcc namafilemu.c –o ubahnamafilemu.o di
terminal, disini saya menganti nama filenya dengan gcc daemon3.c –o pindah.o
4.
Lalu jalankan filenya tdi dengan menuliskan ./pindah.o di terminal lalu tekan enter.
5.
Sekarang programnya sedang berjalan dan sudah
selesai. Sekarang cek direktori tujuan kamu tadi apakah sudah berpindah apa
belum.
6. Setelah itu bunuh atau hentikan proses daemonnya
dengan cara ketik ps aux di terminal. Lalu
tulis kill pid daemonnya, misalnya kill 2022 atau bisa langsung dengan
pkill namadaemonmu.
Gimana teman-teman kira-kira
sudah paham belum apa itu proses , daemon, cara mengexecute file.c di linux cara
memindahkan file selain extensi .doc dan cara membuat virus sederhana.
Terima kasih sudah mau mampir. semoga dapat
membantu. tunggu update an berikutnya…. :)
wassalamualaikum wr.wb