解讀珊瑚蟲CoralQQ.ini代碼的秘密
珊瑚蟲QQ的參數配置文件 CoralQQ.ini 中有很多代碼,裡面藏著珊瑚蟲QQ的許多秘密。現把我解讀出來的部分提供給大家,不正確的地方請大家指正,也可以在文章下面的主題社區留言發表你的看法。
1、參數
所有參數區分大小寫。部分參數所代表的意義如下:
「%A」——對方所在地區。
「%a」——對方詳細地址。
「%I」——對方IP位址,無IP位址時為「0.0.0.0」。
「%N」——對方暱稱。
「%n」——對方QQ號。
「%o」——對方線上狀態返回碼之一(檢測對方是否上線。1:線上,0:離線或隱身)。
「%P」——對方連接阜號。
「%p」——換行。
「%s」——對方線上狀態返回碼之二(檢測對方上線以後的狀態。10:線上,20:離線或隱身,30:離開)。
「%t」——當前系統時間。
「%V」——對方QQ版本號,沒有測到版本號時為「<移動QQ>」。
2、運算符
「;」——註釋符,用於幫助讀懂代碼,其後整行的字元不視為代碼,不執行。
「=」——關係運算符,用於符號和值之間數值比較。
「()」——語句範圍符,用於限定關係式的範圍。它必須成對使用,否則將出錯。
「?」——判斷符,用於判斷邏輯關係。
「:」——轉折符,用於邏輯關係的轉折。
邏輯關係採用 x?y:z 格式的三目運算,即,當 x 成立時結果為 y,否則結果為 z。
3、代碼解讀
下面以「消息交談視窗傳統 IP 訊息格式」為例說明代碼的應用。
IpFormat=(%I=0.0.0.0)?(%o=0?(%V=<移動QQ>?%N 離線%p無法顯示其所在地區、IP位址和QQ版本號:%N 隱身上線或已下線%p%V)
%s=10?%N 線上%p:%N 離開%p)暫時未能顯示其所在地區和IP位址%p%V)
%s=20?%N 正在隱身或已下線%p
%s=10?%N 線上%p:%N 離開%p))%A(%a=()?:%a)%p%I(%P=0?::%P)%V
上述代碼看似複雜,其實只是簡單的三目運算,簡化如下,看得清楚些:
IpFormat=(%I=0.0.0.0)?(%o=0?(%V=<移動QQ>?%N 離線:%N 隱身上線或已下線):%s=10?%N 線上:%N 離開):%s=20?%N 正在隱身或已下線
%s=10?%N 線上:%N 離開)
第一層是(%I=0.0.0.0)? 部分,就是判斷有沒有 IP 地址,是一個三目運算,有如下兩種情況:
(1)沒有 IP,就是 %I=0.0.0.0 成立,這時執行以下代碼:「%o=0?(%V=<移動QQ>?%N 離線:%N 隱身上線或已下線):%s=10?%N 線上:%N 離開」,具體內容下面再做解釋。
(2)有 IP,就是 %I=0.0.0.0 不成立,這時執行剩下的代碼:「%s=20?%N 正在隱身或已下線
%s=10?%N 線上:%N 離開)」。
第二層之一是 %o=0? 部分,就是判斷對方是否上線,仍是一個三目運算,也有兩種情況:
(1)對方沒上線,就是 %o=0 成立,這時執行以下代碼:「%V=<移動QQ>?%N 離線:%N 隱身上線或已下線」。
(2)對方上線,就是 %o=0 不成立,這時執行以下代碼:「%s=10?%N 線上:%N 離開」。
第二層之二是 %s=20? 部分,就是判斷對方上線後的情況,仍是一個三目運算,也有兩種情況:
(1)對方不線上,就是 %s=20 成立,這時要麼對方隱身,要麼對方已經下線了,所以顯示對方「正在隱身或已下線」。
(2)對方線上,就是 %s=20 不成立,這時繼續執行「%s=10?%N 線上:%N 離開」。
第三層之一是 %V=<移動QQ>? 部分,就是判斷對方是否有 QQ 版本號,%V=<移動QQ>成立時,說明對方離線;%V=<移動QQ>不成立時,說明對方隱身上線或已下線。
第三層之二是 %s=10? 部分,就是判斷對方是否線上,%s=10 成立時,說明對方線上;%s=10 不成立時,說明對方離開。
未簡化前的代碼只是在判斷了相應的線上狀態後增加了顯示所在地區、IP 地址和 QQ 版本號等內容,用 %p 換行顯示。
好了,先到這裡吧。