@@ -47,18 +47,18 @@ def filterData(self, pkt):
47
47
0x8863 : {
48
48
"code" : {
49
49
#PADI
50
- 0x09 : ( self .send_pado_packet , "PADI阶段开始,发送PADO..." ) ,
50
+ 0x09 : self .send_pado_packet ,
51
51
#PADR
52
- 0x19 : ( self .send_pads_packet , "PADR阶段开始,发送PADS..." )
52
+ 0x19 : self .send_pads_packet
53
53
}
54
54
},
55
55
#会话阶段
56
56
0x8864 :{
57
57
"proto" :{
58
58
#LCP链路处理
59
- 0xc021 :( self .send_lcp , "----------会话阶段----------" ) ,
59
+ 0xc021 : self .send_lcp ,
60
60
#PAP协议处理
61
- 0xc023 :( self .get_papinfo , "获取账号信息..." )
61
+ 0xc023 : self .get_papinfo
62
62
}
63
63
}
64
64
}
@@ -67,15 +67,15 @@ def filterData(self, pkt):
67
67
for k , v in _nMethod .items ():
68
68
_nVal = getattr (pkt , k )
69
69
if _nVal in _nMethod [k ]:
70
- _nObj = _nMethod [k ][_nVal ]
71
- print (_nObj [1 ])
72
- _nObj [0 ](pkt )
70
+ handle_func = _nMethod [k ][_nVal ]
71
+ handle_func (pkt )
73
72
74
73
75
74
#处理 PPP LCP 请求
76
75
def send_lcp (self , pkt ):
77
76
# 初始化 clientMap
78
77
if not self .clientMap .get (pkt .src ):
78
+ print ("----------会话阶段----------" )
79
79
self .clientMap [pkt .src ] = {"req" : 0 , "ack" : 0 }
80
80
81
81
# 处理 LCP-Configuration-Req 请求
@@ -102,7 +102,7 @@ def send_lcp(self, pkt):
102
102
# 处理 LCP-Configuration-Ack 请求
103
103
elif bytes (pkt .payload )[8 ] == 0x02 :
104
104
self .clientMap [pkt .src ]['ack' ] += 1
105
- print ("第 %d 收到LCP -Config-Ack" % self .clientMap [pkt .src ]["ack" ])
105
+ print ("第 %d 次收到LCP -Config-Ack" % self .clientMap [pkt .src ]["ack" ])
106
106
else :
107
107
pass
108
108
@@ -111,12 +111,14 @@ def get_papinfo(self, pkt):
111
111
# pap-req
112
112
_payLoad = bytes (pkt .payload )
113
113
if _payLoad [8 ] == 0x01 :
114
+ print ("获取账号信息..." )
114
115
_nUserLen = int (_payLoad [12 ])
115
116
_nPassLen = int (_payLoad [13 + _nUserLen ])
116
117
_userName = _payLoad [13 :13 + _nUserLen ]
117
118
_passWord = _payLoad [14 + _nUserLen :14 + _nUserLen + _nPassLen ]
118
- print ("get User:%s,Pass:%s" % (_userName , _passWord ))
119
- #self.send_pap_authreject(pkt)
119
+ print ("账户: %s\n 密码: %s" % (_userName .decode ('utf-8' ), _passWord .decode ('utf-8' )))
120
+ self .send_pap_authreject (pkt )
121
+ self .send_lcp_end_packet (pkt )
120
122
if pkt .src in self .clientMap :
121
123
del self .clientMap [pkt .src ]
122
124
@@ -125,9 +127,9 @@ def get_papinfo(self, pkt):
125
127
126
128
# 发送pap拒绝验证
127
129
def send_pap_authreject (self , pkt ):
128
- pkt . dst , pkt . src = pkt . src , pkt .dst
129
- pkt .payload = b' \x03 \x02 \x00 \x06 \x01 \x00 '
130
- scapy .sendp (pkt )
130
+ _payload = b' \x03 ' + bytes ( pkt .payload )[ 9 : 10 ] + b' \x00 \x06 \x01 \x00 '
131
+ _pkt = Ether ( src = pkt .dst , dst = pkt . src , type = 0x8864 ) / PPPoED ( version = 1 , type = 1 , code = 0x00 , sessionid = SESSION_ID ) / PPP ( proto = 0xc023 ) / _payload
132
+ scapy .sendp (_pkt )
131
133
132
134
# 发送lcp-config-ack回执包
133
135
def send_lcp_ack_packet (self , pkt ):
@@ -211,18 +213,19 @@ def send_lcp_req_packet(self, pkt):
211
213
212
214
# 发送 lcp-echo-req包
213
215
def send_lcp_echo_request (self , pkt ):
214
-
215
216
_payload = b'\x09 \x00 \x00 \x08 ' + b'\x25 \x5f \xc5 \xcb '
216
217
lcp_req = Ether (src = pkt .dst , dst = pkt .src , type = 0x8864 ) / PPPoED (version = 1 , type = 1 , code = 0x00 , sessionid = SESSION_ID ) / PPP (proto = 0xc021 ) / _payload
217
218
scapy .sendp (lcp_req )
218
219
219
220
#发送lcp-termination会话终止包
220
221
def send_lcp_end_packet (self , pkt ):
221
- _pkt = Ether (src = pkt .dst , dst = pkt .src , type = 0x8863 ) / PPPoE (version = 0x1 , type = 0x1 , code = 0xA7 , sessionid = 0x01 , len = 0 )
222
+ _payload = b'\x05 \x02 \x00 \x04 '
223
+ _pkt = Ether (src = pkt .dst , dst = pkt .src , type = 0x8864 ) / PPPoE (version = 0x1 , type = 0x1 , code = 0x00 , sessionid = SESSION_ID ) / PPP (proto = 0xc021 ) / _payload
222
224
scapy .sendp (_pkt )
223
225
224
226
#发送PADS回执包
225
227
def send_pads_packet (self , pkt ):
228
+ print ("PADR阶段开始,发送PADS..." )
226
229
#寻找客户端的Host_Uniq
227
230
_host_Uniq = self .padi_find_hostuniq (pkt .payload )
228
231
_payload = b'\x01 \x01 \x00 \x00 '
@@ -236,6 +239,7 @@ def send_pads_packet(self, pkt):
236
239
237
240
#发送PADO回执包
238
241
def send_pado_packet (self , pkt ):
242
+ print ("PADI阶段开始,发送PADO..." )
239
243
# 寻找客户端的Host_Uniq
240
244
_host_Uniq = self .padi_find_hostuniq (pkt .payload )
241
245
_payload = b'\x01 \x02 \x00 \x07 akkuman\x01 \x01 \x00 \x00 '
0 commit comments