# 协议分析作业3
> https://cmd.dayi.ink/pazPEUa9SKC2mnKsL_XDxQ
> 更好看的排版在这里OVO,内容完全一样
## 0. 下载安装华为ENSP
本来想从华为官网下,但好像已经消失了。

> 官网好像已经好像已经停止维护了,我从网上下了个
> 链接:https://pan.baidu.com/s/1XqSfHetChnmiaNtHpjS1oA?pwd=4455
> 提取码:4455
一直下一步就好,能不换路径就不要换,能C盘不D盘,能英文目录不中文目录。

要求好多..

然后注册设备(我也不知道有什么用)

## 1. 新建拓扑网络
### 1.1 拿出来

发现就这一个路由器带串口
(他还卡我网页上了)

### 1.2 连上线

### 1.3 启动

## 2. 开启认证
### 2.1 ①没有认证协议的配置命令如下:
> ①没有认证协议的配置命令如下:
```bash
AR1
<Huawei>sys
[Huawei]in s0/0/0
[Huawei-Serial0/0/0] link-protocol ppp
[Huawei-Serial0/0/0]ip address 10.1.1.1 255.255.255.0
AR2
<Huawei>sys
[Huawei]in s0/0/0
[Huawei-Serial0/0/0] link-protocol ppp
[Huawei-Serial0/0/0]ip address 10.1.1.2 255.255.255.0
```
R1

R2

### 2.2 ②Pap认证(AR1是验证方,AR2是被验证方)
> ②Pap认证(AR1是验证方,AR2是被验证方)
```bash
RA1
<Huawei>sys
[Huawei]aaa 启动aaa配置
[Huawei-aaa] local-user aa password cipher 11 在aaa数据库中添加aa用户,密码为11
[Huawei-aaa]quit
[Huawei] in s0/0/0
[Huawei-Serial0/0/0]ip address 10.10.10.1 255.255.255.0
[Huawei-Serial0/0/0]ppp authentication-mode pap
AR2
<Huawei>sys
[Huawei]in s0/0/0
[Huawei-Serial0/0/0]ip address 10.10.10.2 255.255.255.0
[Huawei-Serial0/0/0]ppp pap local-user aa password cipher 11
```
- PAP(Password Authentication Protocol): 密码认证协议
- cipher : 估计是加密密码存储在设备上
- 好像也只有这个模式
```bash
[Huawei-aaa]local-user dayi password ?
cipher User password with cipher text
```
- aaa:我一开始以为是随便的东西
- 但不是这样,他应该是个命令

- https://support.huawei.com/enterprise/zh/doc/EDOC1100075562/330af205
这里建了用户`dayi`密码`123`
R1

R2

### 2.3 ③chap认证(AR1是验证方,AR2是被验证方)
> ③chap认证(AR1是验证方,AR2是被验证方)
```bash
③chap认证(AR1是验证方,AR2是被验证方)
RA1
<Huawei>sys
[Huawei]aaa
[Huawei-aaa] local-user aa password cipher 11
[Huawei-aaa]quit
[Huawei] in s0/0/0
[Huawei-Serial0/0/0]ip address 10.10.10.1 255.255.255.0
[Huawei-Serial0/0/0]link-protocol ppp
[Huawei-Serial0/0/0]ppp authentication-mode chap
AR2
<Huawei>sys
[Huawei]inter s0/0/0
[Huawei-Serial0/0/0]ip address 10.10.10.2 255.255.255.0
[Huawei-Serial0/0/0]link-protocol ppp
[Huawei-Serial0/0/0]ppp chap user aa
[Huawei-Serial0/0/0]ppp chap password cipher 11
```
- CHAP: Challenge Handshake Authentication Protocol"(挑战-握手身份验证协议)
R1

R2

## 3. 抓包
### 3.1 抓包
右键,然后抓包,选串口0


然后自动打开了wireshark诶

### 3.2 分析

差不多是10秒一次请求,然后回应一下,然后一直循环
```bash
# echo req
?? ff 03 c0 21 09 a1 00 08 00 00 29 63
[ FAC ] [协议] [类型] [id] [长度] [FCS?可能是但我感觉不是]
```
- `[null]` 没找到F(flag)帧头帧尾锁定的,可能被wireshark忽略了?
- `ff` 地址(A):点到点通信端点唯一,这里就是FF
- `03` 控制字段(C):
后面的是协议
- C0 21 : LCP -Link Control Protocol (0xc021)-
- C0 23 : PAP
- C0 25 : LQR
- C2 23 : CHAP
- 80 21 : IPCP
- 这里因为是C021,也就是LCP协议,于是有了后面的LCP分析
- `09` 类型: echo-request
- 其他的类型还有
- configure-req:01
- configure-ack:02
- configure-nak:03
- configure-rej:04
- terminate-req:05
- terminate-ack:06
- code-reject :07
- protocol-reject:08
- echo-request :09
- echo-peply :10
- discard-request:11
```bash
a1 00 08 00 00 29 63
```
- `a1` ID,报文唯一标识符,也用于匹配请求确认
- `00 08` 长度,包括首部在内的报文字节数。
- `00 00 ` 数据部分
- `29 63` FCS校验,也许不是也许仍然是数据,wireshark识别为魔术包
第一个数据包是一个LCP Echo-Request包,用于请求回应以检查连接状态。
```bash
# echo reply
ff 03 c0 21 0a a1 00 08 00 01 46 41
```
- `ff` A 地址
- `03` 控制
- `c021` lcp协议
- `0a` ID
- `0008` 长度
- `46 41 ` 应该不是FCS
## 4. 在路由AR1上 关上口,然后再打开
> 在AR1(或AR2)中关闭Serial 0/0/0口后再打开,观察并总结数据报的变化过程。关闭和打开Serial口的命令是 `shutdown` `undo shutdown`
```bash
shutdown
undo shutdown
(开始捕获)
shutdown
undo shutdown
```

后面的维护链路都是一样的啦。

过程差不多这样
- 1.配置请求
- 2.配置回复ACK
- 3.配置请求
- 4.配置回复ACK,包含了自己想要进行配置的协议
- 5.CHAP 挑战验证请求 Authentication Protocol: Challenge Handshake Authentication Protocol (0xc223)
此时协议发送为0xc223
- 6.CHAP 挑战回应请求,MD5私钥加密对方发送的值和自己的密码(两方都知道的密码)(随机数+秘文)
- 7.CHAP 挑战成功,建立链接
- 8. IPCP IP Protocol: Internet Protocol Control Protocol (0x8021)
同时发送本地地址10.10.10.1
- 9. IPCP 如果本地没有IP冲突,则回应报文ACK
图中回应了正常的IP,并且已经接受。
4.图

5.图

8.图

## 5. 在AR1(或AR2)上Ping AR2(或AR1)观察抓包情况。
> (5)在AR1(或AR2)上Ping AR2(或AR1)观察抓包情况。
```bash
[Huawei-Serial0/0/0] ping 10.10.10.2
```

抓包如下:

这里还是PPP
但是
前几位是
`FF 03 0021`
其中0021表示IPV4
后面的就是IPV4的报文了。
IPV4的后面有ICMP协议的相关内容

具体解析的还是听清楚的。
## 6. (6)停止分组俘获。在俘获分组列表中(listing of captured packets)中观察并分析数据。
已经分析过了。过程如上。
## 7. 实验报告
### 7.1 通过捕获的数据分析PPP的流程;
分析PPP的流程在上文中已经写的比较清晰啦。
### 7.2 分别给出3种不同的认证情况下PPP协议报文捕获截图,并进行分析。
#### 7.2.1 没有认证协议的配置
反正就几行命令,我直接把那俩路由器删掉了,重新拉一个。
R4
```bash
sys
int s0/0/0
link-protocol ppp
ip addr 10.1.1.1 255.255.255.0
```
R5
```bash
sys
int s0/0/0
link ppp
ip addr 10.1.1.1 255.255.255.0
[开始捕获]
shutdown
undo shutdown
```

包如下:

感觉就是请求验证协议,然后没有找到协议,请求验证协议,然后没有找到协议,但是空协议也是可以`全部识别可以接受`,于是直接开始IPCP验证,交换IP后,开始ECHO

#### 7.2.2 PAP认证协议的配置
R6是验证方
```bash
<Huawei>sys
[Huawei]aaa
[Huawei-aaa]local-user dayi password cipher 123
[Huawei-aaa]quit
[Huawei]int s0/0/0
[Huawei-Serial0/0/0]ip addr 10.233.233.1 255.255.255.0
[Huawei-Serial0/0/0]ppp authentication-mode pap
(好多报错的乱码,要命)
```
R7是被验证方
```bash
<Huawei>sys
[Huawei]int s0/0/0
[Huawei-Serial0/0/0]ip addr 10.233.233.2 255.255.255.0
[Huawei-Serial0/0/0]ppp pap local-user dayi password cipher 123
[开始抓包在R6]
shut
undo shut
```

- LCP 请求PAP
- LCP 返回ACK ,同意PAP
- LCP 请求一个似乎不包含协议的包
- LCP ACK一个同意不包含协议的包
- PAP 请求(被验证端请求)
- PAP 同意(ACK) (welcome....)
- IPCP 相互请求同意
- IPCP 相互请求同意
配置协议空包:

PAP明文请求REQ:

PAP同意请求ACK:

新版wireshark截图(直接显示了密码用户名)

#### 7.2.3 CHAP认证协议的配置
> 其实前文第一次做的就是CHAP的
还是做一次吧

R8
```bash
<Huawei>sys
[Huawei]aaa
[Huawei-aaa]local-user dayi password cipher 123
[Huawei]int s0/0/0
[Huawei-Serial0/0/0]ip addr 10.233.233.1 255.255.255.0
[Huawei-Serial0/0/0]link ppp
[Huawei-Serial0/0/0]ppp
[Huawei-Serial0/0/0]ppp authentication-mode chap
```
R9
```bash
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]int s0/0/0
[Huawei-Serial0/0/0]ip addr 10.233.233.2 255.255.255.0
[Huawei-Serial0/0/0]link ppp
[Huawei-Serial0/0/0]ppp chap user dayi
[Huawei-Serial0/0/0]ppp chap password cipher 123
[Huawei-Serial0/0/0]
【打开wireshark】
shut
undo shut
```

- LCP 请求
- LCP 回应
- LCP 请求
- LCP 回应
- CHAP 发送挑战!
- CHAP 回应挑战
- CHAP 挑战成功!
- IPCP 相互发送信息
- ECHO 回应
LCP 协议配置请求:

LCP 协议配置请求2(感觉是空配置):

CHAP 挑战:

CHAP 回复:

IPCP相互:

感觉虽然有一定安全性,但是如果设备强大用户名泄露(第一次建立链接的时候暴漏了用户名),且密码较弱的情况下,暴力迅速对碰还是有可能的。
## 8.文件下载

https://pic.icee.top/blog/pic_bed/2023/09/23-9-16-4_5c79a3be-54ab-11ee-ad2a-9fc460f28a1b.zip