- Purpose-built platform that brute-forces 40-position rotary combination locks with a stepper motor.
- Firmware (Arduino on AVR) methodically sweeps every triple-number combination and flashes status through an onboard LED.
- Custom PCB in KiCad couples an ATmega microcontroller, DRV8825 stepper driver, CH340C USB interface, and power regulation for a self-contained rig.
firmware/src/main.cppdrives the stepper with simple direction and pulse control (STEP_PIN,DIR_PIN) and keeps an LED heartbeat onLED_PIN.- Constants (
NUM_POSITIONS,STEPS_PER_NUMBER) define the lock geometry; adjust them to match your hardware before building. testCombination()parks the dial, walks through each candidate combination, and gives visual feedback;bruteForceLocker()iterates all40^3possibilities.- The project is set up for PlatformIO targeting an ATmega88P over USBasp (
firmware/platformio.ini). The includedset_fuses.shscript programs fuses for the 8 MHz internal oscillator before flashing firmware.
- Open
hardware/hardware.kicad_pro(KiCad 7 or newer) to inspect the schematic (hardware.kicad_sch) and 4-layer PCB (hardware.kicad_pcb). - Core components from
hardware/production/bom.csvinclude:- ATmega328PB in TQFP-32 footprint for control (architecturally similar to the ATmega88P targeted in firmware).
- DRV8825PWPR stepper driver with microstepping.
- CH340C USB-UART bridge for configuration/debug.
- LM1117-5.0 regulator, XT30 input, and terminal block outputs for motor power.
- Test points, trim pot (motor current), and AVR-ISP header simplify bring-up and calibration.
firmware/– PlatformIO project with AVR firmware, headers, libraries, and helper scripts.hardware/– KiCad project files and fabrication assets underproduction/.
- PlatformIO CLI (install via
pip install platformioor the official installer). - USBasp (or compatible) ISP programmer wired to the AVR-ISP-6 header.
- AVR toolchain (
avrdude) if you plan to useset_fuses.sh. - KiCad 7+ for hardware edits (and a 3D viewer if you want mechanical checks).
- Install PlatformIO and ensure your USBasp is recognized (
pio device list). - Optionally set microcontroller fuses for the 8 MHz internal clock:
cd firmware ./set_fuses.sh - Build and upload the firmware:
cd firmware pio run --target upload - Tweak
STEPS_PER_NUMBERor other parameters insrc/main.cppto match the lock’s dial geometry, rebuild, and reflash.
- Mount the lock so the dial couples rigidly to the stepper shaft.
- Power the board through the XT30 connector (match the motor driver’s voltage/current requirements).
- Turn on the system; the LED blinks three times on boot, pauses, and brute-forcing begins.
- The LED toggles each time a combination is tried. Once the search completes, the firmware idles with a heartbeat flash.
- Integrate limit switches or sensors externally if you need automatic stop-on-open feedback (not included in baseline firmware).
- Use the project manager sidebar to jump between schematic sheets and the PCB; net labels link the AVR, driver, and connectors.
hardware/production/hardware.zipbundles Fabrication outputs (Gerbers & drill files) ready for most PCB fabs.hardware/production/positions.csvandbom.csvare formatted for pick-and-place and sourcing workflows; adjust footprints or tolerances before sending to contract manufacturers.- Keep the
hardware/fabrication-toolkit-options.jsonsettings in sync if you re-run KiCad’s fabrication toolkit exporters.
- Brute-force tooling should only be used on locks you own or have explicit permission to test. Always follow local laws and ethical guidelines.
- Stepper drivers can run hot—heatsink and actively cool DRV8825 as needed, and double-check current limits with the onboard potentiometer.
- Add sensor feedback (reed switch, force sensor) to detect successful unlocks without manual observation.
- Implement serial telemetry so a host can monitor progress or inject known-good combinations.
- Adapt firmware to the ATmega328PB configuration used on the PCB (update
platformio.iniand pin mappings as required).
LockLoop is released under the CERN Open Hardware Licence v2 (permissive variant). Read the full terms in LICENSE.

