Skip to content
Parallax Learn

Parallax Learn

  • Welcome
  • Tutorials
        • Tutorial Series head tag

          Tutorial Series
        • Tutorial Series

          The special, classroom-ready series pages are organized collections of tutorials for our most popular hardware and/or languages. The tutorials for each topic are conveniently accessible from a single page, shown in the order it is recommended that they be completed.
        • Robotics Series Head tag

          Robotics Series
        • Robotics Series

          • Artificial Intelligence
          • Cybersecurity: Radio Data tutorialCybersecurity
          • cyber:bot + Python
          • cyber:bot + MakeCode
          • Boe-Bot Tutorial SeriesBoe-Bot
          • Arduino Shield-Bot
          • ActivityBot with C TutorialsActivityBot + C
          • ActivityBot with BlocklyProp Tutorial SeriesActivityBot + BlocklyProp
          • Scribbler 3 Tutorial SeriesScribbler 3
        • Electronics & Programming Series Head tag

          Electronics & Programming Series
          • BS2 Board of Education Tutorial SeriesBS2 Board of Education
          • Propeller C-Language BasicsPropeller C Basics
          • FLiP Try-It Kit C Tutorial SeriesFLiP Try-It Kit + C
          • FLiP Try-It Kit BlocklyProp TutorialsFLiP Try-It Kit + BlocklyProp
          • Badge WX Tutorial SeriesBadge WX
          • Propeller BlocklyProp Basics and ProjectsPropeller BlocklyProp Basics
          • View All Tutorial Series »
        • Browse Tutorials
        • Browse Tutorials

          Individual tutorials sorted by robot or kit, and language.
        • By Robot or Kit
          • ActivityBot
          • SumoBot WX
          • Boe-Bot
          • Shield-Bot
          • cyber:bot
          • Badge WX
          • ELEV-8
          • ARLO
        • By Language
        • By Language

          • Propeller C
          • Arduino
          • BlocklyProp
          • PBASIC
          • Python
          • MakeCode
          • View All Tutorials »
  • Educators
  • Reference
  • Downloads
  • Home
  • All Courses
  • Cybersecurity: Brute Force Attacks & Defenses

Cybersecurity: Brute Force Attacks & Defenses

micro:bit PIN Pad and Vault

This activity starts with a micro:bit PIN pad that you can type a PIN into using its A and B buttons.  It radio transmits the PIN you entered to a micro:bit vault.  Enter the correct PIN and access is granted.  Enter the wrong one, and access is denied.  In this starting activity, the PIN’s security is intentionally weak: three binary digits (0s or 1s).  

This first application does not require the serial monitor, so the micro:bit modules will only be drawing power from the USB cable.  The step-by-step instructions are the same as you have been following for serial monitor connected micro:bit modules that are communicating wirelessly.  However, you can optionally load programs in one at a time, and connect both micro:bit modules to batteries, and the application will still work.

  • Decide which micro:bit you want to be the ’PIN pad’ transmitter and which one you want to be the ’bank vault’ receiver.  
  • Connect the two micro:bit modules to two USB ports with two USB cables.
  • Open two separate browsers and navigate each one to python.microbit.org.

See Texting with Terminals if you need a reminder on how to set up the serial connection to the micro:bit modules.

  • If you are part of a class, and have been assigned a channel, make sure to adjust the script’s channel=7 to your assigned channel before you save and flash the scripts.
  • Enter, name, save, and flash the pin_pad_transmitter script into your chosen PIN Pad Transmitter micro:bit.
  • Enter, name, save, and flash the script bank_vault_receiver script into your chosen Bank Vault Receiver micro:bit.  The Receiver Script (bank vault) is below the Transmitter Script (PIN pad) script.
  • Before continuing, take a look at the bank_vault_receiver script’s pin = ’011’ statement.  This is the PIN number you will have to enter into the PIN Pad Transmitter micro:bit with its A/B buttons.  

Transmitter Script: pin_pad_transmitter.py

# pin_pad_transmitter.py

from microbit import *
import radio

radio.on()
radio.config(channel=7)

sleep(1000)

pin = ''
n = 0

while True:

    x = len(pin)
    b = n * 9
    
    display.set_pixel(x,4,9)
    for y in range(0, 4):
        display.set_pixel(x, y, b)

    if button_a.was_pressed():
        n = n + 1
        n = n % 2
    if button_b.was_pressed():
        pin += str(n)
    if x == 3:
        radio.send(pin)
        display.scroll(pin)
        pin = ''
        n = 0
        display.clear()

 

Receiver Script: bank_vault_receiver

# bank_vault_receiver

from microbit import *
import radio

radio.on()
radio.config(channel=7)

sleep(1000)

pin = '011'

while True:

    display.set_pixel(2,2,9)
    
    message = radio.receive()
    
    if message:
        if message == pin:
            radio.send("Access granted.")
            for n in range(4):
                display.show(Image.YES)
                sleep(1000)
                display.clear()
                sleep(200)
        else:
            radio.send("Access denied.")
            display.show(Image.NO)
            sleep(3000)

        display.clear()    

Before using the PIN Pad Transmitter micro:bit to open the Vault Receiver micro:bit, let’s check to make sure each one is running the correct script.  

  • Verify that the PIN Pad Transmitter micro:bit has one light in the lower-left.
  • Verify that the Vault Receiver micro:bit has one light in the center.

 

 

Here’s how to enter PINs into the PIN pad transmitter.  Press/release the A button to select 0 (one light) or 1 (all 5 lights in the column).  When you have the digit you want, press B to enter it and advance to the next digit and column.  The script automatically copies the previous column’s digit to the next column.  If that’s the digit you want, just press the B button again to accept it, or press the A button to change it before pressing the B button to accept it.  

After you press B to accept the digit in the 3rd column, the script automatically transmits the PIN to the Bank Vault Receiver micro:bit.   If the PIN is correct, it’ll display a check-mark.  If it’s not correct, it’ll display an X.  Let’s try entering the correct 0 1 1 PIN first to get the access granted checkmark from the bank vault’s display.

To enter and send 0 1 1, press/release the PIN Pad Transmitter micro:bit’s reset button, then press/release: B A B B.  
Verify that the Vault Receiver micro:bit displays a check mark indicating access granted.

<<< enter-correct-pin-how-to >>>

It’s also important to make sure the vault works by not granting access to any other PIN.

  • Try these PIN combinations:
    • Send 0 0 0 with B B B
    • Send 1 0 1 with A B A B A B
    • Send 1 1 1 with A B B B
  • For each of the incorrect codes you entered, verify that the Vault Receiver micro:bit displays an X indicating access denied.

 

  • To make it a challenge, have someone change the PIN in the bank vault receiver script so that you don’t know what it is.

How long does it take you to test through the possible PINs to get the correct response?  (For a brute force attack, you would have to try 000, 001, 010, 011, 100, 101, 110, and 111.)

 


Printer-friendly version
About Brute Force Attacks
Prev
How the Example Scripts Work
Next

DISCUSSION FORUMS | PARALLAX INC. STORE

About | Terms of Use | Feedback: learn@parallax.com | Copyright©Parallax Inc. 2024

© 2025 Parallax Learn • Built with GeneratePress