天天看點

CMCC portal 協定wireshark 抓包分析

環境介紹:

認證伺服器

192.168.13.253

AC

192.168.13.252

抓包過程:

3、運作wireshark選取網卡,例我的認證伺服器所使用的網卡為本地連結;如圖:

4、過濾portal||radius封包:

Portal 認證流程

封包字段說明

Ver

Ver字段是協定的版本号,長度為 1 位元組,目前定義的值為 0x01。

Type

Type字段定義封包的類型,長度為 1 位元組,目前其值的定義如表6-1。

封包類型

方向

含義

REQ_CHALLENGE

0x01

Client----->Server

Portal Server 向AC裝置發送的請求Challenge封包

ACK_CHALLENGE

0x02

Client<-----Server

AC裝置對Portal Server請求Challenge封包的響應封包

REQ_AUTH

0x03

Portal Server向AC裝置發送的請求認證封包

ACK_AUTH

0x04

AC裝置對Portal Server請求認證封包的響應封包

REQ_LOGOUT

0x05

若ErrCode字段值為0x00,表示此封包是Portal Server向AC裝置發送的請求使用者下線封包;若ErrCode字段值為0x01,表示該封包是Portal Server發送的逾時封包,其原因是Portal Server發出的各種請求在規定時間内沒有收到響應封包。

ACK_LOGOUT

0x06

AC裝置對Portal Server請求下線封包的響應封包

AFF_ACK_AUTH

0x07

Portal Server對收到的認證成功響應封包的确認封包;

NTF_LOGOUT

0x08

Server --> Client

使用者被強制下線通知封包

REQ_INFO

0x09

Client --> Server

資訊詢問封包

ACK_INFO

0x0a

資訊詢問的應答封包

Pap/Chap

Pap/Chap字段定義此使用者的認證方式,長度為 1 位元組,隻對Type值為 0x03 的認證請求封包有意義:

Chap方式認證---值為0x00;

Pap  方式認證---值為0x01;

Rsv

Rsv目前為保留字段,長度為 1 位元組,在所有封包中值為 0;

SerialNo

(1)         SerialNo字段為封包的序列号,長度為 2 位元組,由Portal Server随機生成,Portal Server必須盡量保證不同認證流程的SerialNo在一定時間内不得重複,在同一個認證流程中所有封包的SerialNo相同;

(2)         Portal Server發給AC裝置的封包

a、  由Portal Server發出的Type值為1、3的請求封包其SerialNo都是随機生成數;

b、  由Portal Server向AC裝置發出的Type值為5的(REQ_LOGOUT)封包其SerialNo值分兩種情況:當ErrCode為0 時(請求使用者下線封包),SerialNo值為一個随機生成數;當ErrCode為1時,SerialNo值可能和Type值為1或3的封包 (請求Challenge逾時, 或請求認證逾時)相同,具體要看是請求Challenge逾時還是請求認證逾時;

c、  由Portal Server向AC裝置發出的認證成功确認封包(Type值為7的封包)SerialNo和其發出的相應請求封包的SerialNo相同;比如對于Type值為7的封包其SerialNo值和Type值為3的請求認證封包相同;

(3)         每一個由AC裝置發給PortalServer的響應封包的SerialNo必須和PortalServer發送的相應請求封包的SerialNo一樣,否則PortalServer會丢掉從AC裝置發來的響應封包; 比如Type值為2的封包其SerialNo值必須和Type值為1的封包相同,Type值為4的封包其SerialNo值必須和Type值為3的封包相同,Type值為6的封包其SerialNo值必須和Type值為5的封包相同。

ReqID

(1)         ReqID字段長度為 2 個位元組,由AC裝置随機生成,盡量使得在一定時間内ReqID不重複。

(2)         在Chap認證方式中:

a、  AC裝置在Type為2 (ACK-CHALLENGE) 的請求Challenge響應封包中把該ReqID的值告訴Portal Server;

b、  在Type值為3、4、7 ( REQ-AUTH, ACK-AUTH, AFF-ACK-AUTH ) 的封包中ReqID字段的值都和Type值為2的封包中此字段的值相同;

c、  在Type值為 5 (REQ-LOGOUT) 的封包中,若封包表示請求Challenge 逾時則此字段值為0 ;若封包表示請求認證逾時則此字段值和Type值為2 (ACK-CHALLENGE)的封包中此字段的值相同;

(3)         在Pap認證方式中,此字段無意義,其值為0;

(4)         在Type值為 5(REQ-LOGOUT) 的封包中,若封包表示請求下線時則此字段值為0 ;

(5)         在Type值為1、6 (REQ-CHALLENGE , ACK-LOGOUT) 的封包中,該字段均無意義,值都為 0;

UserIP

       UserIP字段為Portal使用者的IP位址,長度為 4 位元組,其值由Portal Server根據其獲得的IP位址填寫,在所有的封包中此字段都要有具體的值;

UserPort

      UserPort字段目前沒有用到,長度為 2 位元組,在所有封包中其值為0;

ErrCode

ErrCode字段和Type字段一起表示一定的意義,長度為 1位元組,具體如下:

(1)         對于Type值為1、3、7的封包,ErrCode字段無意義,其值為0;

(2)         當Type值為 2 時:

ErrCode=0,表示AC裝置告訴PortalServer請求Challenge成功;

ErrCode=1,表示AC裝置告訴PortalServer請求Challenge被拒絕;

ErrCode=2,表示AC裝置告訴PortalServer此連結已建立;

ErrCode=3,表示AC裝置告訴PortalServer有一個使用者正在認證過程中,請稍後再試;

ErrCode=4,則表示AC裝置告訴PortalServer此使用者請求Challenge失敗(發生錯誤);

(3)         當Type值為 4 時:

ErrCode=0,表示AC裝置告訴PortalServer此使用者認證成功;

ErrCode=1,表示AC裝置告訴PortalServer此使用者認證請求被拒絕;

        ErrCode=3,表示AC裝置告訴PortalServer有一個使用者正在認證過程中,請稍後再試;

        ErrCode=4 ,表示AC裝置告訴PortalServer此使用者認證失敗(發生錯誤);

(4)         當Type值為 5 時:

ErrCode=0,表示此封包是Portal Server發給AC裝置的請求下線封包;

ErrCode=1,表示此封包是在Portal Server沒有收到AC裝置發來的對各種請求的響應封包,而定時器時間到(即逾時)時由PortalServer發給AC裝置的封包;

(5)         當Type值為 6 時:

ErrCode=0,表示AC裝置告訴PortalServer此使用者下線成功;

ErrCode=1,表示AC裝置告訴PortalServer此使用者下線被拒絕;

ErrCode=2,  表示AC裝置告訴Portal Server此使用者下線失敗(發生錯誤);

(6)         對Type為REQ_INFO時,ErrCode無意義,其值為0;

(7)         對Type為NTF_LOGOUT時,ErrCode含義如下:

下線

(8)         對Type為ACK_INFO時,ErrCode含義如下:

處理成功,但不表示全部消息都被擷取了,有多少資訊被獲得應通過屬性來判斷,詳見下文

1

功能不支援,表示裝置不支援這一功能

2

消息處理失敗,由于某種不可知原因,使處理失敗,例如詢問消息格式錯誤等。

本文轉自 msft 51CTO部落格,原文連結:http://blog.51cto.com/victorly/1845786,如需轉載請自行聯系原作者

繼續閱讀