Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Request Package 字段没有大于3的包 #1

Open
hephyr opened this issue Jul 24, 2019 · 4 comments
Open

Request Package 字段没有大于3的包 #1

hephyr opened this issue Jul 24, 2019 · 4 comments

Comments

@hephyr
Copy link

hephyr commented Jul 24, 2019

碰到个路由器发送的 Request Package 字段并没有出现大于3的情况,为什么要这么判断?

# 当 Req 请求里面包含除 MRU 和魔术数以及 AuthProto 之外的字段时,返回 Rej
if len(pkt.payload.options) > 3:
print("发送 LCP-Config-Rej 包")
self.send_lcp_reject_packet(pkt)
print("发送 LCP-Config-Req 包")
self.send_lcp_req_packet(pkt)
else:
print("发送 LCP-Config-Ack 包")
self.send_lcp_ack_packet(pkt)

另外,代码中指定 iface 只针对了 sniff,sendp 并没有指定网卡。

@akkuman
Copy link
Owner

akkuman commented Jul 24, 2019

判断是因为rfc规范是这么写的,当出现服务器不接受的字段,就得返回rej,然后一直得需要客户端发送的字段服务器都能接受才通过。具体可以看我博客上的文章。
sendp会默认从你监听的网卡上发包,所以并不需要特殊指定。

@akkuman
Copy link
Owner

akkuman commented Jul 24, 2019

当然,我博客也只是我写最初版的时候的产物,那个时候到后来其实还是发现了不少问题,可以看看我的git commit log,再对着那文章里面截的几张ppt图,大致上就明白了

@hephyr
Copy link
Author

hephyr commented Jul 25, 2019

我昨天使用时把上面这段代码改回了你博客说的第一次收到 Request 就返回 Reject 才好用。
sendp 在我这里确实是需要指定网口。

@akkuman
Copy link
Owner

akkuman commented Jul 25, 2019

那可能是你的请求里面字段比较少,我这里也只是一个粗略的判断,其实还是有点问题,应该把MRU 和魔术数以及 AuthProto的字段标识都判断一遍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants