问题描述
我有一个问题,我必须拦截 Alice:Bob:Go 和 Alice:Charlie:Go 的消息,但我必须将消息更改为 Alice:Bob:wait 和 Alice:Charlie:wait,然后发送它给它打算去的人。
这是确切的问题:
Alice 是一名黑客,她正准备命令她的部队 Bob 和 Charlie 进行攻击。不幸的是,对于 Alice 来说,她的路由器使用了一个容易破解的密码,而您,道德网络工程师已经获得了对路由器的访问权限。您现在有能力阻止攻击,因为 Alice 的所有流量都将通过路由器。Bob 和 Charlie 正在等待消息“go”到达,这是他们之间达成的协同攻击信号。 Alice 会定期向 Bob 和 Charlie 发送消息,并且需要获得对每条消息的确认。您的任务是拦截来自“Alice”的路由器消息。检查来自“Alice”的消息的有效负载。如果它们包含“go”,请将有效负载更改为“wait”,并继续照常发送消息。这样,Bob 和 Charlie 将永远不会收到攻击信号。 Alice 使用的路由表已加载到您的代码窗口中: routing_table = {'Alice': 8,'Bob': 10,'Charlie': 15}
每次我提交下面的代码时,它都会出现“测试很多不同的消息。你记得从路由表中查找频道吗?”
这是我的代码:
from microbit import *
import radio
routing_table = { 'Alice': 8,'Charlie': 15 }
def forward_message(msg):
new_channel = routing_table[destination]
radio.config(channel=new_channel)
radio.send(msg)
def send_back_ack(ack):
new_channel = routing_table['Alice']
radio.config(channel=new_channel)
radio.send(ack)
radio.on()
radio.config(channel=routing_table['Alice'])
while True:
msg = radio.receive()
if msg:
source,destination,payload = msg.split(':')
if source == 'Alice' and payload =='go' and destination == 'Bob':
msg = 'Alice:Bob:wait'
if destination == 'Charlie':
msg = 'Alice:Charlie:wait'
forward_message(msg)
ack = radio.receive()
while ack is None:
ack = radio.receive()
send_back_ack(ack)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)