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)

XSS : http://mylearn.umt.edu.my (Universiti Malaysia Terengganu)