Wireshark解析PDCP-LTE

老師說,做一點兒就得寫一點兒,嗯。就從比較高層的PDCP做起吧~


1. 基本信息get√

  • 讀了一篇叫做“LTE協(xié)議棧軟件分析測試方法”的文章(一搜即得)。啟發(fā):可以用以太網(wǎng)代替PHY層,用wireshark來解析高層協(xié)議

“通過udpsocket編程來發(fā)送MAC層協(xié)議數(shù)據(jù)包,同時將RRC、PD-CP、RLC、MAC層的協(xié)議數(shù)據(jù)包通過udp socket編程抄送至網(wǎng)絡(luò)封包捕獲程序”

  1. 只支持ROHC負載.
  2. 支持從RLC-LTE SDUs、DCT2000 log files、packet-pdcp-lte.h中定義的UDP格式中讀取PDCP框架。還給出了一個UDP封裝的例子,pdcp_lte_logger.c
  3. Preference Settings
  • Show User-Plane uncompessed data as IP. Default is Off.
  • Show unciphered Signalling-Plane data as RRC. Default if Off.
  • Attempt to decode ROHC data. Default is Off.
  • Try Heuristic LTE-PDCP over UDP framing. Default is Off.
  • Which layer info to show in Info column. Default is RLC.
  • PDCP UE security keys. A table of (UEId, RRCKey, UPKeys) entries.
  • Attempt to decipher Signalling (RRC) SDUs. Default is Off.
    Attempt to decipher User-plane (IP) SDUs. Default is Off.

2 pdcp_lte_logger.c編譯

  • 由于已知這段代碼的作用是將PDCP封裝到UDP數(shù)據(jù)包發(fā)送給指定服務(wù)器,就在掃了一眼代碼之后就馬上開始嘗試編譯啦。
  • 原代碼中有一句#include "../wireshark/epan/dissectors/packet-pdcp-lte.h",我也很機智的把wireshark目錄改成我的wireshark-1.99.2
  • 但還是出了很多編譯錯誤比如“未知的proto_item類型”,主要是因為pdcp_lte_logger.c包含了packet-pdcp-lte.h,而后者又包含了packet-rohc.h。這兩個頭文件中都使用了“未知的”類型。這里所說的“未知”,我認為應(yīng)該是相對于單獨編譯pdcp_lte_logger.c的情景下。

--------------------so,親測有效的蠢方法如下--------------------

  • 去掉#include "../wireshark/epan/dissectors/packet-pdcp-lte.h",但這時編譯會報錯,因為少了上面說的兩個頭文件,就有很多未定義的東西,這時候看錯誤提示什么沒定義就去頭文件中找到粘貼到pdcp_lte_logger.c
  • 于是,就相當于在pdcp_lte_logger.c中加入了如下代碼段,再gcc -g -o test pdcp_lte_logger.c 編譯。
//#include "../wireshark-1.99.2/epan/dissectors/packet-pdcp-lte.h"
/* Direction */
#define DIRECTION_UPLINK   0
#define DIRECTION_DOWNLINK 1
/* Signature.  Rather than try to define a port for this, or make the port number a preference, 
frames will start with this string (with no terminating NULL */
#define PDCP_LTE_START_STRING "pdcp-lte"
/* Fixed fields.  This is followed by the following 3 mandatory fields:
   - no_header_pdu (1 byte)
   - plane (1 byte)
   - rohc_compression ( byte)
   (where the allowed values are defined above) */
/* Conditional field. This field is mandatory in case of User Plane PDCP PDU. 
The format is to have the tag, followed by the value (there is no length field, 
it's implicit from the tag). 
The allowed values are defined above. */
#define PDCP_LTE_SEQNUM_LENGTH_TAG          0x02
/* 1 byte */
/* Optional fields. Attaching this info to frames will allow you to show you display/filter/plot/add-custom-columns on these fields, so should be added if available.
The format is to have the tag, followed by the value (there is no length field, it's implicit from the tag) */
#define PDCP_LTE_DIRECTION_TAG              0x03
/* 1 byte */
#define PDCP_LTE_LOG_CHAN_TYPE_TAG          0x04
/* 1 byte */
#define PDCP_LTE_BCCH_TRANSPORT_TYPE_TAG    0x05
/* 1 byte */
#define PDCP_LTE_ROHC_IP_VERSION_TAG        0x06
/* 2 bytes, network order */
#define PDCP_LTE_ROHC_CID_INC_INFO_TAG      0x07
/* 1 byte */
#define PDCP_LTE_ROHC_LARGE_CID_PRES_TAG    0x08
/* 1 byte */
#define PDCP_LTE_ROHC_MODE_TAG              0x09
/* 1 byte */
#define PDCP_LTE_ROHC_RND_TAG               0x0A
/* 1 byte */
#define PDCP_LTE_ROHC_UDP_CHECKSUM_PRES_TAG 0x0B
/* 1 byte */
#define PDCP_LTE_ROHC_PROFILE_TAG           0x0C
/* 2 bytes, network order */
#define PDCP_LTE_CHANNEL_ID_TAG             0x0D
/* 2 bytes, network order */
#define PDCP_LTE_UEID_TAG                   0x0E
/* 2 bytes, network order */
/* PDCP PDU. Following this tag comes the actual PDCP PDU (there is no length, the PDU
   continues until the end of the frame) */
#define PDCP_LTE_PAYLOAD_TAG                0x01
enum rohc_mode
{
  MODE_NOT_SET = 0,
  UNIDIRECTIONAL = 1,
  OPTIMISTIC_BIDIRECTIONAL = 2,
  RELIABLE_BIDIRECTIONAL = 3
};
enum pdcp_plane
{
    SIGNALING_PLANE = 1,
    USER_PLANE = 2
};
typedef enum LogicalChannelType
{
    Channel_DCCH=1,
    Channel_BCCH=2,
    Channel_CCCH=3,
    Channel_PCCH=4
} LogicalChannelType;
typedef enum
{
    BCH_TRANSPORT=1,
    DLSCH_TRANSPORT=2
} BCCHTransportType;
#define PDCP_SN_LENGTH_5_BITS  5
#define PDCP_SN_LENGTH_7_BITS  7
#define PDCP_SN_LENGTH_12_BITS 12
#define PDCP_SN_LENGTH_15_BITS 15

3. 運行小有成果

./test 127.0.0.1 10000運行,這里127.0.0.1和10000分別是UDP報文的目的IP和PORT,可以根據(jù)需求設(shè)定。
最后總算是出來了一些PDCP解析的樣子~

capture
capture

具體代碼過完年再研究吧~
記下這些東西不知不覺都已經(jīng)除夕了新年快樂

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,016評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,006評論 2 374

推薦閱讀更多精彩內(nèi)容

  • NAME dnsmasq - A lightweight DHCP and caching DNS server....
    ximitc閱讀 2,898評論 0 0
  • 3.1. 介紹 現(xiàn)在,您已經(jīng)安裝了Wireshark并有可能熱衷于開始捕捉您的第一個數(shù)據(jù)包。在接下來的章節(jié)中,我們...
    wwyyzz閱讀 1,397評論 0 1
  • 即使 AlphaGo 不贏也只是時間問題, AlphaGo 的強大之處在于他的自我學習(進化)能力, 他可以不吃不...
    真鬼大師閱讀 430評論 0 0
  • iOS中什么是國際化? 根據(jù)系統(tǒng)不同的語言環(huán)境顯示相應(yīng)的語言內(nèi)容。 iOS中如何為工程添加國際化功能 comman...
    RogerHXJ閱讀 284評論 0 0