2013-09-27 35 views
4

我是新來解析器在Lua寫作,我有兩個簡單的問題。我有一個TCP選項作爲MSS,TCP SACK,時間戳,NOP,窗口比例的數據包,未知。我基本上試圖剖析TCP選項字段中的未知部分。我知道我將不得不使用鏈式解剖器。解剖器的TCP選項

第一個問題是,當使用鏈式解剖器解析TCP選項時,是否必須從頭開始解析所有選項。例如,我需要解析MSS,TCP SACK,....然後最終解析未知部分,或者是否有任何直接的方式讓我跳轉到未知部分。

第二個問題我已經是我所看到的代碼對許多自定義協議解剖器和,如果我需要解剖下面(例如)TCP的協議,那麼我將必須包括以下內容:

-- load the tcp.port table 
tcp_table = DissectorTable.get("tcp.port") 
-- register our protocol to handle tcp port 
tcp_table:add(port,myproto_tcp_proto) 

我的問題是,是否有我跳到協議的中間。例如在我的情況下,我想解析TCP選項。我可以直接調用tcp.options,並且解析器將從選項的開始位置開始解析。

回答

0

TCP選項是「uint8_t type; uint8_t len; uint8_t * data」結構。 我通常給常用的名字。例如getSack(),getMss()。 對於其他人,將它們保存在一個數組中(最大大小爲20)。

對於你的第二個問題,你的意思是你不關心TCP標頭,對吧?如果是這樣,只需將指針進一步移動20個字節即可訪問TCP選項。