Share Something Personal – Encrypted!
In this activity, you will examine the effects of encrypting your messages on a sniffing cyberattack. You will leave the sniffer micro:bit’s script the same receiver script, but add Caesar cipher encryption to the transmitter and intended receiver scripts.

Cybersecurity: Encryption Intro has activities introducing the Caesar cipher if you want to learn more about it.
- Repeat the setup from the previous activity, Share Something Personal -Unencrypted.
- Enter, name, save, and flash the radio_send_images_caesar transmitter script into the micro:bit you chose as the transmitter—the one sending the HAPPY/SAD/ANGRY images.
- The micro:bit you chose to be the sniffer should still be running the radio_receive_images receiver script from the previous activity.
- Enter, name, save, and flash the radio_receive_images_caesar receiver script into the micro:bit you chose to be the intended receiver. The receiver script is below the transmitter script.
- Remember, if you only have two micro:bit modules, you can enter flash, save and test the intended receiver script after testing the sniffer.
Transmitter Script: radio_send_images_caesar
# radio_send_images_caesar.py
from microbit import *
import radio
''' Function converts plaintext to ciphertext using key '''
def caesar(key, word):
alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
result = "
for letter in word:
letter = letter.upper()
index = ( alpha.find(letter) + key ) % 26
result = result + alpha[index]
return result
''' Script starts from here... '''
radio.on()
radio.config(channel=7)
sleep(1000)
string_list = ["HAPPY", "SAD", "ANGRY"]
while True:
for packet in string_list:
print("packet:", packet)
display.show(getattr(Image, packet))
packet = caesar(3, packet)
print("Send encrypted:", packet)
radio.send(packet)
sleep(2500)
Receiver Script: radio_receive_images_caesar
# radio_receive_images_caesar.py
from microbit import *
import radio
''' Function converts plaintext to ciphertext using key '''
def caesar(key, word):
alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
result = "
for letter in word:
letter = letter.upper()
index = ( alpha.find(letter) + key ) % 26
result = result + alpha[index]
return result
''' Script starts from here... '''
radio.on()
radio.config(channel=7)
sleep(1000)
while True:
packet = radio.receive()
if packet:
print("Receive encrypted:", packet)
packet = caesar(-3, packet)
print("packet:", packet)
display.show(getattr(Image, packet))
Test Sniffer and Intended Receiver Responses
- Click the Show serial button in any of the browsers where the serial monitor is not already open.
- Compare the intended receiver micro:bit’s terminal to the sniffer’s terminal.
- In this case, the KDSSB instead of HAPPY should cause an exception. You will correct this in the upcoming activities.
- Compare the intended receiver micro:bit’s LED display to the sniffers as well.
- Reminder: If you are only using two micro:bit modules, test the sniffer first while it’s running the previous activity’s receiver script. Then, load this activity’s receiver script and compare the difference.
