2011/09/30

Ubuntu 安裝 TightVNC 之後的按鍵對應問題 - Key "d" to minimizes all windows

用別人裝好的 Ubuntu
想說 懶得跑 (人太懶)
裝個 VNC 來用:
# apt-get  install  tightvncserver

裝完了

# vncserver
輸入兩次密碼 她告訴我 可以連線了!
Yeah~

開了一個 console 來玩
先看看到底是哪個 user:
# id
疑~ 我的 console 怎不見了?  @@""
嗯~ 被縮小到最下面去了? 怎回事
還原 console,換個姿勢,再來一次...
# id
耶~ 還是被縮小....  搞什麼
但是 直接到機器前開console 就沒這問題
到底是?    看到x喔?

去 google了下
看來 還不少人有同樣問題?
結果 去 GNOME 的 系統設定裡面找
/系統設定值/個人/鍵盤捷徑鍵/ 往下拉 拉到 [視窗管理員] 裡面的

2011/09/29

[警告][新聞] 臉書會在你的電腦裡偷放「哭泣」這種檔案


*** 警告: 看這篇文章, 會讓你哭泣!
哭點太低,笑點太高的人,請不要往下繼續閱讀!!


-- 這不是分隔線 --


Ref:
http://news.chinatimes.com/realtime/110111/112011092801000.html
2011-09-28 【中廣新聞/郭希誠】
.....
臉書會在你的電腦裡偷放「哭泣」這種檔案,掌握用戶的瀏覽習慣,再用這些資料一年賺取好幾十億英鎊的廣告費。

......
再跟朋友討論過後,決議 所謂的 「哭泣」這種檔案 就是所謂的 Cookie !
每個 browser 都支援 cookie...
Cookie 也不是只有 FaceBook有再放
利用用戶Cookie資料賺廣告費的 FaceBook 也不是第一個,更不可能是最後一個
可以在瀏覽不同網站時,在自己在瀏覽器網址列輸入:
javascript:void(alert(document.cookie))
按下 Enter 鍵之後, 就可以看到 該網站給你塞的 cookie 有哪些
基本上  Google 的 cookie 是會比 FaceBook更多更長
而且 Google 自己就有自己的廣告系統
怎不見這位高竿的駭客 來控告 Google?

這些都是次要的
重點是.....  第一次見到有人 把 Cookie 翻譯成 哭泣
終於理解之後, 真的會讓人想哭泣.....
中廣.....  你們用的是什麼x記者.....
要寫資訊相關的報導,請找IT業界出身的好嗎?
就算不是本科系出身的,也請找個有在玩電腦的... OK!?

哭泣.....
哭泣哭泣~~~

不過 好在 沒被聰明的記者叫去吃屎!
google "instaanmese"

2011/09/27

Mifare 悠遊卡 遭破解?

今天大頭條: 悠遊卡 被破解

很奇怪的是.....
悠遊卡(Mifare) 其實 早在三年前 就被破解了:
http://tw.myblog.yahoo.com/Marlon-Ho/article?mid=5493&prev=5502&next=5431&l=f&fid=15
2008/04/07

去年 還有現場實際 Demo 修改金額:
http://www.ithome.com.tw/itadm/article.php?c=63075
「在駭客年會中,臺大團隊則將一張實際的悠遊卡,從正100多元,將餘額更改成為負五百多元。 」
不知道 這樣`修改` 有沒有刑責問題?
非正常管道加值 犯法! 我也認可!
非正常管道扣款 這? 需要抓這些添榮人去關嗎?

09/29更新:
已經有報紙 直接公布該Cracker真實姓名及相關資料了:
http://tw.news.yahoo.com/article/url/d/a/110928/2/2zilf.html
http://tw.news.yahoo.com/article/url/d/a/110928/78/2zhwz.html

〔自由時報記者劉慶侯、張文川、姚岳宏、謝武雄、沈繼昌/綜合報導〕悠遊卡破解者吳東霖年僅廿四歲,連科大一年級都沒讀完的年輕人,一退伍就被負責資安防護的「敦陽科技」所延攬,專責防護網站漏洞,不但是知名駭客,也是資安專家。

記者陳金松、徐尉庭、廖炳棋/台北報導
大學機械系一年級肄業的吳東霖,自學變成電腦駭客,不但被上市公司延攬擔任資安顧問,負責到各大網站「除錯」,還成為國內首位破解悠遊卡加值系統的駭客。

1. 『國內首位破解悠遊卡加值系統的駭客』這點有誤! 請參考上述資料!
2.  人家還沒經過審判定讞,可以這樣公開人家的姓名嗎?
3.  把錢改少,或是非正常加值後消費一次兩次;你說你是在"測試" 還說得過去,這...六次?


HIT(Hacks In Taiwan Conference) 已經出來澄清了:
http://blog.hitcon.org/2011/09/blog-post.html
該文提到的內容比較詳細,可以參考看看

但是,這些 都是 Google的到的東西
不知道 坐領高薪的報社總編輯 都在做些什麼事?
放到過期發霉的事件,還放到報紙頭版報導?

用C 連結 MySQL 範例

#include "stdio.h"
#include "stdlib.h"
#include "mysql.h"

#define HOST "127.0.0.1"
#define USER "root"
#define PASSWORD "654321"
#define DB "test"

main()
{
        MYSQL mysql;
        MYSQL_RES *result;
        MYSQL_ROW row;

        char number="";
        char name[50]="";
        char sex="";
        int age;
        float pay;

        char query[200]="";
        char delete[200]="";
        char insert[400]="";
        char update[200]="";
        float max_pay;

        mysql_init(&mysql);
        if ( !mysql_real_connect(&mysql,HOST,USER,PASSWORD,DB,0,NULL,0) ) { /*连接*/
                printf("connect mysql fail!!!\n");
                exit(0);
        }

        strcpy(query,"SELECT `FNUMBER`, `FNAME`, `FSEX`, `FPAY` FROM `PAY` WHERE `FAGE` > 20"); /*查询*/
        if (mysql_query(&mysql,query) != 0) { /*执行SQL语句*/
                printf("SELECT ERROR!!!\n");
                mysql_close(&mysql);
                exit(0);
        }
        result = mysql_store_result(&mysql);
        while ( ( row = mysql_fetch_row(result) ) ) {
                strcpy(number,row[0]);
                strcpy(name,row);
                strcpy(sex,row);
                pay = atof(row);
                if ( pay > max_pay )
                  &nbMYSQL。sp;     max_pay=pay;
                printf("number: %s\t name: %s\t sex: %s\t pay: %f\t\n",number,name,sex,pay);
        }
        printf("max_pay:%f\n",max_pay);
        mysql_free_result(result);

        sprintf(delete,"DELETE FROM `PAY` WHERE `FPAY` = %f",max_pay);
        if (mysql_query(&mysql,delete) != 0) {
                printf("DELETE ERROR!!!\n");
                mysql_close(&mysql);
                exit(0);
        }
        else
                printf("DELETE SUCCEED!!!\n");

        strcpy(insert,"INSERT INTO `PAY` (`FNUMBER`, `FNAME`, `FSEX`, `FAGE`, `FPAY`) VALUES ('000002', 'Aaron', 'men', 30, '6000.00')");
        if (mysql_query(&mysql,insert) != 0) {
                printf("INSERT ERROR!!!\n");
                mysql_close(&mysql);
                exit(0);
        }
        else
                printf("INSERT SUCCEED!!!\n");

        strcpy(update,"UPDATE `PAY` SET `FPAY`=`FPAY` + 1000 WHERE 1");
        if (mysql_query(&mysql,update) != 0) {
                printf("UPDATA ERROR!!!\n");
                mysql_close(&mysql);
                exit(0);
        }
        else
                printf("UPDATA SUCCEED!!!\n");
        mysql_close(&mysql);
}

/*
Ref:
http://dev.mysql.com/downloads/connector/c
*/

2011/09/07

Dragon of Atlantis X-S3-AWS SHA1 保護 被破解

剛在 Google 找資料
找到某篇 UserScript/GreaseMonkey 網站
看到 DOA(Dragon of Atlantis) 放在 HTTP Header 的 SHA1保護 被破解了

看 source,其X-S3-AWS內容編碼方式 是:
"Dracunculiasis" + parmStr + "LandCrocodile" + url  + "Bevar-Asp"

所以 如果 我要送 這參數(parmStr):
march%5Bunits%5D=%7B%22ArmoredTransport%22%3A50%2C%22Halberdsman%22%3A1500%2C%22Longbowman%22%3A2300%2C%22BattleDragon%22%3A266%7D&march%5Bx%5D=190&march%5By%5D=144&user%5Fid=6490988&%5Fsession%5Fid=996be29c8f0f9dd3f98979a2cb7b492a&march%5Bgeneral%5Fid%5D=800195477&timestamp=1315370081&%5Fmethod=post&march%5Bmarch%5Ftype%5D=attack&dragon%5Fheart=59d0b6965197b324b5f1078b317210fb58c975f8&version=14

送到 url=http://realm141.c10.castle.wonderhill.com/api/cities/800011967/marches.json
那麼 就必須把 下面這堆 用 SHA1 編碼 放進 "X-S3-AWS" 擺在 HTTP Header 中 一起送出!
Dracunculiasismarch%5Bunits%5D=%7B%22ArmoredTransport%22%3A50%2C%22Halberdsman%22%3A1500%2C%22Longbowman%22%3A2300%2C%22BattleDragon%22%3A266%7D&march%5Bx%5D=190&march%5By%5D=144&user%5Fid=6490988&%5Fsession%5Fid=996be29c8f0f9dd3f98979a2cb7b492a&march%5Bgeneral%5Fid%5D=800195477&timestamp=1315370081&%5Fmethod=post&march%5Bmarch%5Ftype%5D=attack&dragon%5Fheart=59d0b6965197b324b5f1078b317210fb58c975f8&version=14LandCrocodilehttp://realm141.c10.castle.wonderhill.com/api/cities/800011967/marches.jsonBevar-Asp
所以......
X-S3-AWS: 61056ea58077cfc85377896296130b5f43849862

重點是.....
這傢伙 到底是怎麼找出來這規則的?
實在是好崇拜~ 鳥不起!!

using RANDOM number in `expect` 在expect中 使用亂數

expect 超好用
尤其是 加上 autoexpect
根本就是 Office 裡的 巨集錄製 功能
只要你照著做一次 她就幫你做好整個架構
你只需要做些小修剪 就可以上線了

但是 很討厭的是
expect 裡面 沒有亂數(random number)功能
所以 我有些地方 想要他做些不同的改變 就很麻煩

我試著 用 bash 裡的變數 $RANDOM 去給 expect 用:
#!/usr/bin/expect -f
set var_r $env(RANDOM)
send "rand=$var_r.\n\r"
但是 RANDOM 不算是 環境(ENVironment)變數
所以 會出這種錯誤:
can't read "env(RANDOM)": no such variable
    while executing
"set var_r $env(RANDOM)"
    (file "xxx.exp" line 2)
解決辦法: 先 export/declare 這個變數 讓環境變數中 有叫做 'RANDOM' 的東西:
# export RANDOM
# xxx.exp
rand2=18835. 
看起來 問題似乎解決了! 真Happy...
再來玩一次!
# xxx.exp
rand2=18835.
@@"
阿不是亂數嗎? 怎每次出來結果都一樣?
原來... 我們 export RANDOM 時, 只給他一個叫RANDOM的變數名跟當下的變數值
他沒法像bash 給你的 $RANDOM 一樣 每次都會丟不同的數值出來
變成 每次要執行 .exp 檔之前 要先自己想辦法 export RANDOM 一次!
而且 如果 .exp 用到$RANDOM不只一次 .... 每個人抓到的亂數都會是一樣的
這.....
只好換跑道..........

轉向 "system" 命令下手!
system 後面 就直接接 你要 shell 做的事情 就對了
所以 就直接這樣亂搞:
system "export RANDOM"
哈哈... 結果,子程序(shell)的環境變數,無法上傳回去給老爸!
所以......
換個方向 再來亂搞:
system "/bin/echo $RANDOM"
沒想到.....  出現這訊息:
can't read "RANDOM": no such variable
    while executing
"system "/bin/echo $RANDOM ""
    (file "xxx.exp" line 2)
嗯... expect 的變數名 也都用 "$" 開頭
看樣子 他是以為我要叫他把 expect 的變數印(echo)出來?
好吧~ 給他個 escape  再來亂搞:
system "/bin/echo \$RANDOM"
Hahaa... 亂數終於出現!!
但是.... system echo出來的東西 我要怎樣拎回 expect 裡用?
這樣玩看看?
set var_r [system /usr/bin/expr \$RANDOM]
=_="
直接在銀幕上印一個亂數
但是 我要處理的變數 竟然直接回空字串給我

好吧~
再換跑道... 繼續亂搞:
set var_r [exec /bin/echo \$RANDOM]
結果:
rand=$RANDOM.
~_~"
大哥~ 我是要你  echo $RANDOM 這個變數出來! 不是要你印 "$RANDOM" 這幾個字出來
真是欠人罵!

後來想想, exec 指令 應該是叫用 execle 這類函式,所以老爸的環境不會被複製做去
這下怎處理? =_="

exec 生了個 沒有 RANDOM 的環境出來
那麼 我就硬生一個 有RANDOM的環境出來給他 不就好了?
所以......

HASH MD5/SHA online 加密/解密 小tools