Sunday, November 17, 2013

zamProx unknown version

Hello, 
This is zamprox, now i'll share this tool.
 


Mungkin terlalu lama disimpan jadi rongsokan, aku sendiri sudah tak memakainya. Dan mungkin sedang berbaik hati dan tidak sombong. Silakan saja ini didownload, maaf sekalian saya mau lihat seperti apa jadi owner sebuah link adf.ly. Semoga anda sekalian (jika ada) ikhlas dengan mengeklik link yang saya berikan.

Seandainya anda (pengguna linux) mau sedikit bereksperimen, ada tool alternatif lain yang jauh lebih keren dari ini. Hanya saja anda akan sering dihadapkan pada tantangan untuk sering menggunakan keyboard daripada mouse. Yah, semua kembali ke selera. Saya suka sesuatu maka sebenarnya sangat sulit merubahnya menjadi rasa yang lain (seperti itu mungkin).

Baik, bersiap-siaplah menerima link nya, saya menyadari banyaknya kekurangan di sini disebabkan minimnya pemahaman (curhat). Jika memang saat ini masih banyak kekurangan anggap saja kekurangan disebabkan oleh pembuatnya yang memang penuh dengan kekurangan.


Silakan... berikut link nya : http://adf.ly/iLov3U

  

Sunday, October 20, 2013

Script chatting sederhana

Program yang bisa digunakan untuk bertukar kabar :)

Langsung saja berikut kode nya :

index.php :
<html>
    <head><title>
            Modifikasi Ngrumpi
        </title>
        <script language="javascript" type="text/javascript">
            <!--
            /*
                        This Script Ripped From Many Source
                        I Just Use/Edit... :D
                        (MRSiregar)
             */

            // Trying To Connect To Mr.Gun Algorithm

            // Global Variable
            // Create Ajax Object For Http Request
            var http = ajaxFunction();
            // Detection If Name Is Set
            var isHasName = false;
            // Detection Last Message ID
            var lastnum = 0;
            // Timer
            var timer = 0;

            // Original Script http://www.tizag.com/ajaxTutorial/ajax-mysql-database.php
            // Browser Support Code
            function ajaxFunction(){
                var ajaxRequest;  // The variable that makes Ajax possible!
                try{
                    // Opera 8.0+, Firefox, Safari
                    ajaxRequest = new XMLHttpRequest();
                } catch (e){
                    // Internet Explorer Browsers
                    try{
                        ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
                    } catch (e) {
                        try{
                            ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e){
                            // Something went wrong
                            printErrMsg("ajaxFunction : " + e );
                            return false;
                        }
                    }
                }
                return ajaxRequest;
            }

            // Set Name
            function setterName(){
                if(isHasName){
                    document.getElementById("yourname").disabled = "";
                    isHasName = false;
                }else{
                    document.getElementById("yourname").disabled = "true";
                    isHasName = true;
                }
                updateMessages("update");
            }

            // Get User Name
            function getYourData(val){
                var result = "";
                try{
                    result = document.getElementById(val).value;
                }catch(e){
                    printErrMsg("getYourData : " + e );
                }
                return result;
            }

            // Write Messages To The Page
            function writeMsg(dataIn){
                var chat = "";               
                var data = "";
                try{
                    chat = document.getElementById("chat_area");
                }catch(e){
                    printErrMsg("writeMsg (chat_area): " + e );
                }
                try{
                    data = eval("(" + dataIn + ")");
                }catch(e){
                    printErrMsg("writeMsg (eval dataIn): " + e );
                }
                try{
                    var msgData = "";
                    for(i = 0; i < data.msg.length; i++){
                        if(data.msg[i].name == getYourData("yourname")){
                            warna = "<font color=\"blue\"> ";
                        }else if(data.msg[i].name == "Admin"){
                            warna = "<font color=\"brown\">";
                        }else{
                            warna = "<font color=\"red\">";   
                        }
                        msgData += warna + "[" + data.msg[i].name +"]"+ "</font> ";
                        msgData += "<font size=\"1\">(" + data.msg[i].thetime + ")</font> ";
                        msgData += " : " + data.msg[i].txtmsg + "<br>";
                        chat.innerHTML += msgData;
                        chat.scrollTop = chat.scrollHeight;
                        lastnum = data.msg[i].id;
                    }
                }catch(e){
                    printErrMsg("writeMsg : " + e );
                }
            }
           
            // Using POST Method To Send/Get Data
            // Get Data From User And Send It To Database
            // Response Will Be All Data Stored At Database
            // Original Script http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
            function postAndGetData(name, msg, op){
                var url = "save_data.php";
                var params = "lastnum=" + lastnum +"&name=" + name + "&msg=" + msg + "&op=" + op;
                try{
                    http.open("POST", url, true);
                    // Send the proper header information along with the request
                    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                    http.setRequestHeader("Content-length", params.length);
                    http.setRequestHeader("Connection", "close");
                    http.onreadystatechange = function() {//Call a function when the state changes.
                        if(http.readyState == 4 && http.status == 200) {
                            // Modified Line
                            writeMsg(http.responseText);
                        }
                    }
                }catch(e){
                    printErrMsg("postAndGetData : " + e );
                }
                http.send(params);
            }
           
            // Auto Update Page
            function updateMessages(op){
                var name = getYourData("yourname");
                if(op == "send"){
                    var msg = getYourData("yourmsg");
                    document.getElementById("yourmsg").value = "";
                }
                // Get Message Text And Write To Page
                postAndGetData(name, msg, op);
                if(op == "update"){
                    // Update Page Every Second
                    timer = setTimeout("updateMessages('update')", 1000);
                }
            }
           
            // Submit Handler
            function submitHandler(frm){
                if(frm.name == "nameFrm"){
                    setterName();
                }
                if(frm.name == "msgFrm"){
                    updateMessages("send");
                }
                return false;
            }
           
            // Debuging Mode On (MRSiregar)
            function printErrMsg(errText){
                try{
                    var errArea = document.getElementById("error_area");
                    errArea.innerHTML +=  errText + "<br>";
                }catch(e){
                    printErrMsg("printErrMsg : " + e);
                }
            }
            -->
        </script>
    </head>
    <body>
        <?php
        ?>
        <table border="0" height="300" width="500">
            <tr>
            <form method="post" name="nameFrm" onSubmit='return submitHandler(this)'>
                <td>
                    Name : <input type="text" name="yourname" id="yourname">
                </td>
                <td>
                    <input type="button" value="Login" id="LoginButton" onClick="setterName()"><p>
                </td>
            </form>
            </tr>
            <tr>
                <td colspan="2">
                    <div id="chat_area" style="height: 300px; width: 500px; overflow: auto; background-color: lightyellow; border: 1px solid #555555;"></div>
                </td>
            </tr>
            <tr>
            <form method="post" name="msgFrm" onSubmit='return submitHandler(this)'>
                <td>
                    Message : <input type="text" name="yourmsg"  id="yourmsg" size="50">
                </td>
                <td>
                    <input type="button" value="Send" onClick='updateMessages("send")'>
                </td>
            </form>
        </tr>
    </table>
    <table border="0" height="100" width="500">
        <tr>
            <td>
                Error Messages :
                <div id="error_area" style="height: 100px; overflow: auto; background-color: white; border: 1px solid #555555;">
                </div>
            </td>
        </tr>
    </table>
</body>
</html>

save_data.php :
   <?php

    mysql_connect("localhost", "root", "root");
    mysql_select_db("chat_db") or die("DB ERROR");

    @$name = $_REQUEST['name'];
    @$msg = $_REQUEST['msg'];
    @$op = $_REQUEST['op'];
    // WARNING
    date_default_timezone_set('UTC');
    $theTime = date("H:i");
    @$lastNum = $_REQUEST['lastnum'];

    $json = "{";
    if ($lastNum == 0) {
        $numlastNum = mysql_query("select num from tbl_chat order by num desc limit 1");
        $n = mysql_fetch_array($numlastNum);
        $no = $n['num'] + 1;
        $json .= '"msg":[ {';
        $json .= '"id":"' . $no . '",
            "name":"Admin",
            "txtmsg":"Selamat datang di kamar Ngrumpi",
            "thetime":"' . $theTime . '"
            }]';
        if(numlastNum == 0){
            $insert = mysql_query("insert into tbl_chat values(null,'Admin','$name bergabung dalam chat','$theTime')");
        }
    } else {
        if($op == "send"){  
            $insert = mysql_query("insert into tbl_chat values(null,'$name','$msg','$theTime')");
        }
        $query = mysql_query("select * from tbl_chat where num > $lastNum");
        $json .= '"msg":[ ';
        while ($x = mysql_fetch_array($query)) {
            $json .= '{';
            $json .= '"id":"' . $x['num'] . '",
                "name":"' . $x['name'] . '",
                "txtmsg":"' . $x['msg'] . '",
                "thetime":"' . $x['thetime'] . '"
                },';
        }
        $json = substr($json, 0, strlen($json) - 1);
        $json .= ']';
    }

    $json .= '}';
    echo $json;
    ?>

Tabel mysql (tbl_chat) :

+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| num     | int(4)       | NO   | PRI | NULL    | auto_increment |
| name    | varchar(20)  | NO   |     | NULL    |                |
| msg     | varchar(160) | NO   |     | NULL    |                |
| thetime | varchar(20)  | NO   |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+


Ini contoh chatting nya : 


Dan teringat pada lagu lama karena begitu gelapnya dunia tanpa informasi.


Wednesday, August 21, 2013

Bab 27 halaman 137

Kitab epos mahabarata, buku yang kudapatkan di gramedia beberapa hari yang lalu. Buku ini cukup membangkitkan rasa ingin tahuku tentang seperti apa kronologi perang paling dahsyat yang diceritakan pernah terjadi di muka bumi, yang sampai saat ini kebenarannya masih menjadi sebuah tanda tanya besar. Apakah pernah terjadi atau hanya sebuah cerita saja? Apakah cerita ini menggambarkan kejadian yang akan datang? Karena pernah juga mendapat bacaan yang mengarah ke sana, digambarkan perang antara kaum yang menjunjung tinggi nilai ketuhanan dan kaum yang gemar dengan teknologi maju yang menuhankan logika. Biarlah para ahli yang mencari tahu, dan pernah dapat info dengan mencari tahu sana sini terdapat beberapa bukti pecahan batu yang berumur ribuan tahun dan secara ilmu masa kini titik didih batu itu hanya terpenuhi oleh panas yang dihasilkan oleh nuklir. Lalu apakah jaman dahulu sudah ada nuklir? Entahlah...
 
Back to the book, 
Buku ini harganya 100 ribu rupiah, lumayan tebel dan sedikit berkesan tua dengan lembaran kertas buram pada setiap halamannya. Buku ini selalu menemani kesendirianku beberapa hari terakhir (curhat). Buku yang menceritakan budi pekerti manusia jaman dahulu melalui beberapa cerita. Cukup kaget dengan beberapa kemampuan tokoh yang digambarkan pada buku ini, tetapi sifat-sifat tokoh yang dimilikinya tetap sama seperti manusia biasa. Sifat bawaan menjadi karakter tersendiri setiap tokoh yang diceritakan di buku ini. Baru 136 halaman terbaca dan dapat sedikit gambaran tentang isi buku. Baru saja mengetahui bagaimana sengkuni mempermainkan yudhistira melaui sebuah permainan dadu. Dan dari sinilah kebencian bermula dan berakibat pada 14 tahun kemudian menurut ramalan.

Digambarkan banyak sekali orang sakti pada masa itu, mereka bisa saling kutuk dan meramalkan apa yang akan terjadi. Alangkah berbahayanya jika masa kini semua orang bisa melakukannya, mungkin saya lebih memilih dikutuk jadi kodok dan menunggu seorang putri yang bersedia mencium kemudian menjadi istriku saja. Tapi itu sulit sepertinya, karena jarang sekali orang di jaman maju ini melatih kemampuan seperti itu, yang menurut ilmu tao cakra lidahnya sudah terbuka (menjurus ke naruto dikit). Apa yang diucapkan dengan syarat tertentu akan benar-benar terjadi, tidak heran jika simbah-simbah jaman dulu bisa melakukannya, dan memang ada bukti nyatanya.

Oke, ke mana arah tulisan selanjutnya?
Arahnya adalah ada kalimat yang menarik di dalam buku ini :

"Tidak ada orang bijak yang bisa terus-menerus melakukan kebajikan seumur hidupnya. Demikian pula, tidak ada orang jahat yang selamanya berkubang dalam dosa. Hidup ini ibarat jaring laba-laba. Tidak ada orang yang sama sekali belum pernah berbuat kebajikan dan tidak ada orang yang belum pernah berbuat jahat. Setiap orang harus memikul akibat dari perbuatannya sendiri. Jangan menyerah pada kedukaan." -- Wiyasa



Yah, ... don't look back in anger :)

Thursday, August 8, 2013

Hari yang suci


Kadang kuberkata ala spammer yang mungkin mengotori hati,
Kadang kubertingkah ala flooder yang menghambat silaturahmi,
Kadang ku lepas kendali karena lemahnya pertahanan diri,
Tiada kuasa melawan malware dan virus hati yang menginfeksi,

Setelah sebulan mencoba kubuka tabir yang tersembunyi,
Menterjemahkan base64, rot13 dan berbagai jenis enkripsi,
Kini saatnya ku melakukan evaluasi diri,
Memohon maaf atas segala kesalahan yang pernah terjadi. 

Minal aidin wal faidzin, mohon maaf lahir dan batin.


Tuesday, July 23, 2013

I'm sorry, forgive me

You will understand me one day.




Lah duu~
Leh ah mo dee under wearr~

Sunday, July 14, 2013

PANDANGAN PERTAMA (KOPAS)

Itulah saat yang memisahkan aroma kehidupan dari kesadarannya.
Itulah percikan api pertama yang menyalakan wilayah-wilayah jiwa.
Itulah nada magis pertama yang dipetik dari dawai-dawai perak hati manusia.
Itulah saat sekilas yang menyampaikan pada telinga jiwa tentang risalah hari-hari
yang telah berlalu dan mengungkapkan karya kesadaran yang dilakukan
malam, menjadikan mata jernih melihat kenikmatan di dunia dan menjadikan
misteri-misteri keabadian di dunia ini hadir.

Itulah benih yang ditaburan oleh Ishtar, dewi cinta, dari suatu tempat yang tinggi.
Mata mereka menaburkan benih di dalam ladang hati, perasaan
memeliharanya, dan jiwa membawanya kepada buah-buahan.

Pandangan pertama kekasih adalah seperti roh yang bergerak di permukaan
air mengalir menuju syurga dan bumi.
Pandangan pertama dari sahabat
kehidupan menggemakan kata-kata Tuhan, “Jadilah, maka terjadilah ia”



by Kahlil Gibran

Friday, March 29, 2013

Perbandingan performa saja

Karena terlalu terbiasa dengan bahasa jawa (in english: "java") beberapa permasalahan ilmu baru dapat diselesaikan dengan pembuatan program-program dalam bahasa jawa. Seperti keingin tahuan tentang modifikasi paket http misalnya, modifikasi paket akan terlalu memaksa jika dilakukan secara manual editing (bisa gak sih manual? kayaknya ribet dan mesti butuh tool juga). Intinya sama, tetep membutuhkan sebuah tool yang dapat menangkap semua paket http kemudian dimodifikasi seperlunya :).


Aplikasi proxy sederhana adalah solusinya, dengan mengarahkan browser menuju ke port di mana aplikasi membuka "pintu". Dari beberapa kali melakukan pembuatan aplikasi serupa, saya sedikit mengerti tentang alur bagaimana program menangkap data kemudian mengirimkan ke tujuan. Aplikasi ini diletakkan di tengah lebih tepatnya, di antara saya dan tujuan saya ("suspected as unwanted person" -- baca: pihak ketiga :P). Aplikasi proxy yang dibuat dengan java ini bisa melaksanakan algoritma sesuai yang dirumuskan, namun akhir-akhir ini saya merasakan ada gejala komputer lemot dan setelah saya cek program ini memakan cpu yang lumayan besar seperti terlihat pada gambar berikut :


Angka pada kolom CPU menunjukkan angka yang selalu lebih besar dari 10. Sebelumnya tidak ada permasalahan walaupun lebih besar dari 10. Karena kebutuhan semakin banyak, software yang terinstallpun semakin bertambah dan aplikasi ini mulai mengganggu dari proses yang lain. Sudah saya ketahui program java ini berjalan di atas virtual yang mirip seperti sebuah operating system berjalan di atas operating system yang lain. Saya memutuskan untuk menuangkan algoritma ke dalam bahasa pemrograman yang lain, yang tidak memerlukan virtual machine seperti java yang menggunakan jvm untuk prosesnya. Browsing sana sini dan menemukan beberapa kode CSharp yang bisa dipahami dan mencoba untuk mengkombinasikan sebisanya dengan bermodal algoritma. Alhasil program telah jadi dan terkompail manjadi sebuah file exe.


Aplikasi dengan algoritma yang sama dengan bahasa pemrograman yang berbeda. Berikut ini screenshot proses aplikasi ini.


Angka di kolom CPU jarang sekali terlihat, kalaupun muncul angka tidak pernah melebihi 1 alias nol koma saja. Waw sekali, terbukti sangat jauh perbedaan yang ada. Proses ini ditest dengan test yang terberat yaitu dilakukan untuk membuka video di youtube.


Yah begitulah, hari ini satu masalah teratasi. Berikutnya memikirkan untuk membuat versi GUI dari aplikasi ini. Dan masih digunakan sebatas keperluan pribadi, tidak untuk di share. Saatnya tidur... :))

Sunday, March 10, 2013

Perl simple crypt (caesar cipher)

Dalam berkomunikasi dari jaman dulu hingga saat ini pada suatu ketika dibutuhkan sebuah keamanan untuk menjamin terjaganya kerahasiaan informasi yang disampaikan dari tempat pengiriman hingga tempat tujuan, sehingga informasi yang dikirimkan ini tidak terbaca oleh pihak ketiga. Keamanan yang saya maksud di sini adalah adanya sebuah penyandian atau enkripsi (istilah kerennya) dari kata-kata yang dikirimkan untuk memastikan bahwa orang yang mempunyai kata kunci saja yang bisa membaca informasi tersebut. Teknik enkripsi paling sederhana dalam kriptografi adalah buatan julius caesar yang dikenal sampai saat ini dengan sebutan caesar cipher. Algoritma dalam pembentukan sandi dalam teknik ini yaitu dengan menggeser karakter. Misal A menjadi B, B menjadi C, C menjadi D dan seterusnya. Untuk mengetahui lebih lanjut tentang algoritma caesar cipher bisa dibaca di wikipedia

Programming time... 
Saya telah membuat program perl dengan metode caesar cipher yang akan mengenkripsi plaintext ke ciphertext maupun mendekripsikan dari ciphertext ke plaintext.

#!/usr/bin/perl
# Perl simple crypt
# Caesar cipher
# zam
# 10/03/2013

use strict;

sub __h{
    print "---\n";
    print "Usage : \n";
    print "Encrypt : perl crypt.pl 1 PlainTextNoSpaceOrUseDoubleQuotes key filename.ext\n";
    print "Decrypt : perl crypt.pl 2 key filename.ext\n";
    print "---\n";
}

sub __r{
    open(__F, "<".$_[0]);
    my $___r = <__f>;
    close(__F);
    return $___r;
}

sub __s{
    open(__F, ">".$_[1]);
    print __F $_[0];
    close(__F);
}

sub __d{
    my $__t = __r($_[1]);
    my @___t = unpack("C*", $__t);
    my $_t = "";
    foreach my $____t (@___t){
        $_t .= chr(abs($____t - ($_[0] % 130)) % 256);
    }
    print "---\n";
    print "Your info : ".$_t."\n";
    print "---\n";
}

sub __e{
    my @___t = unpack("C*", $_[0]);
    my $_t = "";
    foreach my $____t (@___t){
        $_t .= chr(abs($____t + ($_[1] % 130)) % 256);
    }
    __s($_t, $_[2]);
}

if($ARGV[0]){
    if($ARGV[0] eq "1"){
        if($ARGV[1] && $ARGV[2] && $ARGV[3]){
            __e($ARGV[1], $ARGV[2], $ARGV[3]);
        }else{
            __h();
        }
    }else{
        if($ARGV[1] && $ARGV[2]){
            __d($ARGV[1], $ARGV[2]);
        }else{
            __h();
        }
    }
}else{
    __h();
}

Berikut ini contoh eksekusi program di atas :


Enkripsi di atas sangat lemah namun bisa diperkuat dengan menambahkan beberapa metode enkripsi yang lain.
Semangat buat yang sedang mengerjakan kriptografi :D.

Saturday, March 2, 2013

Tips Bash Script Cek Open Port Pada Jaringan GSM

Pada umumnya orang di dunia sekuriti menggunakan port scanning untuk mendeteksi terbukanya port pada suatu host. Ada banyak metode yang biasa digunakan dalam scanning port, semua bisa dilihat pada manual nmap pada mesin linux anda.


Kali ini kita akan melakukan scanning port untuk sebuah jaringan internet (GSM) yang dilakukan dengan menggunakan netcat (nc). Maaf di sini digunakan contoh jaringan XL. Berikut ini live video proses scan dan hasil scan :


Digunakan sedikit bash scripting berikut :

for x in {1..200};do nc 1.2.3.4 $x;done

NB :
- 1.2.3.4 merupakan host asal, karena kita tidak memiliki host dengan semua port terbuka
- Pada jaringan ini hang merupakan tanda port terbuka, seperti port 80, 109, 110, 143, dst
- Kartu yang digunakan adalah kartu yang tidak memiliki pulsa dan tidak terdaftar paket internet

Semoga menjadi inspirasi ;)

Thursday, February 21, 2013

Back to the w*ndow$ free version (red:bajakan)

Kembali ke windows dengan beberapa bayangan dan perbandingan pemrograman yang telah dipelajari di linux khususnya java, saat ini ingin menerapkan beberapa methode yang sering dipakai sebelumnya. Hal pertama yang terbersit dalam pikiran saya adalah tentang multithreading. Bagaimana pemrograman multithreading di windows? Bagaimana mengakses GUI dari thread yang terbentuk dari kelas yang berbeda? Kira-kira seperti itu pertanyaan yang muncul di pikiran saya. Hemmm... mungkin sama seperti di java yang bisa dilakukan dengan merubah modifier komponen form menjadi public dan static. Dengan berbekal pertanyaan dan asumsi tersebut saya mencoba mencari jawaban dengan googling ke sana kemari dan tentu membawa hasil yang memuaskan karena google adalah simbah saya :D.

Untuk menerapkan apa yang telah saya dapat, langsung saja kubuka visual studio free version (red:bajakan lagi). Program yang dibuat ini merupakan kompilasi source dari sana sini. Mulai dengan new project dan memilih C# kemudian WindowsFormApplication. Desain form seperti berikut :


Form dibuat demikian karena saya berencana membuat sebuah thread yang akan menghasilkan log pada textbox. Log yang akan ditampilkan merupakan list dari file yang ada di dalam direktori. Ya fungsi searching file yang dilakukan secara recursif. 

Pada start button dilakukan pembuatan sebuah thread dari fungsi searcing file tersebut.

        private void Start_Click(object sender, EventArgs e)
        {
            ThreadStart soto = delegate
            {
                SearchDir("D:\\");
            };
            tr = new Thread(soto);
            tr.Start();
            this.Start.Enabled = false;
        }

Thread ini merupakan perwakilan (:D) dari fungsi di bawah ini :

        public void SearchDir(string path)
        {
            SearchFile(path);
            string[] fol = Directory.GetDirectories(path);
            for (int i = 0; i < fol.Length; i++)
            {
                    _pauseEvent.WaitOne(Timeout.Infinite);

                if (_shutdownEvent.WaitOne(0))
                    break;
                    SearchDir(fol[i]);
                }
        }

        public void SearchFile(string dir)
        {
            string[] file = Directory.GetFiles(dir);
            for (int i = 0; i < file.Length;i++)
            {
                if (this.textBox1.InvokeRequired)
                {
                    this.textBox1.Invoke((MethodInvoker)delegate()
                    {
                        this.textBox1.Text = this.textBox1.Text + "\r\n" + file[i];
                        this.textBox1.SelectionStart = this.textBox1.Text.Length;
                        this.textBox1.ScrollToCaret();
                        this.textBox1.Refresh();
                    });
                }
            }
        }

Terlihat jelas ada perbedaan cara pengaksesan komponen GUI dari sebuah thread (berbeda cara saya mengakses). Di sini diperlukan method invoker untuk mengakses komponen. Ketika program running tampilan GUI akan seperti berikut:



Saat program run, ada dua tombol yang masih aktif untuk mengontrol jalanya thread. Berikut kode pada tombol pause :

        private void Pause_Click(object sender, EventArgs e)
        {
            if (this.Pause.Text == "Pause")
            {
                _pauseEvent.Reset();
                this.Pause.Text = "Resume";
            }
            else
            {
                _pauseEvent.Set();
                this.Pause.Text = "Pause";
            }
        }

Ketika tombol pause ini ditekan maka thread akan dalam posisi pause dan tulisan tombol menjadi "Resume", ketika ditekan sekali lagi thread akan melanjutkan dan tulisan tombol kembali menjadi "Pause".




Kemudian tombol stop yang berfungsi untuk menghentikan semua kegiatan thread, seperti ini kode programnya.

        private void Stop_Click(object sender, EventArgs e)
        {
            try
            {
                tr.Abort();
            }
            catch { }
        }

Kegiatan program berhenti sampai di sini. Untuk mengontrol banyak thread saya telah memiliki bayangan yaitu dengan membuat sebuah collection list yang berisi objek dari thread yang telah terbuat. Mungkin penerapan saja yang belum sempat terpikirkan. Semoga sedikit bacaan ini bisa berguna suatu saat nanti. :)