Pages

3/31/2011

Lyx: Convert Latex .cls file to .layout in Lyx

I just started using Lyx.
The problem is I already have latex (.tex) files and the document class file (.cls)

Basically, Lyx comes with a converter called "tex2lyx", which be able to convert any .tex file into .lyx file to be used in Lyx.

So, what I did is to import the main tex file "thesis.tex" which has content like this:
% This is a template for Ph.D. dissertations in the UCI format.

% All fonts, including those for sub- and superscripts, must be 10 points or larger.
% Recommended sizes are 14-point for chapter headings, 12-point for the main body of text
% and figure/table titles, and 10-point for footnotes, sub- and super-scripts, and text in
% figures and tables.
\documentclass[12pt,fleqn]{ucithesis}

...

\include{introduction}

\include{background}

\include{relatedwork}

...


Unfortunately, when I tried to import I found this error.
$ tex2lyx -f thesis.tex 
Error: Could not find layout file for textclass "ucithesis".

After searching for awhile, I found that Lyx does not use and cannot understand ".cls" file in Tex. The only Lyx can understand the format of the document is to use ".layout" file. So, how to convert .cls to .layout , and how to use it??

I also found this http://www.paulkiddie.com/2010/02/adding-custom-class-files-cls-to-lyx-in-windows-vista-windows-7-environment/

It shows a way to use ".cls" in Lyx, but it is for Windows, I need to adapt it for using it in Linux.


To summarize, the idea from the link above can be separated into 2 parts:
1. Create new document class for Latex in your system:
2. Set Lyx to recognize the style

1. Create new document class for Latex
  • go to main folder of Latex. Mine is at /usr/share/texmf/tex/latex
  • create new folder the same name as the class file. So I'll have /usr/share/texmf/tex/latex/ucithesis
  • move .cls file into that folder. For this move my "ucithesis.cls" into the folder.
/usr/share/texmf/tex/latex/
----------ucithesis/
---------------------ucithesis.cls
 2. Set Lyx to know that
  • go to layout folder of Lyx. Mine is at /usr/share/lyx/layouts
  • create a .layout file. I want to use class "ucithesis", so I create "ucithesis.layout"
  • put this text into that file (replace "ucithesis" with whatever class name you want") :
#% Do not delete the line below; configure depends on this
# \DeclareLaTeXClass[ucithesis]{article (ucithesis)}
# Input general definitions
Input stdclass.inc
  • this will add new layout into Lyx, but Lyx doesn't know it yet.
  • to let Lyx knows it, open Lyx program, then go to Tools --> Reconfigure
  • restart Lyx for it to take effect.
 At this point I can import my main Tex file into Lyx program.

Moreover, if you want to set document class for the current open document,
go to Document --> Settings... --> Change Document class to what you want

Changing MAC Address on Windows, Manually

According to http://www.technitium.com/tmac/index.html

Misconceptions

Many people believe MAC address, which is hard coded in the NIC card cannot be changed. Yes, its hard coded but, it can be changed only by removing the flash chip from the NIC card, re-programming it with new MAC address and putting it back on the card. But this software does not change the hard coded MAC address. Technitium MAC Address Changer instructs Windows(TM) to use MAC address it has specified in windows registry. If no MAC address is specified to Windows(TM), it uses the hard coded one in the NIC to construct Ethernet or IEEE network frames (or simply packets), which are used at OSI layer 2. Also Windows(TM) changes MAC address of your NIC when Windows(TM) Network Bridge is enabled. The first number in the MAC address of the NIC added in the Network Bridge is set to 0x02. Changing MAC address of Network Bridge is not possible in Windows(TM) using this software.



How Does It Work ?

This software just writes a value into the windows registry. When the Network Adapter Device is enabled, windows searches for the registry value 'NetworkAddress' in the key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1- 08002bE10318}\[ID of NIC e.g. 0001]. If a value is present, windows will use it as MAC address, if not, windows will use the hard coded manufacturer provided MAC address. Simple? Some Network Adapter drivers have this facility built-in. It can be found in the Advance settings tab in the Network Adapter's Device properties in Windows Device Manager.
It actually sounds easy enough to change MAC address (MAC spoofing) by our own without any other tool. I was about to try and write a tutorial by myself.

But, second thought, maybe someone already wrote it. It couldn't be bad  to check it out.

And I found this http://www.windowsreference.com/networking/how-to-change-mac-address-in-windows-registry/

VistaFix wrote a nice tutorial on this with good example pictures, you should check it out.
Explanatory image from the tutorial mentioned above

3/30/2011

Getting Free Cloud Space from Amazon

Amazon just announced "Cloud Drive" https://www.amazon.com/clouddrive/learnmore


and for promotion, free 5GB for everyone!!!  great!

Basically, "Cloud Drive" is a new cloud-based storage on the web.
Since, Amazon is one of infamous commercial cloud providers, this is quite a big thing for Amazon to give away a free stuffs.

I think this is just a promotion for people to buy music from Amazon so they can download it to Amazon's "Cloud Player" and play it on-line. Quite a good strategy : music store to sale music, plus free storage that you can access from anywhere, and it's 5GB for free.
I tried to purchase a free music and tried to add into my cloud storage. This is the result:

The free song I chose
After purchasing, you have an option to save to your "Cloud Drive"

Here it comes into my "Cloud Drive" 
(actually, this is "Cloud Player" page)

On this page, you'll see all your music you have here. You'll be able to play the songs and manipulate them.

If you click the yellow button on top-left - "Upload to your cloud drive", you'll access your "Cloud Drive" there. Here's the screenshot:

Very familiar folder pattern, it seems like this type of folders will be standard in every services/OSes.

A trick to gain 20GB Cloud Drive for a year from Amazon with insanely cheap price.
 According to the Amazon's promotion:

If you actually pay (free one doesn't work) for a MP3 music album from Amazon, you can upgrade your Cloud Drive to 20GB for a year.
So, you can choose to purchase the cheapest music album on Amazon which is starting from $0.69!! and you'll get 20GB!  sounds good,huh?

3/27/2011

Adobe Flash Vulnerability CVE-2011-0609

Adobe Flash Vulnerability
CVE-2011-0609

Vulnerability Detail: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-0609
Unspecified vulnerability in Adobe Flash Player 10.2.154.13 and earlier on Windows, Mac OS X, Linux, and Solaris and 10.1.106.16 and earlier on Android, and Authplay.dll (aka AuthPlayLib.bundle) in Adobe Reader and Acrobat 9.x through 9.4.2 and 10.x through 10.0.1 on Windows and Mac OS X, allows remote attackers to execute arbitrary code or cause a denial of service (application crash) via crafted Flash content, as demonstrated by a .swf file embedded in an Excel spreadsheet, and as exploited in the wild in March 2011.

Adobe Advisory
http://www.adobe.com/support/security/advisories/apsa11-01.html

Affected Versions:
Adobe Flash Player 10.2.152.33 and earlier versions for Windows, Macintosh, Linux and Solaris operating systems
Adobe Flash Player 10.2.154.18 and earlier for Chrome users
Adobe Flash Player 10.1.106.16 and earlier for Android
The Authplay.dll component that ships with Adobe Reader and Acrobat X (10.0.1) and earlier 10.x and 9.x versions for Windows and Macintosh operating systems.
NOTE: Adobe Reader 9.x for UNIX, Adobe Reader for Android, and Adobe Reader and Acrobat 8.x are not affected by this issue.

Adobe Patch Schedule
http://blogs.adobe.com/asset/2011/03/background-on-apsa11-01-patch-schedule.html

Metasploit Blog Post (Explanation and Example) http://blog.metasploit.com/2011/03/adobe-flash-cve-2011-0609.html

A vdo walkthrough on using this vulnerability on Metasploit by WowZataz

3/11/2011

Becoming Admin in any blog on Blogger.com

 อันนี้เป็นช่องโหว่ที่ค้นพบโดย Nir Goldshlager  ซึ่งได้แจ้งให้ทาง Google รับรู้และได้รับการ patch เรียบร้อยแล้ว  รวมถึงGoogleได้ให้เงินรางวัลในการค้นพบช่องโหว่นี้เป็นเงิน $1337  (เพื่อจะเป็นคำว่า leet ที่มาจากคำว่า elite แปลว่า คนที่เก่งเทพ ยอดเยี่ยม ก็ว่ากันไป)

น่าสนใจที่ว่า ช่องโหว่นี้ สามารถทำให้ attacker สามารถเข้าไปเป็น admin ของ "บล๊อคไหนก็ได้" บนblogger.com  นี่ยากแล้วเพราะช่องโหว่ก็ต้องเป็นช่องโหว่ที่ผิดตรงแกนหลักของตัวเวปเลย
และช่องโหว่ตรงนี้ก็ไม่ได้อะไรมากด้วย เพียงแค่เป็นการแก้ค่า HTTP POST request เท่านั้นเอง

ขั้นตอนคร่าวๆของที่เขาทำก็คือ
 1. attacker หลอกระบบว่าจะเพิ่มนักเขียน(author) ให้กับblogของattacker แต่หากว่าสิ่งที่ทำจริงๆคือ ทำกลับกัน  คือแอดตัวattackerเอง เป็นauthorของระบบblogของเหยื่อ(victim)
 2. เมื่อ attacker ได้สิทธิ์เป็น authorแล้ว  ก็ดำเนินการต่อโดยเพิ่มสิทธ์ตัวเองให้เป็น admin  ซึ่งก็ใช้หลักการเดียวกัน  หลอกว่าหน้าblogของattackerเอง จะให้สมาชิกผู้เขียนคนนึงกลายเป็นadmin  แต่กลับทำให้ผลลัพธ์ตรงกันข้าม

มาดูขั้นแรกกันก่อน ถ้าattacker ต้องการที่จะเพิ่ม author ขึ้นมาซักคน  URL ที่มีการrequest จะเป็นแบบนี้
POST /add-authors.do HTTP/1.1
แล้วจะส่งข้อมูลไปทำนองนี้

security_token=attackertoken&blogID=attackerblogidvalue&authorsList=newauthor_email%40gmail.com&ok=Invite
ก็ธรรมดาทั่วๆไปว่า ถ้าอยากจะaddคนเพิ่ม ก็ต้องบอกก่อนว่าตัวเองได้สิทธิ์เข้ามาถึงเมนูแก้ไขนี้รึเปล่า(ผ่านทางsecurity_token) แล้วจะแก้ไขบล็อกไหน(blogID) และจะเพิ่มใครเข้าไป(authorList)

ใครจะรู้ว่าเขาจะเพิ่ม blogID ให้มีสองอันได้???   กลายเป็น
security_token=attackertoken&blogID=attackerblogidvalue&blogID=victimblogidvalue&authorsList=attacker_email%40gmail.com&ok=Invite
กลายเป็นว่า ทาง blogger จะใช้ security_token ดูว่าโอเคมีสิทธิ์เข้ามาแก้ไขได้ผ่าน
blogID ตัวแรกเอาไว้เช็คว่าตรงกับ security_token  ผ่าน
blogID ตัวที่สอง จะเป็นตัวที่ถูกแก้ไขจริง  ดังนั้นนี่ก็แทบจะเพิ่ม author โดยไม่ต้องการ credential อะไรของเจ้าของ blogนั้นๆเลย


หลังจากแก้ไข และยิงคำสั่งนี้กลับเข้าระบบ  ก็ไปเช็คemailได้ (attacker_email@gmail.com) ก็จะมีเมลล์มาให้กดเพื่อยอมรับการเป็นผู้แต่งให้กับเวปบล๊อกของ victim แล้ว

แต่ปัญหาคือ .. สิทธิ์ Author มันทำอะไรมากไม่ได้ ต้องเป็น admin..  จะทำยังไง???

ตรงนี้ก็เลยต้องทำขั้นตอนที่ 2 ต่อ
ก็ใช้หลักการวิธีเดิมเลย  เข้าระบบเป็นฐานะ attacker ทำท่าจะเพิ่มสิทธิ์ admin ให้กับใครซักคน เพื่อดูว่าจะต้องใช้ข้อมูลแบบไหนที่ต้องส่งไปให้ Blogger.com  ซึ่งก็จะได้ข้อมูลคร่าวๆตามข้างล่าง
POST /team-member-modify.do HTTP/1.1
ข้อมูลทั่วไปที่ส่งไปก็จะเป็นแบบนี้
security_token=attackertoken&blogID=attackerownblogid&memberID=tobeadmin_memberid&isAdmin=true&ok=Grant+admin+privileges
จะเห็นว่าส่วนแรกๆ ค่า security_token กับ blogID ก็เหมือนเดิม
และถ้าเราปล่อยให้มันทำไปโดยไม่ทำอะไร  มันก็จะทำให้ author ที่ชื่อ tobeadmin_memberid จะกลายเป็น adminไป  ดังนั้น การโจมตีเลยต้องโจมตีแบบนี้

security_token=attackertoken&blogID=attackerownblogid&blogID=victimblogidvalue&memberID=attackermemberid&isAdmin=true&ok=Grant+admin+privileges

 สีน้ำเงินนี่คือเพิ่มเข้ามา จะเห็นว่า ก็ใช้ blogID สองตัวเหมือนเดิม
โดยตัวแรกเป็นตัวเช็คความปลอดภัย ส่วน blogID ตัวที่สองนี่จะเป็นตัวที่ต้องการจะให้ส่งผลถึง
และสุดท้าย memberID นี่ก็ต้องหาทางหา memberID ของ attacher มาให้ได้
คนๆนั้นก็จะได้สิทธิ์ admin ได้ง่ายๆแล้ว


วีดีโอต้นฉบับ แสดงการทำช่องโหว่นี้


ย้ำอีกที  ช่องโหว่นี้ patched เรียบร้อยแล้ว



REF:
http://www.nirgoldshlager.com/2011/03/blogger-get-administrator-privilege-on.html

3/09/2011

Gmail Advanced Search

อันนี้เก่าแล้วแต่แบบพอจะใช้ก็ลืมทุกทีเลยว่าจะใช้ยังไง
มันเป็นเซ็ตของคำสั่งที่เอาไว้ช่วยหาเมลล์ใน Gmail ได้ง่ายขึ้น
คือเอาคำพวกนี้ไปใส่ในช่อง search ข้างบน gmail แล้วก็กดปุ่ม "Search Mail" ก็จะได้ผลลัพธ์ออกมา
ยกตัวอย่างเช่น
is:unread     หมายถึงเอาเฉพาะยังไม่ได้อ่านเท่านั้น
is:read         เอาเฉพาะที่อ่านแล้ว
is:starred     เอาเฉพาะที่มาร์กเครื่องหมายดาวไว้นำหน้า
is:chat         เอาเฉพาะบทสนทนา google talk/chat ขึ้นมา
is:important  เอาเฉพาะที่เป็นจดหมายสำคัญ (หมายถึงเอาเฉพาะที่อยู่ใน priority inbox) เท่านั้น

นอกจากนี้  option พวกนี้ยังใช้ร่วมกับอย่างอื่นได้เช่น

from:david          เฉพาะจดหมายจากคนชื่อ "david"
to:amy               เฉพาะจดหมายถึง "amy"
label:friends       เฉพาะจดหมายที่อยู่ในกลุ่ม "friends"
subject:dinner     เฉพาะจดหมายที่มีหัวเรื่องว่า "dinner"
cc:bonnie           เฉพาะจดหมายที่ cc ให้กับ "bonnie"
bcc:catherine      เฉพาะจดหมายที่ bcc ให้กับ "catherine"
has:attachment   เฉพาะจดหมายที่มีไฟล์แนบ
filename:jpg        เฉพาะที่มีไฟล์แนบชนิด jpg  (เปลี่ยน jpg เป็นชื่อไฟล์เต็มๆก็ได้)
list:abc@list.org เฉพาะจดหมายที่มีการส่งไปหาหรือส่งจาก mailling lists ที่ชื่อ abc@list.org
deliveredto:ellen@gmail.com เฉพาะจดหมายที่ส่งไปถึง ellen@gmail.com
before:2011/04/01  เฉพาะจดหมายมาก่อน april fools
after:2011/02/14   เฉพาะจดหมายมาหลัง valentine day
in:inbox              หาในinbox
in:spam              หาในspam box
in:trash              หาในtrash box

นอกจากนี้ operators ทั้งหลายที่ใช้ได้มี
- (hyphen)          ไว้นำหน้าสิ่งที่ไม่ต้องการค้นหาเจอ
" " (double quote)  ไว้ใช้กับคำที่ต้องการตรงตัวเป๊ะๆ  case-sensitive
OR (ใหญ่หมด)        ไว้สำหรับตรรกะ  "หรือ"
(  )  วงเล็บ             ไว้ครอบเพื่อสร้างตรรกะ


REF:
http://mail.google.com/support/bin/answer.py?hl=en&answer=7190

3/07/2011

The Real Hustle

หลังจากเริ่มอ่านหนังสือ Social Engineering (โดย Chris Hadnagy) เพิ่งจบ Forward(คำนำ) เอง
แต่แค่นั้นมันเป็นการกระตุ้นอย่างดีเลย แต่พอมาเจอคำลงท้ายคำนำที่บอกว่า คนเขียนคำนำนี่ไม่ใช่เจ้าของหนังสือ ทำให้อยากรู้ประวัติของชายที่ชื่อ Paul Wilson นี้ขึ้นมา

R Paul Wilson, จาก http://en.wikipedia.org/wiki/R._Paul_Wilson บอกว่า เป็นชาวสก็อตแลนด์ ซึ่งตอนนี้ทำงานทั้งระหว่าง UK และ USA โดยเขาเริ่มตั้งแต่แปดขวบ จากหัดฝึกมือในการซ่อนสิ่งของและย้ายของต่างๆ เพื่อเป็นนักมายากล และผันมาเป็นที่ปรึกษาทาง IT มากว่าสิบสองปี แล้วก็ย้ายมาเป็นที่ปรึกษาให้กับคาสิโนในด้านความปลอดภัย และที่สำคัญ เขาผันตัวเองมาแสดงในโชว์ซีรี่ย์ที่ฉายบนช่อง BBC Three ของอังกฤษ ในชื่อโชว์ว่า "The Real Hustle" มากได้ 9 seasons แล้ว ตั้งแต่ปี 2006 ซึ่งทำให้เรื่องต้มตุ๋นในซีรี่ย์นี้ค่อนข้างใหม่ และมีการแสดงให้เห็นถึงภัยอันตรายจาก cyber crime ด้วย


และยิ่งมีคำพูดที่พูดในทุกๆตอนของ The Real Hustle ว่า
"All the people in this show 
have been hustled for real 
and after being given their money back 
they agreed that the footage could be shown
so you can avoid being ripped off by the same scams"
แทบจะเรียกได้ว่า ทำให้ผู้ชมเห็นกันซึ่งๆหน้ากันเลยมากกว่า ว่านักต้มตุ๋นเขาตุ๋นคนอื่นจนเปื่อยได้ยังไง
คนทั่วไปเขาโดนหลอกได้ยังไง และเราจะป้องกันตัวเราเองได้ยังไง

ในโชว์นี้ TRH ไม่ได้มีแค่ Paul เป็นผู้แสดงคนเดียว แต่ในโชว์นี้จะมีคนแสดงทั้งหมดแค่ 3 คน ดังนี้
  1. Paul Wilson : The Scam Artist : ผู้เชี่ยวชาญระดับโลกในด้านการโกง เกมต้มตุ๋น และการใช้เทคนิคทางมายากล
  2. Jessica-Jane Clement : The Sexy Swidler : ดารา, นักแสดง และนางแบบ
  3. Alexis Conran : The Confidence Trickster : ดารา, นักพนัน และ นักมายากล
(picture from: BBC)
แล้วแต่ว่าแต่ละตอนนั้นจะเป็นการแสดงการต้มตุ้นแบบไหน อาจจะใช้แค่เพียงคนเดียว หรือว่าจะใช้การทำงานเป็นทีมก็ได้

ในโชว์นี้ แต่ละตอนจะแบ่งย่อยๆเป็นหลายๆส่วน  ที่เห็นหลักๆจะแบ่งเป็น
  • แสดงการต้มตุ๋นคน เพื่อให้ได้เงินมาเยอะๆ หรือของมีค่าชิ้นสำคัญๆ หนึ่งตอนของTRHจะมีแบบนี้ 3 ตอน
  • ช่วงล้วงกระเป๋า(pick pocket)  ตรงนี้จะเป็นการโชว์เทคนิคในการล้วงกระเป๋าหรือของมีค่าโดยเจ้าตัวไม่รู้
  • ช่วงท้าพนัน(proposition bet) ตอนนี้จะเป็นการใช้ทริคที่ใช้ในการท้าเพื่อนๆหรือคนในผับ เพื่อให้ได้ดื่มเหล้าฟรี
หลังจากนั่งดู TRH มาได้หลายตอน  เริ่มทำให้คิดอะไรได้ ว่าคนเราทำไมโดนหลอกง่ายกันขนาดนี้
นักต้มตุ๋นส่วนใหญ่ก็ไม่ได้ใช้อะไรไปมากกว่านี้  แค่ดึงความละโมภของเป้าหมายออกมา ใช้ความไม่รู้มาหลอกล่อ ใช้social engineeringมาทำให้เชื่อ แล้วก็เทคนิคทางมายากลนิดหน่อย ก็โดนหลอกเรียบร้อยแล้ว

ยกตัวอย่างเช่น เกมปาลูกโป่งตามงานวัด (TRH: season1 episode3) ที่จะมีการให้ปาลูกโป่งให้ถุกสองลูกจากการใช้ลูกดอก3อัน ก็จะได้รางวัล  แต่ว่า...
ใช้ความละโมภของลูกค้า โดยเอาของรางวัลมาล่อให้ดูกันตรงหน้า ลูกค้าก็จะเข้ามาติดเบ็ด
ใช้ความไม่รู้เข้ามาหลอกล่อ โดยการใช้ความน่าจะเป็นและกฎทางphysicsเข้ามาช่วย โดยการคิดว่า ความน่าจะเป็น ที่ลูกดอก3อันจะถูกเป้าหมาย2อันต่อเนื่องกัน มันไม่ใช่ 2/3(66.66%) แต่หากว่าน้อยกว่านั้น เพราะเมื่อปาถูกลูกแรกแล้ว จะมีเรื่องแรงกดดันเข้ามาด้วยที่จะต้องปาให้ถูกอีกลูกด้วยลูกดอกที่เหลืออยู่ในมือ พอมีอารมณ์มาเกี่ยวด้วยความน่าจะเป็นมันก็เปลี่ยนได้
ตอนนี้การใช้คำพูด เป็นการใช้social engineeringแบบนึง ที่ไม่ว่าจะกระตุ้นให้ลูกค้าเข้าร้านมากขึ้น หรือว่ากดดันลูกค้าให้ปาไม่ถูกยิ่งขึ้น
แต่ถึงคนๆนั้นจะเก่ง ปาแม่น แรงกดดันทำอะไรเขาไม่ได้ และอาจจะไม่ถูกคำพูดของเจ้าของร้านปั่นหัวได้  การใช้เทคนิคง่ายๆอย่างเช่น การใช้ลูกดอกทื่อๆ และการใช้ลูกโป่งที่เอาลมออกครึ่งนึง มันก็แตกยากอยู่แล้ว ทำให้เกมนี้ก็ยากที่ลูกค้าจะได้ของรางวัลอยู่แล้ว

แต่ละตอน แต่ละเทคนิค ก็คงจะมีอัตราส่วนอะไรเหล่านี้ต่างกัน
เช่นถ้าเป็นการล้วงกระเป๋า  ก็เน้นเทคนิคทางด้านมายากลมากๆ  อย่างอื่นน้อยๆ หรือแทบจะไม่มีเลย
หรือว่าถ้าเป็นการปลอมเป็นตำรวจ เพื่อที่จะให้ทำอะไรซักอย่าง  อันนี้ก็ใช้social engineeringมากกว่าอย่างอื่น และเทคนิคด้านอื่นๆก็อาจจะใช้น้อยลง

ปิดท้ายบล๊อคนี้ด้วยประโยคนี้ละกัน
อันนี้เป็นคำที่รู้สึกว่าตรงมาก กับการหลักการ ที่เป็นหัวใจหลักของ social engineer (หรือ social compliance)

"We all pre-conditioned to react in certain ways, that what's called social compliance. We look at uniforms, we don't question what that man does ..."
-- Alexis, The Real Hustle in episode 2 season 1 


http://www.bbc.co.uk/realhustle/

3/04/2011

The Weakest Link: Defeating passwords in 2010

Martin Bos a.k.a. purehate
The Weakest Link: Defeating passwords in 2010


The Weakest Link: Defeating passwords in 2010 Martin Bos a.k.a. purehate from Adrian Crenshaw on Vimeo.

เพิ่งดูวีดีโอนี้ไป  เหมือนจะได้ idea เกี่ยวกับการทำเรื่องpasswordมาอีกหน่อย
จากวีดีโอนี้ได้ว่า
- password น้อยกว่า 6 ตัวอักษร ใช้เวลาแกะไม่ถึง1 นาที  ตั้งไว้ก็เหมือนแทบจะไม่ได้ตั้ง
- password น้อยกว่า 10 ตัวอักษร ก็ยังใช้เวลานานขึ้นหน่อย แต่ก็ยังอยู่ในหลักนาที
- ใน demo, serverเขาแกะได้เป็น 7 ล้าน passwords ใน 2 ชั่วโมง (หมายถึงถอดออกมาได้แล้ว ไม่ใช่แค่ความเร็วในการแทนค่าpassword)
- ระบบนี้ใช้การถอดรหัส ด้วยการ์ดจอ (graphic card)
- การเขียนโปรแกรมให้ใช้งาน graphic card ใช้สิ่งเหล่านี้ Cuda, OpenCl, stream programming
- การย้ายไปใช้ GPU ทำงาน เมื่อมองแล้ว ถูกกว่าการใช้cloud computing ซะอีก
- โปรแกรมชื่อ oclhashcat64.bin เพื่อใช้ OpenCL ในการแกะ password ด้วย GPU
- autocrack.pl ชื่อสคริปในการแกะpassword, ทำ expanding + combining, แล้วก็แกะอีกรอบ
- เครื่องมือในวีดีโอนี้ โหลดได้จาก hashcat.net และได้รวมไว้ใน Backtrack4 แล้ว

- ระบบpasswordในบริษัท บางที่มี pattern ให้พนักงานใช้เหมือนกัน
- การทำ expanding เป็นการเอาคำมาแตกย่อยๆเพื่อให้เกิดคำอื่นที่มีความหมายขึ้น เพื่อเพิ่มคำในdictionaryต่อไป
เช่น facebook ก็จะได้ตั้งแต่ f,a,c,e,b,o,k,fa,fe,fo,af,ac,...fac,fab,fak,... ไปเรื่อยๆ
- การใช้ password ส่วนใหญ่จะตั้งให้เป็นคำมีความหมาย ดังนั้นการ expanding ก็ต้องคิดถึงเรื่องนี้ด้วย
เช่น สระตามหลังพยัญชนะ หรือว่า สระหลายๆตัวต่อกันไม่มีความหมาย ก็ไม่ต้องใช้คำแบบนั้น
- การทำ combining คือการเอาคำสองคำมาชนกัน เช่น face + book == facebook ซึ่งอาจจะเป็นคำpasswordใหม่ได้
- ดังนั้น ในdemo ถึงใช้ คำที่แกะมาได้รอบแรกที่มีความยาวไม่เกิน 6 ตัวอักษร มาเป็น wordlist แล้ว expand เพื่อให้ได้wordlistใหญ่ขึ้น  หลังจากนั้นเอา wordlist ที่ใหญ่ขึ้นแล้วนี่ มาcombine กัน เพื่อที่จะแกะpasswordที่ยาว 7-12 ตัวอักษร (6ที่แกะแล้ว + 1-6)
และสามารถทำซ้ำอีกรอบ ก็จะแกะใหญ่ขึ้นไปได้เรื่อยๆ

3/02/2011

A way to collect facebook hashes

After investigating on a link from a Facebook app, I found that the link is bitly shortened link. So, I expanded it, and I found this.

The referring links from Facebook contains Facebook hashes.
These hashes are one of the way Facebook uses to identify whether a user should following the link or not.


The mechanism, which I try to make sense of, is something like this:

 - Everyone will be assigned a hash for themselves for a day (or a session, I'm not sure.)
 - This hashes will be attached to every links that person sees on Facebook, in their session.
 - The hash is the same for every links. (only in his eyes)
 - If that person copies the link to his friends, that hash will be copied also. In a format like this:
   www.facebook.com/l.php?u=[whatever URL]&h=[hash]
 - if his friends try to open the link, Facebook will redirect it to the targeted URL immediately, without warning.
 - but if his friends send the same link to other people (not related to the first person) without changing the hash,  when that person opens the link, Facebook will show popup.

Therefore,
 the weakpoint is, if an attacker sends a link to target, containing a hash from one of target's close friends. Facebook will redirect to a malicious website without any warning.

I am at this point, not yet to think about the practical use of this scenario, but I'm sure there'll be one.

3/01/2011

Certainty vs. Uncertainty

หลังจากฟังเรื่อง ความต้องการของมนุษย์ 6 อย่าง (ของ Anthony Robbins) แล้ว
วันนี้ก็เพิ่งมาเจอคนพูดด้วย  ที่สะกิดให้เราคิดถึงคำว่า "Uncertainty" ซึ่งเป็นหนึ่งในหกข้อนั้นกับปัญหาของตัวเอง
เลยมาคิดต่อว่า ความจริง  ทุกๆปัญหาที่เราเผชิญ  ทุกๆสิ่งที่เราทำ
ต่างก็มีอัตราส่วนระหว่าง Certainty และ Uncertainty เป็นของตัวมันเองแฮะ
ก่อนอื่นต้องปูพื้นฐานให้กับคนที่ไม่เคยอ่านก่อน
สองเรื่องนี้เป็นข้อ1,2 ในสิ่งที่มนุษย์ต้องการ 6 อย่างตามเรื่องนั้น โดยสองหัวข้อนี้หมายความดังนี้

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

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

ดังนั้น จะเห็นว่า ถ้าคนเราอยากได้ทั้ง Certainty และ Uncertainty แล้วจะทำยังไงให้เหมาะสม
จุดนี้แหละที่เป็นสิ่งที่เรียกว่า ศิลปะการใช้ชีวิต
ว่าเราจะบาลานซ์ ยังไงให้เรามีทั้งสองอย่าง อยู่ในอัตราส่วนที่เหมาะสม
  ลองคิดดูว่า ถ้า...
ถ้าเราเจอแต่สิ่งที่เป็น Certainty: Uncertainty เท่ากับ 100:0
อย่างเช่น ตื่นขึ้นมานาฬิกาปลุกปลุกเวลาเดิม  อาหารเช้ากินแบบเดิมๆ ไปทำงานรถเมล์สายเดิม รถก็ติดเหมือนเดิม
ทำงานเสร็จกลับบ้านเวลาเดิม เจอรถติดเหมือนเดิม กลับมา กินข้าวแล้วก็เข้านอน
ทำไปซักปี โดยไม่มีอะไรใหม่ๆเข้ามาระหว่างนั้นเลย คงเฉาตายซะก่อนแน่ๆ (เราคงทำได้แค่อาทิตย์เดียว 555)

ในทางกลับกัน ถ้าเปลี่ยนเป็น Certainty:Uncertainty เท่ากับ 0:100 บ้างล่ะ
ชีวิตนี้ไม่มีอะไรเป็นของตัวเองเลย นาฬิกาปลุกตั้งไว้ก็ไม่ตรงเวลา  จะกินข้าวร้านประจำก็ปิดต้องไปหาร้านใหม่ เมนูอะไรก็ไม่รู้
รถเมล์สายประจำก็ไม่มา แล้วจะไปทำงานยังไง รถบางวันก็ติดบางวันก็ไม่ติดกะเวลาถึงที่ทำงานไม่ได้
จู่ๆก็งานเข้าเวลากลับบ้านก็ไม่รู้จะเมื่อไหร่  พอเลิกงานแล้วก็ไม่รู้จะไปนอนที่ไหน แล้วจะเอาเงินที่ไหนซื้อข้าวกิน
อันนี้ก็ชีวิตค่อนข้างจะท้าทายเกินไป  คนเก่งๆคงเอาตัวรอดได้ แต่ก็คงไม่กี่วัน (อันนี้เราคงทำได้ซักสามวัน)

ถ้าพูดถึงงานหนึ่งๆที่เราต้องทำแล้ว  งานนั้นๆก็จะมีระดับหรืออัตราส่วนของความแน่นอนและไม่แน่นอนต่างๆกันไป
ความแน่นอนของงานนั้น ก็คือ งานที่เรารู้อยู่แล้วว่าต้องทำยังไง เริ่มยังไง จบยังไง และระหว่างกลางทำอะไรบ้าง 
อันนี้ก็คือ ความชำนาญในงานนั้นๆ ยิ่งทำไปยิ่งรู้ ยิ่งเป็นexpert ด้านนั้น
แต่ถ้าชำนาญมากๆ รู้ว่ามันต้องทำไง และทำบ่อยๆเข้า มันก็เบื่ออยู่ดี
ดังนั้นงานก็ต้องมีความท้าทายในตัวด้วยเหมือนกัน  เพื่อเพิ่มความหลากหลาย เพิ่มสีสันให้กับคนที่ทำงานนั้น
แต่ก็ไม่ใช่ว่ามีแต่ความไม่แน่นอน(uncertainty) อย่างเดียว  เพราะถ้าเกิดคนๆนั้นไม่รู้เลยว่าจะทำยังไง
ไม่มีคนให้ถาม หาคำตอบไม่ได้ งานมันก็ไม่เดิน ไม่เสร็จ ถึงมันจะท้าทายก็ตาม

ถ้าจะแบ่งเป็นระดับคร่าวๆก็น่าจะเป็นราวๆนี้
cer:uncer
100:0 = งานง่ายๆ ทำมาแล้วเป็นสิบๆครั้ง ทำได้คล่อง แต่ก็น่าเบื่อมาก
75:25 = งานเดิมๆ แต่เป็นงานที่แตกแขนงมาจากเดิม ได้เรียนรู้อะไรใหม่เพิ่มขึ้นนิดหน่อย น่าเบื่อนิดหน่อย
50:50 = งานค่อนข้างท้าทาย เคยทำมาบางส่วน เลยมีความรู้อยู่ แต่ก็ยังขาดอยู่อีกเหมือนกัน ไม่น่าเบื่อ
25:75 = งานท้าทาย เป็นงานที่ไม่เคยทำมาก่อน มีพื้นฐานอยู่บ้าง และต้องเรียนรู้เพิ่มอีกเยอะ เหมือนหัดเรียนวิชาอะไรใหม่ๆ น่าตื่นเต้น
0:100 = งานบ้าอะไรไม่รู้จัก ความรู้ก็ไม่มี แต่ก็ยังต้องทำ จะถามใคร จะหาความรู้จากไหนก็ไม่มี งานแบบนี้ ยกธงขาวลาออกดีกว่า -_-"

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

ดังนั้น สรุปว่า คนเราแต่ละคนก็รู้ตัวเองอยู่แล้ว ว่าเราชอบความท้าทายระดับไหน
อัตราcertainty:uncertaintyที่ตัวเองชอบอยู่ระดับไหน
ดังนั้น ถ้าเราสามารถเลือกงานที่มีระดับความท้าทายตรงกับระดับความท้าทายของตัวเองได้
งานนั้นก็จะไม่น่าเบื่อ ท้าทาย เราก็จะรักที่จะทำงานนั้น ทำให้งานนั้นออกมามีคุณภาพ

ปัญหามันก็จะมีอยู่ว่า แล้วถ้าเลือกงานที่จะทำไม่ได้ล่ะ จะทำยังไง?
คำตอบก็คงจะเป็นว่า  "ถึงจะเลือกงานไม่ได้ แต่่เราก็เปลี่ยนอัตราความน่าสนใจของมันได้"
ถ้างานนั้นรู้อยู่แล้ว(certaintyเต็มร้อย) ทำซ้ำๆก็น่าเบื่อ ก็ต้องลองหาทางดัดแปลง ลองก้าวเข้าไปในส่วนที่เราไม่รู้ดู ทดลองอะไรเพิ่ม
หรือว่าเพิ่มคนอื่นเข้ามาร่วมด้วย ก็จะทำให้งานนั้นไม่น่าเบื่อได้
หรือว่าถ้างานนั้นไม่รู้เลย(uncertaintyเต็มร้อย) ก็ต้องหาทางเพิ่มcertaintyให้กับงานนั้น
ถ้าไม่รู้ก็ต้องเรียน ก็ต้องหาความรู้ ก็ต้องถามผู้รู้ หรือว่าทดลองทำให้มันได้มีประสบการณ์ขึ้นมา
ตรงนี้ก็จะทำให้เราเปลี่ยนอัตราส่วนของความท้าทาย  เพื่อให้มันดูไม่น่าเบื่อแล้ว

Perspective Change

ประสบการณ์ Perspective Change เกิดขึ้นอีกครั้งละวันนี้

วันนี้ว่าจะลองไปร้านอาหารจีนใหม่กิน  ก็ว่าเห็นร้าน Vege มันอยู่ใกล้ๆมอแล้วก็ผ่านหลายครั้งแต่ไม่เคยไปกินเลย
ก็เลยลองเข้าไปทดสอบดูวันนี้ กะว่าจะไปสั่งแบบ to go
พอเข้าไปในร้าน ก็ตกแต่งแบบจีนๆดี ค่อนข้างดูดี
ส่วนเมนุอาหารก็เหมือนๆกับร้านอาหารจีนทั่วๆไป
พอดีไปตอนราวๆบ่ายโมง ก็เลยยังทัน lunch special อยู่
เลยสั่งไปสองกล่อง เพื่อจะได้เอากลับมากินตอนเย็นด้วย
ที่กะว่าจะสั่งก็เป็น kungpao shrimp กับ fish with hot bean sauce เพราะเห็นจากในรูปเมนู (ไกลๆ) ก็ดูน่ากินดี
แถม lunch special ปกติก็มาพร้อมกับข้าวและซุป กล่องเดียวน่าจะอิ่มไปเลย

สิ่งที่เจอ: ปรากฎว่าตอนสั่ง คนรับรายการอาหารดันบอกว่า สำหรับแบบ to go เราไม่ทำซุปให้นะ???  โอเค ไม่กินก็ได้
ตอนเก็บตังค์  พอดูราคาเทียบกันกับในบิล ทำไมมันคิดภาษีเพิ่มด้วยหว่า??? ปกติอาหารไม่คิดภาษีนี่ .. นิดๆหน่อยๆ ปล่อยผ่าน
แล้วอาหารก็มาภายในเวลา 5 นาที  ร้านนี้ทำอาหารเร็วมากต้องขอชม
แต่ว่าพอกลับมาถึง
เปิดกล่องปุ๊ป  เห็นกุ้งตัวใหญ่ๆ ก็นึกว่าน่าจะอร่อยละมื้อนี้
แต่พอพลิกกุ้งไปๆมาๆ ทำไมกุ้งไม่มีเปลือกหาง?? ไม่มีเปลือกเลยด้วย?? งงๆดี ไม่เป็นไร
พอกัดเข้าไปเท่านั้นแหละ  ถึงรู้ว่านี่มันไม่ใช่เนื้อกุ้งนี่หว่า!! นี่มันลูกชิ้นกุ้งชัดๆ
ไหนมาดูปลาราดพริกซิ ว่ามันจะเป็นไง
พอมองผ่านฝาปิดใสๆของกล่องปลาเข้าไปเท่านั้นแหละ ก็อึ้งเลย
มันไม่ใช่เนื้อปลายเลยอ่ะ มันเป็นอะไรซักอย่าง คล้่ายลูกชิ้น อัดเป็นแผ่นแบนๆ แล้วทำขอบด้วยสาหร่ายให้มันเหมือนหนังปลา
อะไรกัน โดนหลอก!!  T_T
กุ้งก็ไม่แท้ ปลาก็เทียม ผักก็เยอะ  ไม่เห็นคุ้มเลยกับที่จ่ายเงินซื้อไปเลย  
จ่ายเท่าเดิมแต่ดันได้ของเทียมมาเนี่ยะ เซ็งจัด...

เมื่อกี๊กำลังโมโหกะว่าจะไปโพสต์ใน yelp ซะหน่อย แล้วกะจะให้ดาวซัก1ดาว โทษฐานหลอกเราและคนอื่นจะได้ไม่โดนไปด้วย
แต่พอค้นไปค้นมา ปรากฎว่า คนส่วนใหญ่ที่รีวิวร้านนี้ ดันให้ 5 ดาวแฮะ ส่วนคนให้ 1 ดาวน้อยมาก งง?? เป็นไปได้ไง??
เลยต้องไปลองนั่งอ่านที่เขาเขียนรีวิวมา  ก็เลยถึงบางอ้อว่า  ไอ้ร้านนี้มันเป็นร้านขายอาหารเจ
ไอ้ชื่อร้าน Vege เราก็พยายามอ่านว่า วีจี นึกว่าเป็นคำอะไรภาษาจีน
แต่ที่ไหนได้ มันหมายถึง vegetarian ที่แปลว่า เจ นั่นเอง
แล้วก็มานั่งคิดว่า  แล้วไอ้ที่เราโกรธๆไปเมื่อกี๊  นั่งบรรยายมา  ร้านมันก็ทำถูกแล้วนี่หว่า
ใส่ผักเยอะ ไม่มีเนื้อ กุ้งปลอม ปลาปลอม
เอ้อ มันก็ถูกของมันแฮะ

ไม่น่าเชื่อว่าจะหายโกรธได้เร็วขนาดนี้
และไม่น่าเชื่อว่า  มองปัญหาเดิมๆ  ด้วย perspective อีกแบบ มันก็ทำให้ปัญหามันเปลี่ยนไปได้
แน่นอนว่า ไอ้ปลาปลอม กุ้งปลอม นั่นก็ยังอยู่ และก็คงต้องทนกินไป
แต่ก็ไม่ได้จะไปโกรธอะไรใครละ  เขาทำถูกแล้ว  เรานั่นแหละผิดเองดันไปเลือกร้านนี้

อย่าได้เจอกันอีกเลย ร้านนี้ ฮ่าๆๆ

จาก คนชอบกินเนื้อเป็นชีวิตจิตใจ :)