Skip to the content
PCBKitNew board
2 layers33 × 22.5 mmTick, the printed circuit board in 3D

The Tick is the next evolution in covert access control system implants for simulating adversary-in-the-middle attacks.

Size
33 × 22.5 mm
Copper layers
2
Thickness
0.19 mm
Parts
37
Nets
32
Pads
109
Tracks, vias
511, 72
Pours
3
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
5 Dec 2024
Updated
8 Sep 2025

Overview

Tick is an open-source printed circuit board by jkramarz, from the jkramarz/TheTick repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 33 × 22.5 mm with 37 parts on 32 nets, routed with 511 tracks and 72 vias.

It is built around the THVD1410D, TPS54202DDC and BAT54C, with the NUP2105L among its other parts. Its parts include 13 resistors, 6 capacitors, 4 transistors, 4 connectors and 3 ICs. It belongs with the ESP32 and RISC-V boards of this library.

Main components

4

README

README.md

The Tick

the device

The Tick is the next evolution in covert access control system implants. Designed for a seamless integration behind card readers, The Tick silently intercepts, logs, and replays access credentials with greater efficiency and stealth than ever before. Compatible with a wide range of RFID systems, provides invaluable (to red teamers) insights into facility (in)security, while enabling advanced credential injection. Whether for security auditing, red teaming, or mobile access control testing, The Tick delivers a compact, powerful, and flexible solution in an ever-connected world.

Comparison to other projects

BLEKeyESP-RFID-ToolESPKeyThe Tick
supported protocolsWiegandWiegandWiegandWiegand + Magstripe Clock&Data + a bit of OSDP
wireless interfacesBLEWiFiWiFiBLE + WiFi
configurable D0/D1 lines❌❌❌✅
max power supply voltagebattery powered🔥18V DC25V DC
max data line voltage5V5V5V16V
SoCnRF51822ESP8266ESP8266ESP32C3
firmwareproperly structured codetime-efficient code souptime-efficient code soupslightly-organized code soup
arachnophobia-safe✅✅✅❓ (partially, hidden mugga-mode)

Hardware revisions

The device is in ongoing development - its design, made using KiCad EDA, is getting gradualy optimized and adjusted to incoming feedback and challenges experienced by both the maintainers and users.

Due to a differences in pin mapping, a correct versions must be declared in platformio.ini. There're currently 2 major hardware revisions "in the wild":

Revision 0.2

the device revision 0.2 placed on the back side of a small RFID reader This is the current revision of the device. The rectangular purpler boards with RS485 transceiver in SOIC-8, that are easy to assemble by hand without a solder paste stencil or hot air, using common parts. The connectors footprint has been adapted for larger KYOCERA AVX 9176-000, adequate for common wire gauges. It features additional circuit for automaticly switching power sources, making the device operation more foolproof.

PCBWay logo
This batch of PCBs was generously provided by PCBWay. Thank you Liam for reaching out with sponsorship, kind words about the project and providing nicer tone of the soldermask! From uploading a design to delivering ready-made panelized PCBs into my hands 8000 km away was about 5 days, with a weekend included. You can contact me to receive one free of charge, or order them directly through PCBWay Community sharing platform.

release files

Revision 0.1

the device revision 0.1 placed on the back side of a small RFID reader
Initial and currently most common hardware release. The square purple boards with (hard for hand soldering) RS485 transceiver in QFN16. It does not yet feature a dedicated I2C connector and may have KYOCERA AVX 9175-000 series connectors installed, that are too small for regular PACS wiring. I'd advise a small feature backport - populating a JP2 solder jumper on the bottom side of the PCB with a Schottky diode will allow powering the reader from USB.

This is the revision @jzdunczyk used in her Behind Closed Doors - Bypassing RFID Readers34 talk on Black Hat Asia 2025.

release files

Revision 0.0

the device revision 0.0 placed on the back side of a small RFID reader
An ESP32C3, random level converter, RS485 transceiver and a bunch of wires is a good start and fully sufficient platform for testing the software features.

Software

Firmware of this device started as a simple port of ESPKey for ESP32C3, that gradually grew into extensible and multi-protocol software project, with own improved hardware.

Features

Currently, the firmware can be built with following features:

Communication interfaces
build flagdescription
USE_BLEBLEKey-style Bluetooth Low Energy support
USE_WIFIESPKey-style WiFi (hotspot or client) support
USE_HTTPHTTP user interface
Firmware upgrade
build flagdescription
USE_OTAArduino-style over-the-air upgrade
USE_OTA_HTTPHTTP endpoint for upgrading firmware

There's an USB connector on-board, that even features embedded JTAG interface, but why not...

External reporting
build flagdescription
USE_MDNS_RESPONDERbroadcasts MDNS, so hostname instead of IP address can be used for a connection
USE_SYSLOGreports interactions to syslog server
USE_LCDreports interactions to a handy I2C OLED display
Wire protocols
build flagdescription
USE_WIEGANDprovides support for Wiegand interface sniffing and transmitting
USE_CLOCKANDDATAprovides support for clock&data interface sniffing and transmitting
USE_OSDP + USE_OSDP_PDprovides support for OSDP Peripheral Device mode
USE_OSDP + USE_OSDP_CPprovides support for OSDP Control Panel mode
In Wiegand mode,

the device can receive (sniff) and transmit messages of any length.
Assignment of D0 and D1 lines can be corrected in the configuration file after the device installation, if needed.
The device was sucessfuly tested with 5V and 12V PACS systems, that uses different card number lengths.

In Clock&Data mode,

he device can receive and transmit messages of any reasonable length.
Assignment of DATA and CLOCK lines can be corrected in configuration file after the device installation, if needed.
The device was sucessfuly tested with 12V Clock&Data system, running in Magstripe and UNITEK-emulation modes.
Support for Paxton decoding is based on samples provided by en4rab.

In OSDP Peripheral Device mode,

the device enumerates and serves as a simple OSDP PD. Card numbers can be transmitted using HTTP and BLE interfaces for testing purposes.

Build instructions

Open the project in PlatformIO and press "Upload", then "Upload Filesystem Image". The code is Arduino-flavoured, but took too long to compile using Arduino IDE.

HTTP interface

If built with USE_HTTP flag, the device provides a quite-eye candy, simple HTTP interface, based on almost-REST API and built using jQuery and Bootstrap.

wiegand interface screenshot

Currently, it offers following features:

  • review and modification of application configuration files,
  • review of sniffed reader interactions,
  • replay of acquired credentials,
  • sending arbitrary card numbers (raw or encoded in common formats)

BLE interface

If built with USE_BLE flag, the device exposes a custom Bluetooth Low Energy interface:

device characteristics inspected in nRF Connect

Currently, it offers following features:

  • reading the last sniffed card,
  • notifying about new interactions,
  • sending arbitrary card number.

Currently, by default, device requires bonding with pre-configured passkey and use of secure connections.

Feature-wise it is simillar to BLEKey by Mark Baseggio and Eric Evenchick, but running on a decade-younger hardware.

By default, functions are exposed in service f498124f-2137-4615-9859-30eb4cecffb5 as characteristic beb5483e-36e1-4688-b7f5-ea07361baaaa. These UUIDs can be modified in the device configuration.

There is planned a Flipper Zero client, that will be publicly released shortly after BLE Central role will be incorporated in its firmware (probably never).

OTA upgrade

By properly configuring the build flags, the firmware can feature OTA-upgrade. BLE may need to be sacrificed to fit two copies of firmware in device flash.

It is possible to use Arduino-style OTA (but I never did) or upload firmware images over HTTP endpoint, depending on the build configuration.

Configuration reset

  1. You need to get the timing Just Right™,
  2. Start watching new emergency number spot from IT Crowd,
  3. When ambulance appears on the screen, connect The Tick to power source (e.g. USB) or press RST button,
  4. When each of digits "881 999" appears on the screen, briefly press "BOOT" button,
  5. Wait few seconds - the device will start with empty configuration and log files and expose WiFI hotspot.

Hardware

Hand soldering procedure

When hand-soldering without the paste stencil and a hot-plate, to limit accidential damage:

  • start with assembling DC-DC converter,
  • verify if it works correctly,
  • close apropriate solder bridges,
  • populate Wiegand level converter,
  • populate ESP32-C3 module,
  • program the device,
  • check if correct voltage levels are visible in HTTP interface,
  • proceed with populating RS485 transceiver,
  • verify that Wiegand still works,
  • finish with the connectors.

It also fits the cheapest G3061 hot-plate you can get and solders nicely with hand-applied solder paste.

ESP32-C3

The device utilizes ESP32-C3FH4 on a ready-made TENSTAR ESP32-C3 SuperMini Plus module. Some of the non-Plus modules comes with incorrect antenna design, resulting in impresively poor WiFi range. For a better range, implementing an antenna mod may be a good option.

Supermini plus

DC-DC converter

dc dc converter schematics

As no linear voltage regulator in used, both power consumption and heat dissipation is minimal. The device is also protected against reverse polarity - it just doesn't start, but doesn't blow up.

The power supply can use two pin-compatible PMICs:

Schematics of revisions 0.1 and 0.2A:

  • Uses LMR51430 synchronous buck step-down converter, rated at up to 36V.
  • It runs at 1.1 MHz switching frequency, and uses relatively small 2.2uH inductor.
  • Is probably a bit low-noise and more power-efficient.

Schematics for revision 0.2B:

  • Uses TPS54202 synchronous buck step-down converter, rated at up to 28V.
  • It runs at 500 kHz switching frequency, and uses common 10uH inductor.
  • Is definitely more cost-effective.

Both designs were verfied to work just fine, so I'd recommend assembling using whatever is available.

Maximum voltage if further limited by voltage rating of installed capacitor and polyfuse, but components from the BOM are sufficient to safely run it with 24V-powered long-range readers.

Battery operation

The device DC-DC converter is configured to turn off at approximately at 6V and start at 6.4V, to provide an overdischarge protection if the device is operated from 2S lithium-ion polymer battery pack. The additional load (e.g. the connected reader) is not covered by this protection. Battery voltage can be measured using device ADC and read in device web interface.

3-pin connector present on the board follows the same pinout, as balancer plugs presents on the battery packs.

Level shifter

level shifter schematics

Absolute maximum drain-source voltage rating for 2N7002 N-channel MOSFET transistor is 60V. The board is definitelty not designed for such volatage and I advise against connecting it to live installations of such voltage levels, but it is much more than 5-12V usually found in access control systems anyway.

Voltage shifter is derived from "Bi-directional level shifter for I²C-bus and other systems" design described in Philips Semiconductors application note AN97055.
This solution:

  • works properly in installations with external pull-up (e.g. provided by the reader sharing the same line) regardless of the voltage levels,
  • provides a convenient way of pulling it down to GND,
  • does not provide a way of pulling the line up to VCC.

RS-485 transceiver

trx schematics

The device design incorporates THVD1410 / THVD2410 transceiver intended for interacting with OSDP systems. Populating the transceiver on the PCB limits maximum safe communication lines voltage to 18V / 70V respectivly. It is configured in half-duplex, low-speed mode. Bus terminator can be populated to the PCB, but is usually not required for proper operation. In non-OSDP modes, the device firmware configures the transceiver into high impedance mode to avoid interferrence.

LCD support

The device supports connecting SSD1306-based 128X32 OLED to visualize reader interactions.
Two Wire Interface Bus is available on a dedicated LCD connector.

Solder bridges

The PCB revision 0.2A features 4 solder bridges for configuring power routing:

  • when operating a board with fully populated DC-DC converter, solder bridges JP2 and JP7 should be closed,
  • when using a simplified version, JP3 must be closed to connect grounds and JP1 may be closed to provide 5V to the connected reader.

Connectors

both types of connectors

The current PCB revision uses KYOCERA AVX insulation displacement connectors of 9176-000 series that support wires up to 20 AWG. This configuration is inteded for field-use.

If IDC connectors are not needed or there're special requirement for adapting device for thicker wires, footprint incorporates holes for connecting a wire:

Contributing

If you want to contribute to a project and make it better, your help is very welcome. Contributing is also a great way to learn more about social coding on Github, new technologies and and their ecosystems and how to make constructive, helpful bug reports, feature requests and the noblest of all contributions: a good, clean pull request.

I recognize that contributing to hardware projects can be more challenging than software, especially without access to the necessary components. If you're interested in helping out but lack the hardware, drop me an email — I may be able to send you a PCB to get started.

License

Software License

The software for "The Tick" is licensed under the GNU General Public License (GPL) v3.0. This license allows you to freely use, modify, and distribute the software, provided that any distribution or derivative works are also licensed under the GPL.

For more details on the GNU GPL v3.0, please refer to the GNU General Public License v3.0.

UI Libraries And Template License

The user interface of "The Tick" utilizes jQuery and Bootstrap, both of which are licensed under the MIT License. This permissive license allows you to freely use, modify, and distribute the code, with minimal restrictions.

For more details on the MIT License, please refer to the MIT License.

Hardware License

The hardware design for "The Tick" is licensed under the CERN Open Hardware Licence Version 2 - Strongly Reciprocal (CERN-OHL-S v2). This license permits the use, distribution, and modification of the hardware design, with the condition that any derived works must also be licensed under the same terms.

For more details on the CERN-OHL-S v2, please refer to the CERN Open Hardware Licence Version 2 - Strongly Reciprocal.

Parts

37
QtyValueFootprintReferences
512kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR3, R4, R5, R6, R9
42N7002Package_TO_SOT_SMD:SOT-23Q1, Q2, Q3, Q4
3100nCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1, C2, C6
322uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC3, C4, C5
210Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR11, R12
2120kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR2, R10
222kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R8
2LOGOLOGOG***, G***
1100kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR7
110uHInductor_SMD:L_Changjiang_FXL0420L1
1120Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR13
1250mA 30VFuse:Fuse_1210_3225Metric_Pad1.42x2.65mm_HandSolderF1
1BAT54CPackage_TO_SOT_SMD:SOT-23D5
1Conn_01x02esp32key:KYOCERA 009176002022006 PTHJ2
1Conn_01x03esp32key:KYOCERA 009176003022006 PTHJ1
1Conn_01x03Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalJ4
1Conn_01x04Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ3
1ESP32-C3_SUPERMINIesp32key:MODULE_ESP32-C3_SUPERMINI_SMDU3
1NUP2105LPackage_TO_SOT_SMD:SOT-23D2
1SolderJumper_2_BridgedJumper:SolderJumper-2_P1.3mm_Bridged2Bar_RoundedPad1.0x1.5mmJP7
1THVD1410DPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU2
1TPS54202DDCPackage_TO_SOT_SMD:SOT-23-6U1

Questions

How big is the Tick PCB?

It measures 33 × 22.5 mm and has 2 copper layers, 0.19 mm thick.

What parts does the Tick use?

37 parts, built around the THVD1410D, TPS54202DDC, BAT54C and NUP2105L. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Tick KiCad files?

From the jkramarz/TheTick repository on GitHub, at the commit this page was made from: the board is hardware/Tick.kicad_pcb and its schematic hardware/Tick.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Tick design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 4 layers71 × 71 mmSmartKnob Bachelorarbeit, the printed circuit board in 3D

    SmartKnob Bachelorarbeit

    LucasCanete/GermanSmartknob

    On the front side there is a ring of RGB Leds for user feedback and at its center a magnetic encoder. The magnetic encoder is key to detect the rotation's direction of the BLDC Motor, that in this project is used as an…

    111 parts
  • 2 layers100 × 91.6 mmSensactOutdoor, the printed circuit board in 3D

    SensactOutdoor

    klaus-liebler/sensact

    Es gibt vier Namespaces für Nachrichten "REQUEST" und "RESPONSE", "EVENT" und "ACKNOWLEDGE". Dies wird mit den beiden LSB des Versions-Namespace-Bytes erklärt (Somit bleiben 64 Versionierungsmöglichkeiten) Alle vier…

    137 parts4Apache-2.0
  • 4 layers58 × 90 mmLogging, the printed circuit board in 3D

    Logging

    matatma23-gento/embedded-portfolio

    This repository collects KiCad hardware design projects. Project specifications, validation results, and individual contributions are being documented; the presence of design files does not imply production readiness or…

    76 parts
  • 4 layers42 × 42 mmHuvud, the printed circuit board in 3D

    Huvud

    bondus/KlipperToolboard

    A 3D printer tool head controller board

    126 parts373GPL-3.0
  • 6 layers47 × 30 mmDP Aux MITM V0, the printed circuit board in 3D

    DP Aux MITM V0

    JX5S/DP_aux_emulator

    Board for modifying traffic on DP-aux. Specifically, board is made for correcting false information provided by the PSVR2 making it not work on PC. Except for DP-aux, it is a passive extension of USB-C.

    87 parts48MIT
  • 4 layers93.5 × 118.6 mmRD56, the printed circuit board in 3D

    RD56

    lhm0/rotating_display_color

    56 LED rotating color display with RP2040 and ESP32 microcontrollers

    266 parts25
  • 4 layers45 × 38 mmPd adapter, the printed circuit board in 3D

    Pd adapter

    fullyautomated/ferret

    Fully Automated line of USB-C PD PPS boards

    63 parts20
  • 2 layers48 × 59.5 mmTeensyRPR, the printed circuit board in 3D

    TeensyRPR

    RobustRobby/RPR-TNC

    The SGTL5000 sound chip finds its place beneath the Teensy. It is the 20 (21) pin version, as opposed to the 32 pin version used on the audio shield.

    70 parts17GPL-3.0