發表文章

目前顯示的是有「C++」標籤的文章

Decompressing vmlinux from vmlinuz

Find the gzip signature: # od -A d -t x1 vmlinuz | grep '1f 8b 08' 0018016 48 8d 83 e0 c7 2e 00 ff e0 1f 8b 08 00 00 00 00 Decompress data after that: # dd if=vmlinuz bs=1 skip=18025 | zcat > vmlinux Note that 18025 = 18016 + 9 Reference: http://www.codeguru.com/forum/showthread.php?t=415186

Embedded System Final Project

圖片
Embedded System Fianl Project, utilizing 1. Qt-Embedded 2. libchewing (big thanks to Jserv) 3. SQLite 4. QtWebkit 5. ibus-boshiamy Sources can be found at github Here's a video which I demonstrated on our final project meeting. (Sorry for the bad quality)

cbase

之前寫了一個簡單的進制轉換程式 叫做cbase。不過那時候架構沒有設計的很好,程式碼也很亂,所以我暑假閒著沒事就把他重寫了一次,這次程式碼短得多了,也比較靈活。 記得那陣子好像常常遇到要對數字做不同的基底變換,所以我才會想寫這樣的程式。cbase是一個非常簡單的程式,估計有稍微學過程設的大家都能瞬間寫出來,所以在這裡現醜了XD。 源碼丟在 github ,然後我也順便包了個deb包,要用的自行下載吧XD 其實cbase主要目的就是執行數字間的任意基底變換,比如說 IP IP其實可以看成是256進位的數字,所以如果要把他轉10進制(這可以做什麼我應該不用多說了): ~$ cbase -i 256 -o 10 -d . 119.160.246.241 2007037681

cbase - 快速進制轉換

以下是自己寫的小程式cbase介紹,主要是用來進行數字的基底轉換,比如說10進位轉16進位。但是比較特別的是,cbase可以支援到256進位,當然有特殊的方法來分辨大於36進位的數字,前36進位是利用,0-9 a-z來表示的。至於寫這個程式的動機呢?因為假如在Linux上用iwconfig設定無線網路的話,WEP密碼必須使用16進位,這時候如果自己轉就很麻煩了。可是用cbase: cbase -i a -o 16 WEP_KEY 輸出: WEP_KEY (a) = 5745505f4b4559 (16) 然後就可以很方便的得到16進位字串了! 查某個字母的ASCII code也很方便,decode unicode也可以 cbase -i a -o 10 A #get ascii cbase -i 16 -o a -do '%' -so [unicode_string] #decode unicode 輸出: A (a) = 65 (10) 還有另一個動機是,看到有人可以把網址加上@然後後面接十進位IP,就可以忽略前面的網址,導向後面那個十進位IP所在的位址。於是我想如果可以把十進位的IP先轉回正常IP,那我就可以先知道會被連到哪裡啦?(當然逆向也可以) 舉例: cbase -i 10 -o 256 2356152436 這樣會輸出: 2356152436 (10) = 140.112.008.116 (256) 於是IP就被還原了,這是因為其實IP可以看成一個256進位的數字所以可以這樣操作,至於詳細的用法自己看下面吧~ 有人會想要用這個程式嗎?如果要的話回應一下吧,我再釋出原始碼。 是說這是我第一次寫比較完整的命令列程式,程式其實很簡單的,如果其他大大覺的我寫很爛的話,請你給我些意見吧XD 然後下面的help list可能有很多文法錯誤XDD 我完全靠殘餘的語感。 Usage : cbase [ - i inbase ] [ - o outbase ] [ options ] string1 string2 . . . Argumets & options : - i [ inbase ] ...