Wireshark解析PDCP-LTE

老師說,做一點(diǎn)兒就得寫一點(diǎn)兒雏蛮,嗯。就從比較高層的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負(fù)載.
  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",我也很機(jī)智的把wireshark目錄改成我的wireshark-1.99.2
  • 但還是出了很多編譯錯誤比如“未知的proto_item類型”拆吆,主要是因?yàn)?code>pdcp_lte_logger.c包含了packet-pdcp-lte.h,而后者又包含了packet-rohc.h聋迎。這兩個頭文件中都使用了“未知的”類型。這里所說的“未知”枣耀,我認(rèn)為應(yīng)該是相對于單獨(dú)編譯pdcp_lte_logger.c的情景下霉晕。

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

  • 去掉#include "../wireshark/epan/dissectors/packet-pdcp-lte.h"捞奕,但這時編譯會報(bào)錯牺堰,因?yàn)樯倭松厦嬲f的兩個頭文件,就有很多未定義的東西颅围,這時候看錯誤提示什么沒定義就去頭文件中找到粘貼到pdcp_lte_logger.c
  • 于是伟葫,就相當(dāng)于在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. 運(yùn)行小有成果

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

capture
capture

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撼玄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子墩邀,更是在濱河造成了極大的恐慌掌猛,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件眉睹,死亡現(xiàn)場離奇詭異荔茬,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)竹海,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門慕蔚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人斋配,你說我怎么就攤上這事孔飒。” “怎么了艰争?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵坏瞄,是天一觀的道長。 經(jīng)常有香客問我甩卓,道長鸠匀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任逾柿,我火速辦了婚禮缀棍,結(jié)果婚禮上宅此,老公的妹妹穿的比我還像新娘。我一直安慰自己睦柴,他們只是感情好诽凌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坦敌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪痢法。 梳的紋絲不亂的頭發(fā)上狱窘,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機(jī)與錄音财搁,去河邊找鬼蘸炸。 笑死,一個胖子當(dāng)著我的面吹牛尖奔,可吹牛的內(nèi)容都是我干的搭儒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼提茁,長吁一口氣:“原來是場噩夢啊……” “哼淹禾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起茴扁,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤铃岔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后峭火,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體毁习,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年卖丸,在試婚紗的時候發(fā)現(xiàn)自己被綠了纺且。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡稍浆,死狀恐怖载碌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情粹湃,我是刑警寧澤恐仑,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站为鳄,受9級特大地震影響裳仆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜孤钦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一歧斟、第九天 我趴在偏房一處隱蔽的房頂上張望纯丸。 院中可真熱鬧,春花似錦静袖、人聲如沸觉鼻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坠陈。三九已至,卻和暖如春捐康,著一層夾襖步出監(jiān)牢的瞬間仇矾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工解总, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贮匕,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓花枫,卻偏偏與公主長得像刻盐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子劳翰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

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

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