Pages

4/19/2011

Dropbox Vulnerability

According to Derek Newton's post on "Dropbox authentication: insecure by design", I decide it to investigate the vulnerability on myself.

It seems like Dropbox uses SQLite database to store its configuration files in the users' machine.

Here are the files in ~/.dropbox folder:


One of the important files is "config.db" which contains sensitive information, but easy to be read by SQLite command without any protection. I thought it'll be password protected, or use some of encryption techniques, but it can only be used with SQLite right away. This is really like storing password in a plain text file.

Here is example of sensitive information inside config.db:


Few days ago, Neotempest did a good job on making this video to show how to imitate a Dropbox user from Windows OS to use his credential in Mac OS.

This looks really easy to do. Only 2 things are needed in this recipe, they are "SQLite" program and "config.db" That's it



I think it is time for Dropbox to rethink about its own security, before they loses their customers.

4/11/2011

Webcam on Virtualbox on Mint

 I have been struggling on making my webcam(s) works on Virtualbox 4.0 for the whole weekends.

The situation is this, I have to use Cisco WebEx to teleconference with my friends, but it only works for Windows and Mac. Inevitably I feel, I need to use Virtualbox with Windows XP as a guest OS in order to use WebEx.

This solution has been working OK for a long time. Since I am not in need of showing my face on the program, I can just use headphone and microphone. Unfortunately, I got a requirement to show my face on WebEx, and I has been frustrating since then.

Apart from all the solutions that I found on making a webcam works on Ubuntu (it's already working on my Mint 10) and make Virtualbox detects it (VBox already detected it), Here is the symptom and solution:

Some webcams use USB2.0  (and strictly 2.0) At least 3 webcams of mine do. I have a built-in webcam from my Dell m1330 (Creative Labtop Integrated webcam), VGear(RX-7), and Logitech C310 which I just bought this morning.  Each of them has different symptom, but the common symptom is whenever I plug any of them in, it shuts my Windows XP Virtualbox I currently running off! I don't even have a chance to do anything with it.

Here's come the solution.  In Virtualbox, by default, it doesn't allow you to use USB2.0. If I click on USB2.0 check box on this picture, I will face a pop up that I can click through, which seems normal until I plug my webcams in and it shuts off.



The trick is, "do what you have been warned". I carefully read the pop-up box and it says ... if you want to use USB2 capability you have to install "VirtualBox Extension Pack". So I go ahead and download the pack , although feeling a bit weird it doesn't come by default. After downloaded it, double click it for installation, restart the VM , or maybe your host computer, and you're set.



Lesson learned, "don't ignore the warning pop-up" , it can cost you your time and your money ( I did buy a new webcam for this T_T )

Lesson learned #2, "Always consult Google before buying any gadget", I found the same model but 40% cheaper on Amazon.com.

Lesson learned #3, ...  Ubuntu , Mint , VirtualBox are AWESOME!!!

Oh, current version of the extension pack, you can download here:
http://download.virtualbox.org/virtualbox/4.0.4/Oracle_VM_VirtualBox_Extension_Pack-4.0.4-70112.vbox-extpack

4/04/2011

Converting 3gp Video for Facebook on Linux

วันนี้ในที่สุดก็หาทาง convert video จากมือถือลง facebook ได้สำเร็จ
หลังจากพยายามมานาน  ไม่ว่ากี่วีดีโอก็เอามาลงfacebook ไม่เคยได้เลย
เรื่องของเรื่องคือ มือถือปัจจุบันนี่ O2 Atom Life ดันอัดวีดีโอได้แค่เป็นแบบ .3gp
ซึ่งถ้าปกติแล้ว ก็ไม่ได้น่าจะมีปัญหา

แต่! ไฟล์ .3gp นี่ Frame rate ที่ 6.7 fps (frame per second) !!

สำหรับคนที่ไม่รู้ ระบบทีวีทั่วไป จะมีการแสดงผลอยู่ที่ 24fps(dvd) หรือ 25fps(PAL) หรือ 30fps(NTSC)
แต่ไฟล์6.7 fps เนี่ย  มันก็อัพโหลดได้ เพราะ facebook มันรองรับการแสดงผลของวีดีโอที่มี frame rate < 30fps (ถ้าเกินมันจะ re-encode ให้เหลือ 30fps)

แต่ถ้าต่ำกว่าล่ะ  อันนี้ไม่มีบอก แต่ดูเหมือนกับว่ามันก็จะ encode ให้เองอีกเหมือนกัน เพื่อให้มี frame rate สูงขึ้น

ไอ้เรื่องfpsสูงแล้วลงมาต่ำเนี่ยมันเฉยๆ ไม่มีปัญหา  ..  แต่พอเอาต่ำขึ้นไปสูงนี่สิ ห่วยได้ใจจริงๆ
ยิ่งถ้าระบบการเข้ารหัสวีดีโอไม่ดี ไม่มีการ re-sampling แล้ว ภาพมันก็ออกมามั่วซั่วมากๆ ดูไม่ออกเลยว่าเป็นภาพอะไร


โอเค บ่นพอละ เข้าเรื่อง
หลังจากลองหามาหลายโปรแกรม  ในที่สุดก็เจอโปรแกรมที่ชื่อว่า avidemux  ซึ่งมันมีระบบแปลง re-sampling ภาพ เพื่อเปลี่ยน frame rate ด้วย  วิธีการใช้ก็คือ

เปิด Avidemux มา  (อันนี้ใช้ avidemux-qt เลยมีหน้าจอให้เล่น)
ทางด้านซ้ายมือจะเป็น รายการว่า อยากให้ output ออกมาเป็นอะไร
Facebook แนะนำว่าให้เป็น H.264 เราก็เลยตั้ง MP4 ซะเลย
แล้วเสียงก็เอาเป็น AAC ละกัน  และให้ไฟล์ออกมาเป็นชนิด MP4

แต่ความจริงแล้ว ตั้งอะไรก็ได้แหละ  ประเด็นสำคัญไม่ได้อยู่ตรงนี้
ประเด็นสำคัญของblog อันนี้คือการ เปลีย่น frame rate ของวีดีโอนี้มากกว่า
วิธีทำก็คือ
เข้าไปที่ Video --> Filters ...   จะได้หน้าfiltersขึ้นมา
แล้วเราก็ double-click เลือก resample fps และตั้งให้เป็น 25 (หรือ 30fps ก็ได้)
ก็เสร็จแล้วก็ กด OK และ Close เลย    จบการเปลี่ยน frame rate ของวีดีโอ

ส่วนเสียง  เนื่องจาก Facebook ขอให้เสียงเป็น 22050 หรือ 44100 Hz (ถ้าไม่ใช่สองอันนี้ จะโดนfacebookแปลงเสียงให้  .. อีกแล้ว)
ไอ้เสียงเราก็ดันอัดมา ดันแค่ 8000 Hz mono เอง   เดี๋ยวเป็นเรื่องอีกแน่ๆ 
re-sample ไว้ก่อนเพื่อความปลอดภัยดีกว่า

ก็เหมือนเดิม เข้า Audio-->Filters  แล้วก็เลือก resampling ให้เป็น 44100
อาจจะปรับตรง Gain ด้วยก็ได้ เพื่อให้เสียงดังเหมาะสม

พอตั้งค่าเสร็จแล้ว  ก็ถึงเวลา Encode
น่าแปลกที่โปรแกรมนี้ ดันไม่มีปุ่มให้กดคำว่า Encode หรือว่าปุ่มอะไรอยู่หน้าจอหลักเลย
วิธีการencode เพื่อให้ได้ไฟล์ใหม่  ต้องเข้าเมนู File --> Save --> Save Video
แล้วก็จัดการตั้งชื่อไฟล์ตามต้องการ แล้วก็จะได้เข้าสู่โหมดการ encoding
เสร็จแล้ว ก็เสร็จเรียบร้อยละ พร้อมเอาขึ้น facebook / youtube :D

4/01/2011

Spot a weird bug in Javascript API (Date function)

I have been recently writing a website with extensive javascript on it.
One of the javascript features that I use is Date object and its functions.

Today, I wrote:
var d = new Date();
alert(d.getDate() + "/" + d.getMonth() + "/" + d.getFullYear());

Despite the fact that today is April 1, 2011 (1/4/2011), I got this:
Is my computer's clock wrong?  No, it isn't.

After I checked it in w3school website, it seems like the API of Date is in the weird way.

You can ignore the time related functions which only starts the returning result with 0 (zero) and it makes sense that way.

As you can see the function "getMonth()", it returns result from 0 to 11 ???
I don't understand. Don't people think that January is month number 1 and Decumber is month number 12?

Well, someone could argue that we are programmers and programmers likes to start counting at 0 (zero).  Then, you should take a look at function called "getDate()". Why that function returning result starts with 1 !!!!

I also try "getFullYear()" and it returns ready-to-print result, as same as "getDate()".

So, Why "getMonth()" doesn't?