Categories
RFID Security

Anatomy of a Transit Card: Reading a Real Mifare Classic Dump

A full dump is just 1024 bytes of hex — until you know how to read it. Using a real public-transport card, here’s how to go from raw sectors to the MAD, an NDEF message, a digital signature, and the access bits that decide what you can touch.

Categories
RFID Security

From a Drawer of Old Chipcards to a Working Proxmark3: A Mifare Classic Bring-Up Story

While cleaning up I found a stack of old chipcards and got curious. Here’s the full, honest log of getting a Proxmark3 built, flashed, and reading/writing Mifare Classic cards — segfaults, all-zero dumps, and every gotcha in between.

Categories
Artificial Intelligence python

From napkin sketch to assembly plan: a camera nest box

Three photos of pencil sketches went in, a flat-pack style assembly manual for a nest box with a camera compartment came out. What Claude Code read, what it fixed, and how to build the images and a multi-page PDF from the plan.

Categories
Artificial Intelligence Dovecot Keycloak Mail OIDC Postfix SSO

How many OIDC clients does an OAuth-enabled MCP mail server need?

One, two, three or four? The number of OIDC client registrations an MCP server for OAuth-enabled IMAP/SMTP needs depends on the architecture. Five scenarios compared: token passthrough, single-client broker, split broker, IdP as authorization server with token exchange, and hosted providers.

Categories
Artificial Intelligence Encryption License Linux python

Slim PDF: from a PDF signing tool to a slim PDF editor in three days

How a small PAdES signing tool grew into slim-pdf: smartcards and KeePass as key sources, a ribbon GUI, form filling, OCR with each system’s own engine, text search, and why the license ended up as GPL-3.0.

Categories
Artificial Intelligence Linux Nextcloud python

Slim Scan: a feeder-to-PDF scanner app for Linux, built in a week

How a document scanner without eSCL/AirScan led to slim-scan: a pure-Python WSD client, a GTK 4 desktop app, image clean-up on the scanned pages, a SANE backend, and two upstream bugs in the epsonds driver.

Categories
Artificial Intelligence Dovecot Keycloak Mail OIDC python SSO

OAuth2 for an MCP mail server: what I learned on the way

Building an OAuth2-secured MCP mail server against a real Dovecot/Postfix mailbox surfaced four separate Keycloak client registrations, a Default-vs-Optional scope trap, and a genuinely counter-intuitive Audience-mapper gotcha behind a mysterious active: false.

Categories
Database Mariadb Mysql

Portabase mysql/mariadb backup fails

I recently tried to migrate my database backup strategy to portabase. It has a (c)lean interface and can handle the most common database types (postgres, mysql/mariadb but also mongodb or redis). While setting up things looked promising (once you configured the agent it regularly checks connections using the provided credentials and shows the results). This […]

Categories
Artificial Intelligence

Debugging MCP servers

MCP communication MCP servers and clients can talk to each other in different technical ways: Type Description Transport URL stdio In/output using stdio stdio SSE Server-Sent Events Network (HTTP) /sse Streamable HTTP Streamable HTTP Network (HTTP) /mcp Classic MCP Alternative: mcpo (openapi.json) Tools like openwebui prefer to use open APIs (like openapi) to achieve the […]

Categories
Linux

eduMFA/privacyIdea - convert TOTP secrets

eduMFA (privacyIDEA) only accepts hex‑encoded TOTP secret keys; this post shows why, and how to convert between hex and Base32 with ready‑to‑use Python scripts.