Selasa, Disember 31, 2013

Selamat tinggal 2013

Assalamualaikum dan salam sejahtera,
Hari ini bertarikh 31hb Disember 2013 adalah hari terakhir dan penutup buat tahun 2013. Angka '2013' adalah sebahagian daripada nama alamat weblog ini. Tidak membawa apa-apa makna pun cuma mungkin ia menjadi simbolik tersendiri yang tidak dapat diungkap.

Pejam dan celik dengan pantas masa berlalu pergi meninggalkan kita yang masih hanyut didalam buaian mimpi realiti dan fantasi. Bermacam suka dan duka telah kita lalui sepanjang tahun 2013. Aku dengan kisah aku yang tersendiri. Kamu dengan kisah kamu. Kita masing-masing hadir dengan jalan cerita, plot dan pengembaraan tersendiri...



Walau apa pun yang berlaku kita jangan putus asa. Teruskan hidup. Perjalan masih lagi jauh. Teringat pula beberapa hari lepas, sahabat ku mengadu dia sangat sedih sebab tidak pernah mendapat dekan sepanjang pengajian. Bersabarlah, teruskan berusaha. Namun kelak nanti bila berjaya jangan lupa pada rakan-rakan yang dibawah.

Aku tiada apa-apa yang hendak aku ungkapkan dalam entri terakhir buat tahun 2013 ini. Cuma aku berharap dan doakan tahun 2014 akan menjadi tahun yang bermakna buat aku.. wassalam~

Khamis, Disember 26, 2013

PHP + Gammu : Auto reply

Index.php
<?php

mysql_connect("localhost","root","");
mysql_select_db("sms");
?>
<html>
    <head>
    <title>Auto Reply</title>
<script language="javascript" src="jquery-1.7.2.min.js"></script>
<script>
$(document).ready(function(){
    autoreplay();
});

function autoreplay(){
    $.ajax({
        url : 'auto_kirim.php',
        success : function(msg) {
            $('tr.first').after(msg).fadeIn(300);
        }
    });
    setTimeout("autoreplay()",10000);
}
</script>
</head>
<body>
<table>
    <tr class="first">
        <td>Pesan</td>
        <td>Pengirim</td>
        <td>Status Kirim</td>
    </tr>
<?php

$query = mysql_query("SELECT * FROM inbox WHERE Processed='true'");
while($data = mysql_fetch_object($query)){
?><tr>
    <td><?php echo $data->Text; ?></td>
        <td><?php echo $data->SenderNumber; ?></td>
        <td><?php echo $data->Processed; ?></td></tr>
<?php
} 

?>
</body>
</html>



Autoreply.php
<?php
mysql_connect("localhost","root","");
mysql_select_db("sms");
$query = mysql_query("SELECT * FROM inbox WHERE Processed='false'");
while($data = mysql_fetch_object($query)){

    //Disini letak Parsing Data
    //Anda bisa tambahkan  parsing Data Anda Sendiri
    $text = "Pesan Anda adalah ".$data->Text;
    //==============================================
    
    //Masukkan pesan ke Table outbox
    $q2 = mysql_query("INSERT INTO outbox(DestinationNumber, TextDecoded, CreatorID) VALUES ('".$data->SenderNumber."','".$text."','Gammu')");

    //Update Pesan Terkirim pada table inbox
    $q3 = mysql_query("UPDATE inbox SET Processed = 'true' WHERE ID = '".$data->ID."'");

    //output berupa row pada table
    ?>
    <tr>
        <td><?php echo $data->Text; ?></td>
        <td><?php echo $data->SenderNumber; ?></td>
        <td>true</td>
    </tr>
    <?php
} 
?>

Sumber :
http://onthecomputershare.blogspot.com/2012/06/software-sms-auto-reply-sms-gateway.html

Jumaat, Disember 20, 2013

JAVA : MyKamus @ Putera.com

package com.putera.kamus;

/**
 * Created with IntelliJ IDEA.
 * User: Syahmi
 * Date: 16/11/2013
 * Time: 3:29
 * To change this template use File | Settings | File Templates.
 */
public class Kamus {

    public static void main(String[] args) {
        Scraper scraper = new Scraper();

        for (String arg : args) {
            String data[] = scraper.get(arg);
            if (data == null) {
                System.out.println("Ralat");
                return;
            }

            for (String s : data) {
                System.out.println(s);
            }
        }
    }
}


package com.putera.kamus;

import org.jsoup.Jsoup;
import org.jsoup.nodes.*;

import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Iterator;

/**
 * Created with IntelliJ IDEA.
 * User: Syahmi
 * Date: 16/11/2013
 * Time: 3:35
 * To change this template use File | Settings | File Templates.
 */
public class Scraper {
    private static final String QUERY_URL = "http://prpm.dbp.gov.my/Search.aspx?k=";

    public String[] get(String word) {
        URL url;
        ArrayList<String> list = new ArrayList<String>();

        try {
            url = new URL(QUERY_URL + URLEncoder.encode(word, "UTF-8"));
            Document doc = Jsoup.parse(url, 30000);
            String resp = "";

            Iterator<Element> it = doc.select(".alternate").iterator();

            while(it.hasNext()) {
                Element e = it.next();
                list.add(e.text());
            }

            String[] array = list.toArray(new String[list.size()]);

            return array;

        } catch (Exception e) {
            String[] error = new String[1];
            error[0] = e.getMessage();

            return error;
        }
    }
}

Khamis, Disember 19, 2013

PHP : Cari lirik lagu

<html>
<head>
<title>SongLyric Searcher by 1.13.19.Hacker</title>
<link type="text/css" rel="stylesheet" href="http://1-13-19-hacker.eu.pn/Resources/css/style.css" />
</head>
<body>
<center><h1>SongLyric Searcher</h1>by <a href="http://www.facebook.com/1.13.19.Hacker" target="_blank">1.13.19.Hacker</a><form method="POST" action="" id="lirik_lagu" name="lirik_lagu" class="form-wrapper"><br />
<table border="0"><tr><td>Artist</td><td><input type="text" name="artis" value="<?php if(isset($_POST['artis'])){ echo htmlentities($_POST['artis']); } else { echo '';} ?>" /></td></tr>
<tr><td>Song Title</td><td><input type="text" name="judul" value="<?php if(isset($_POST['judul'])){ echo htmlentities($_POST['judul']); } else { echo '';} ?>" /></td></tr>
<tr><td colspan="2"><input type="submit" name="submit" id="submit" value="Search" /></td></tr></table></form><br />
<?php
function get_string_between($string, $start, $end){
    $string = " ".$string;
    $ini = strpos($string,$start);
    if ($ini == 0) return "";
    $ini += strlen($start);
    $len = strpos($string,$end,$ini) - $ini;
    return substr($string,$ini,$len);
}

if($_POST['submit']=="Search"){
    if(isset($_POST['artis']) && !empty($_POST['artis']) && isset($_POST['judul']) && !empty($_POST['judul'])){
        $source = file_get_contents("http://www.songlyrics.com/".str_replace(" ", "-",$_POST['artis'])."/".str_replace(" ", "-",$_POST['judul'])."-lyrics/");
        if (!empty($source)) {
            $output = get_string_between($source, '<p id="songLyricsDiv" ondragstart="return false;" onselectstart="return false;" oncontextmenu="return false;" class="songLyricsV14">','</p>');
            //$output = str_replace("<br />","",$output);
            if(strpos($output, 'Sorry, we have no') !== FALSE){$output = "<script>alert('Lyric not found!')</script>";}
            echo ($output);
        }
        else{
            echo "<script>alert('Unable to grab data')</script>";
        }
    }
    else{
        echo "<script>alert('Please fill all textbox!')</script>";
    }
}
?></center>
</body></html> 
12-12-2013 05:49 AM 
* sumber : Aku pun lupa mana aku copy..haha..tuih

Rabu, Disember 18, 2013

PHP : Round 2 decimal floating point

<?php
echo(round(4.96754,2) . "<br>");
echo(round(7.045,2) . "<br>");
echo(round(7.055,2));
?>

Isnin, Disember 16, 2013

FIX PHP : Warning: Cannot modify header information - headers already sent

<?php
  ob_start();

  // sumbat dan goreng kod kat dalam ni 

 ob_end_flush();
?> 
* Dengan sedikit hack (pakai dengan cara ni).. kita boleh abaikan masalah warning @ notice tersebut. Masalah ni biasanya berpunya daripada whitespace antara tag <?php dan ?> ...tapi kalau kod dah cecah lebih daripada 2K baris. Tak sanggup dah nak baca beb..huhu.. pakai cara ni mudah. Letak je ob_start(); kat atas fail kemudian ob_end_flush(); kat baris paling bawah dalam fail..semoga mujarab \m/

Ahad, Disember 15, 2013

Peace for Palestine


"Kembalikan keamanan dan kesejahteraan rakyat Palestin"


Rabu, Disember 11, 2013

Linux / Unix : ffmpeg untuk convert fail MP4 ke MP3

$ ffmpeg -i amoi.mp4 -f mp3 -ab 320000 -vn comey.mp3

Selasa, Disember 10, 2013

PHP+JavaScript : Echo Alert box

<?php
echo '<script type="text/javascript">alert("Data: ' . $var . '");</script>';
?>

Isnin, Disember 09, 2013

JavaScript + HTML : Calendar picker

Memang menjadi masalah kalau bermain dengan masa. Paling asas ialah untuk petik tarikh. Kongsep HCI ialah untuk memudahkan pengguna. Jadi kalendar perlulah ada untuk memudahkan pengguna memilih tarikh. HTML5 ada fungsi ini. Tapi buat masa sekarang, peluncur / browser kebanyakkan masih belum aktif menggunakan HTML5. Javasript adalah alternative terbaik.

1. Download fail javascript dan gambar berkaitan :
http://www.rainforestnet.com/datetimepicker/download/sample.zip
2. Unpack dan masukkan pada folder halaman anda.

3. Link javascript tersebut dengan fail anda
<script src="datetimepicker_css.js"></script>
* (rujuk kod sumber contoh dalam folder yang korang unpack tadi kalau tak faham)

4. Melalui form tertentu. Invoke fungsi javascript melalui teknik onclick(), sebagai contoh:
<input type="Text" name="mulacuti" id="mulacuti" maxlength="25" size="25"/>
<img src="images/cal.gif" onclick="javascript:NewCssCal ('mulacuti','ddMMyyyy','','','','','future')" style="cursor:pointer"/>

Nota: pastikan ID pada input anda adalah sama dengan parameter di dalam NewCssCal. Untuk contoh di atas, ID = mulacuti dan parameter = mulacuti. Kalau tak sama, memang tak menjadilah jawabnya beb..

Terdapat pelbagai cara untuk anda manipulasikan masa dan tarikh. Sila rujuk:
http://www.rainforestnet.com/datetimepicker/datetimepicker-demo1.htm

Ahad, Disember 08, 2013

HTML + PHP : Upload gambar, check extension dan rename nama fail gambar secara unik untuk simpanan

Form :
<html>
<head><title>Borang</title></head>
<body>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form action="upload.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<td>
  <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
    <tr>
      <td><strong>Single File Upload </strong></td>
    </tr>
    <tr>
      <td>Silih fail <input name="0xfile" type="file" id="0xfile" size="50" /></td>
    </tr>
    <tr>
      <td align="center"><input type="submit" name="Submit" value="Upload" /></td>
    </tr>
  </table>
</td>
</form>
</tr>
</table>
</body>
</html>

upload.php
<?php
$file_name = basename($_FILES['0xfile']['name']);

// random 4 digit to add to our file name 
// some people use date and time in stead of random digit 
$random_digit=rand(00000000,99999999);

//combine random digit to you file name to create new file name
//use dot (.) to combile these two variables

// check extension
$allowed =  array('gif','png' ,'jpg');
$ext = pathinfo($file_name, PATHINFO_EXTENSION);
$new_file_name=$random_digit.".".$ext; //.$file_name;

//set where you want to store files
//in this example we keep file in folder upload 
//$new_file_name = new upload file name
//for example upload file name cartoon.gif . $path will be upload/cartoon.gif
$path= "images/".$new_file_name;
if(!in_array($ext,$allowed) ) {
    echo 'Upload only .gif, .png or .jpg file';
}else{
  if ($_FILES['0xfile']['size'] != 0)
  {
    if(copy($_FILES['0xfile']['tmp_name'], $path))
    {
      echo "Successful<BR/>"; 

      //$new_file_name = new file name
      //$HTTP_POST_FILES['ufile']['size'] = file size
      //$HTTP_POST_FILES['ufile']['type'] = type of file
      echo "File Name :".$new_file_name."<BR/>"; 
      echo "File Size :".$_FILES['0xfile']['size']."<BR/>"; 
      echo "File Type :".$_FILES['0xfile']['type']."<BR/>"; 
      echo "File URL  :"."/images/{$new_file_name}";
      $url="images/{$new_file_name}";
      echo "<img src=\"{$url}\"/>";
    }else{
      echo "Error";
    }
  }
}

?>

Sabtu, Disember 07, 2013

HTML : Input (form) terima nilai nombor sahaja

<input type="text" name="nokadpengenalan" maxlength='12'size="60" onkeypress='return event.charCode >= 48 && event.charCode <= 57' />

Rabu, Disember 04, 2013

Linux : IBM SPSS Statistical

Macamana nak run SPSS kat linux? Caranya :
/opt/IBM/SPSS/Statistics/XX/bin/stats
*XX ialah versi SPSS anda

Isnin, Disember 02, 2013

PHP : Redirect location (header)

<?php 
header("Refresh: 3: url=http://0x2013.com"); 
echo '<h1>Anda akan ke laman saya dalam 3 saat</h1>';
?>

Ahad, November 24, 2013

LAMPP : Permision denied "/op/lampp/htdoc" - FIXED!

Bila pasang XAMPP dalam linux, semua web files akan sumbat dalam folder htdocs. Tapi masalahnya. Asyik kena recursive chmod je folder website (htdocs) dan sangat leceh bila nak buat kerja (sangat busy beb!). Jadi, cara mudah.. kita letakkan bawah user dan group komputer kita sendiri. Tak faham? Ok. Contoh lah web saya tu dalam folder "pinktube" (bukan redtube ok?), dan saya nak buat index.php dalam tu.
$ touch /opt/lampp/htdocs/pinktube/index.php
touch: cannot touch ‘/opt/lampp/htdocs/pinktube/index.php’: Permission denied
Nampak tak masalah kat atas? Bayangkan ada banyak fail dan folder. Nak chmod 755 -R pun rasa malas klau ada banyak folder lain dan kena kerap kali buat macamni. Tu belum masuk lagi kes orang yang tak tahu guna recursive chmod. Mesti kojol kalau dia chmod fail satu per satu..kah..kah..

Penyelesaian Mudah :
===================
1. Kita kenal pasti user dan group:
$ who am i
Contoh output:
syasha      pts/1        2023-14-54 01:44 (:0)
* amik output yang depan sekali untuk kenal pasti user dan group , sebagai contoh diatas ialah "syasha"

2. Set direktori /op/lampp/htdocs/ tersebut dengan permision dari output user dan group di atas
$ sudo chown -R username:username /opt/lampp/htdocs
Klu ikot contoh aku, username tu perlulah ganti dengan syasha..bergantung pada komputer korang la.

3. Edit fail httpd.conf
$ sudo nano /opt/lampp/etc/httpd.conf
Cari maklumat bawah bahagian <IfModule unixd_module>
User deamon
Group deamon
Ganti deamon tu dengan user dan group anda sendiri. Simpan dan restart lampp anda. Ok selesai.. try la buat fail atau folder, dah takde masalah lagi.

Selamat mencuba!

Sabtu, November 23, 2013

JAVA - Quadratic equation

while (true) { 
         println (); 
         println ("This program gives both solutions to a quadratic equation and its roots."); 
         println (" Example: 5x^2 + 7x - 8 "); 
         println (); 

         //Prints the explanation of the program and an example of the format 

         double A = readDouble("      How many x^2? (5 in the example)        "); 
         double B = readDouble("      How many x? (7 in the example)          "); 
         double C = readDouble("      How many units? (-8 in the example)     "); 
         println (); 

         //Requests user input 

         double Totalpositive = (-B + (Math.sqrt ((B*B) - (4*A*C)))) / (2*A); 
         double Totalnegative = (-B - (Math.sqrt ((B*B) - (4*A*C)))) / (2*A); 

         //Solves for both solutions of the quadratic, using the quadratic formula 

         println ("Solution one ---->  " + Totalpositive ); 
         println ("Solution two ---->  " + Totalnegative ); 
         println (); 
         println ("Roots:  "); 
         println (); 
         println ("      [ X + " + -Totalpositive + " ; X + " + -Totalnegative + " ]"); 

         //Prints the solutions and the roots 
      } 
   }   

Jumaat, November 22, 2013

Stenografi : Ujian Paling Asas dan Mudah

Assalamualaikum & salam sejahtera,
Hari ini aku kongsikan bagaimana hendak membuat stegnografi asas ke atas suatu gambar. Untuk menggunakan teknik yang aku kongsikan ini, anda perlulah menggunakan linux. Terpulanglah nak pakai distro apa-apa pun, namun dicadangkan daripada variasi Debian seperti Debian itu sendiri, Kali Linux ataupun Ubuntu.

1. Pasang pakej steghide ke dalam sistem operasi linux anda
apt-get install steghide

2. Selesai pemasangan itu. Cari satu gambar untuk digunakan (sebagai contoh saya gunakan "amoi.jpg") dan buat satu file teks yang mengandungi teks tertentu (sebagai contoh saya buat fail "rahsia.txt" dan didalamnya tertulis maklumat saya). Kemudian, kita kumpil kan 2 bahan tersebut.
steghide embed -cf amoi.jpg -ef rahsia.txt
Sila masukkan katalaluan tertentu (reka je sendiri) untuk melindungi fail tersebut.

3. Siap, fail tersebut telah dipadukan (embed) bersama-sama. Jika anda perasan saiz fail gambar juga telah bertambah. Sekiranya anda ingin berkongsi gambar tersebut, sila mampatkan (compress) dan arkib menggunakan format .rar , .tar.gz , .zip dan sebagainya. Jangan lupa pula untuk berkongsi "katalaluan" anda untuk memudahkan orang lain membuka fail tersebut.

4. Untuk membuka fail tersebut. Masukkan arahan dibawah:
steghide extract -sf amoi.jpg

Semoga ilmu ini bermanfaat. Wassalam~

Khamis, November 21, 2013

Nautilus + ( WebDAV + Box.net)

Berikut adalah langkah-langkah untuk menyambung kepada storan atas awan melalui akaun box.net dengan menggunakan Nautilus.
1. Buka nautilus > klik "file" > pilih "connect to server".
2. Masukkan alamat "davs://www.box.com/dav/"


3. Ketik "connect" dan kemudian masukkan maklumat akaun box.net anda.

Selesai, anda boleh menggunakan storan atas awan dan jika mahu mudah untuk digunakan lain kali. Anda boleh "bookmark" rangkaian tersebut. Sekian.

Rabu, November 20, 2013

Tutorial : Start & update Metasploit if not autostart

Well, macam tajuk post ni. Sekiranya kita dah pun disable kan metasploit daripada autostart. Makan anda perlu memasukkan arah di boleh untuk membolehkan anda menggunakan metasploit tersebut :
$ sudo -sH
$ /etc/init.d/metasploit start
$ cd /opt/metasploit/app
$ sudo msfconsole

Dan sekiranya anda ingin membuat kemaskini. Sila gunakan arahan dibawah:
$ /etc/init.d/metasploit start
$ cd /opt/metasploit/app
$ msfupdate
Semoga bermanfaat. Wassalam~

Tutorial : Metasploit =/= Service

Ingat tak masa pasang Metasploit dulu tentang gambar dibawah?


Sekiranya anda memilih "No" iaitu menjadikan Metasploit bukan services pada komputer anda maka anda perlulah memasukkan arahan:
$ sudo /opt/metasploit/ctlscript.sh start
Untuk menggunakan Metasploit..

Tutorial : Disable Metasploit Autostart

Cara untuk disable autostart Metasploit selepas proses installation:
$ sudo update-rc.d metasploit disable

Jumaat, November 15, 2013

PHP : Saiz imej berdasarkan kadaran ( Proportional resizing image )

<?php
function scale_image($foto, $maxdim){
$thumb_width = $maxdim;
list($fullsize_width, $fullsize_height) = getimagesize($foto);
$thumb_height = @floor($fullsize_height/($fullsize_width/$thumb_width));
if($fullsize_width > $thumb_width){ $width = $thumb_width; $height = $thumb_height; } else { $width = $fullsize_width; $height = $fullsize_height; }

return '<img src="' . $foto . '" width="' . $width . '" height="' . $height . '" />';
}

echo scale_image('image.jpg', '500');
?>

Selasa, November 12, 2013

TUTORIAL : MINIMAL UBUNTU DESKTOP VIA UBUNTU SERVER INSTALLATION

1. Download ISO Ubuntu Server dan pasang pada komputer anda.
2. Pasang pakej "ubuntu desktop" tanpa "recommend" pada ubuntu server anda.
$ sudo apt-get install --no-install-recommends ubuntu-desktop
3. Akhir sekali, pasangkan "Desktop Enviroment" anda (pilih salah satu sahaja)
> Minimal KDE Desktop (KUBUNTU)
$ sudo apt-get install --no-install-recommends kubuntu-desktop

> Minimal XFCE Desktop (XUBUNTU)
$ sudo apt-get install --no-install-recommends xubuntu-desktop

> Minimal LXDE Desktop (LUBUNTU)
$ sudo apt-get install lubuntu-desktop

Siap! Sekarang Ubuntu anda berfungsi dengan pakej yang minimal. Seterusnya terpulang pada anda untuk membuat pemasangan aplikasi yang lain. Adios!

Linux : Semak maklumat RAM

black@b0x ~ $ sudo dmidecode -t 17
# dmidecode 2.11
SMBIOS 2.7 present.

Handle 0x0036, DMI type 17, 34 bytes
Memory Device
    Array Handle: 0x0035
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 4096 MB
    Form Factor: SODIMM
    Set: None
    Locator: ChannelA-DIMM0
    Bank Locator: BANK 0
    Type: DDR3
    Type Detail: Synchronous
    Speed: 1600 MHz
    Manufacturer: Samsung
    Serial Number: 00V89ED2
    Asset Tag: 9176843213
    Part Number: X971B5233DH0-CL0  
    Rank: Unknown
    Configured Clock Speed: 1600 MHz

Handle 0x0037, DMI type 17, 34 bytes
Memory Device
    Array Handle: 0x0035
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 4096 MB
    Form Factor: SODIMM
    Set: None
    Locator: ChannelB-DIMM0
    Bank Locator: BANK 2
    Type: DDR3
    Type Detail: Synchronous
    Speed: 1600 MHz
    Manufacturer: Samsung
    Serial Number: 0Z7U9RA3
    Asset Tag: 9876543210
    Part Number: M481BT173DH0-CL0  
    Rank: Unknown
    Configured Clock Speed: 1600 MHz

Sabtu, November 02, 2013

VB.NET : Tumblr.com login + captcha

Imports System.Net
Imports System.IO
Imports System.Text
Imports System.Web

Public Class frmMain
#Region "Structures"
    Private Structure Sessions
  Dim recaptcha_public_key As String
  Dim form_key As String
  Dim recaptcha_challenge_field As String

  Public Sub Reset()
    recaptcha_challenge_field = String.Empty
    form_key = String.Empty
    recaptcha_public_key = String.Empty
  End Sub
    End Structure
#End Region

    Public Enum Verb
  [GET] = 0
  POST = 1
    End Enum
    Private ReadOnly Verbs() As String = New String() {"GET", "POST"}

    Dim CookieJar As New CookieContainer
    Private Session As New Sessions
    Function GetResponse(ByVal Method As Verb, ByVal Uri As String, Optional ByVal PostData As String = "")

  Dim byteData As Byte() = Nothing
  If Not String.IsNullOrEmpty(PostData.Trim) Then byteData = UTF8Encoding.UTF8.GetBytes(PostData)

  Dim postReq As HttpWebRequest = DirectCast(WebRequest.Create(Uri), HttpWebRequest)
  postReq.Method = Verbs(Method)
  postReq.KeepAlive = True
  postReq.CookieContainer = CookieJar
  postReq.ContentType = "application/x-www-form-urlencoded"
  postReq.Referer = "https://www.tumblr.com/login"
  postReq.UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0"
  postReq.ContentLength = If(IsNothing(byteData), 0, byteData.Length)

  If (Method.Equals(Verb.POST)) Then
    If Not postReq.ContentLength.Equals(0) Then
    Dim dataStream As Stream = postReq.GetRequestStream()
    With dataStream
    .Write(byteData, 0, byteData.Length)
    .Close() : .Dispose()
    End With
    End If
  End If

  Dim postresponse As HttpWebResponse
  postresponse = DirectCast(postReq.GetResponse(), HttpWebResponse)
  CookieJar.Add(postresponse.Cookies)

  Dim postreqreader As New StreamReader(postresponse.GetResponseStream())
  Dim html As String = postreqreader.ReadToEnd
  Return html
    End Function

    Sub UpdateLog(ByVal text As String)
  EventLog.AppendText(String.Format("[{0}]: {1}", Date.Now.ToShortTimeString, text.Trim))
  EventLog.AppendText(Environment.NewLine)
    End Sub
    Public Shared Function ParseBetween(ByVal Html As String, ByVal Before As String, ByVal After As String, Optional Offset As Integer = 0) As String
  If Offset = 0 Then Offset = Before.Length
  If String.IsNullOrEmpty(Html) Then Return String.Empty
  If Html.Contains(Before) Then
    Dim Result As String = Html.Substring(Html.IndexOf(Before) + Offset)
    If Result.Contains(After) AndAlso Not String.IsNullOrEmpty(After) Then Result = Result.Substring(0, Result.IndexOf(After))
    Return Result
  Else
    Return String.Empty
  End If
    End Function

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  UpdateLog("Logging in with: " & username_txt.Text)
  If Not captcha_txt.Text = String.Empty Or username_txt.Text = String.Empty Or password_txt.Text = String.Empty Then
    Dim PostData As New StringBuilder
    PostData.Append(HttpUtility.UrlEncode("user[email]") & "=" & HttpUtility.UrlEncode(username_txt.Text))
    PostData.Append("&" & HttpUtility.UrlEncode("user[password]") & "=" & HttpUtility.UrlEncode(password_txt.Text))
    PostData.Append("&" & HttpUtility.UrlEncode("tumblelog[name]") & "=")
    PostData.Append("&recaptcha_public_key=" & Session.recaptcha_public_key)
    PostData.Append("&recaptcha_challenge_field=" & Session.recaptcha_challenge_field)
    PostData.Append("&recaptcha_response_field=" & captcha_txt.Text)
    PostData.Append("&" & HttpUtility.UrlEncode("user[age]") & "=")
    PostData.Append("&context=login")
    PostData.Append("&version=STANDARD")
    PostData.Append("&follow=")
    PostData.Append("&http_referer=" & HttpUtility.UrlEncode("https://www.tumblr.com/login"))
    PostData.Append("&form_key=" & HttpUtility.UrlEncode(Session.form_key))
    PostData.Append("&seen_suggestion=0")
    PostData.Append("&used_suggestion=0")

    Dim html As String = GetResponse(Verb.POST, "https://www.tumblr.com/login", PostData.ToString)

    html = GetResponse(Verb.GET, "http://www.tumblr.com/dashboard")

    If html.Contains(">Log out</a>") Then
    UpdateLog("Successfully Logged in !")
    UpdateLog("Your blog is: " & ParseBetween(html, "class=""open_blog_link"" href=""", """"))
    Else
    UpdateLog("Couldn't Login. Check username/password.")

    End If

  Else
    MsgBox("Make sure you've entered all the inputs. Including the captcha")
  End If

    End Sub

    Sub GetCaptcha()
  UpdateLog("Fetching Captcha ...")
  Dim Html As String = GetResponse(Verb.GET, "https://www.tumblr.com/login")
  Session.recaptcha_public_key = ParseBetween(Html, "name=""recaptcha_public_key"" value=""", """")
  Session.form_key = ParseBetween(Html, "name=""form_key"" value=""", """")
  Dim Challenge As String = GetResponse(Verb.GET, String.Format("https://www.google.com/recaptcha/api/challenge?k={0}&ajax=1&cachestop=0.7610605780430966", Session.recaptcha_public_key))
  Challenge = ParseBetween(Challenge, "challenge : '", "',")
  Session.recaptcha_challenge_field = Challenge
  PictureBox1.ImageLocation = "https://www.google.com/recaptcha/api/image?c=" & Session.recaptcha_challenge_field
  UpdateLog("Successfully fetched Captcha !")
    End Sub

    Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  GetCaptcha()
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  GetCaptcha()
    End Sub
End Class 

Download : Tumblr login (mediafire)