使用 python 与 BBC:Microbit 拦截和更改消息

问题描述

我有一个问题,我必须拦截 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...