Sunday, October 10, 2010

Wednesday, September 8, 2010

Arduino with two 7x5 LED matrix

Using Arduino with 74HC595 and 74HC238 to control the LED matrix

Saturday, July 31, 2010

DLNA firewall setup

notes to self... to setup DLNA...
ipfw add pass all from any to 239.0.0.0/8 in via re0 keep-state
ipfw add pass all from any to 239.0.0.0/8 out via re0 keep-state

route add -net 239.0.0.0 -netmask 255.0.0.0 -iface re0

Sunday, July 11, 2010

MSN "now playing" plugin for foobar2000 (version 0.6)

This is version 0.6 of the plug-in. Fixed the bug that MSN displayed garbage when foorbar was closed during music playing.

This plug-in is for the foobar2000 music player. It sends the song information to MSN Messenger for display.

The component is available here.

Save the file under the components directory of foobar2000 (e.g. C:\Program Files\foobar2000\components) and restart the program. There will be a new item added under the Playback menu. Select the format of info that you want to show on MSN. Also remember to turn on the "Show what I'm listening to" feature on your MSN Messenger.

The C++ source code is also available. You will need to download the foobar2000 SDK in order to build it.




Thursday, June 17, 2010

Android Safe 1.0.2




Android Safe 1.0.2 released today. No new feature or bug fix. This release is mainly for speed improvement.

I picked to implement an encryption program as my first Android application because (besides the fact that I have a real need to replace my Palm application MemoAES) I need to have an excuse to play with native programing on Android! :P I also picked a secure and computationally expensive key generation method: PBKDF2 with 1024 rounds (!) of iteration and a 256-bit key output for AES.

Both Android Safe version 1.0.0 and 1.0.1 used pure Java implementation. The Dalvik VM isn't really that bad. The key generation process took around 3 seconds. But since each of the notes in Android Safe is encrypted with different salt, that essentially translate to the fact that they are using different keys. So each open, save, and import (with different password) action requires at least one call to the PBKDF2 algorithm. The user experience is acceptable, but not that good.

Using Android NDK, the PBKDF2 part is rewritten with JNI (in C) for version 1.0.2. The speed improvement is over five-folds. Below is some test data I collected when testing the algorithm with test vectors found in RFC3962. Each test executed three times with the average taken as the result.




PBKDF2 Speed Tests using test vectors from RFC3962.
(Pass phrase = "password". Salt="ATHENA.MIT.EDUraeburn")
1200 iterations 2 iterations
128-bit JNI
330ms
3ms
128-bit Java
1864ms
9ms
256-bit JNI
632ms
11ms
256-bit Java
3495ms
97ms


Sunday, June 13, 2010

Android Safe



Encrypt notes with 256-bit AES. Keys are based on PBKDF2 with 1024 iterations and 256-bit salt. Export/Import encrypted notes to external storage. Share the encrypted messages via emails. Online tool available to decrypt the message without using Android.