A definitive guide to implementing, using, and understanding all aspects of RDAP by Andy Newton.
The Registration Data Access Protocol (RDAP) is the successor protocol to the Whois protocol. It was first ratified by the Internet Engineering Task Force (IETF) in March 2015 by their WEIRDS working group, and initial server and client implementations were released shortly thereafter by the many Regional Internet Registries (RIRs) in June 2015.
In the years since RDAP became standardized, extensions have been added and profiles have been specified. While this is a clear sign of the success of the protocol, the amount of information spread across RFCs, IANA registries and other documents makes specification information more difficult to acquire and implementations harder to develop and deploy.
This book is intended to describe RDAP a in way the RFCs do not, and in many cases cannot describe the protocol and its ecosystem through the use of mdbook, the many mdbook plugins, annotated examples, easier to read language and references to other materials.
The Registration Data Access Protocol (RDAP) is the successor to WHOIS. Like WHOIS, RDAP provides access to information about Internet resources (domain names, autonomous system numbers, and IP addresses). Unlike WHOIS, RDAP provides:
RDAP.org aims to support users and developers of RDAP clients by providing a "bootstrap server", i.e. single end point for RDAP queries. RDAP.org aggregates information about all known RDAP servers. RDAP clients can send RDAP queries to RDAP.org, which will then redirect requests to the appropriate RDAP service.
modemu2k adds telnet capability to a comm program. It can redirect telnet I/O to a pty so that a comm program can handle the pty as a tty with a real modem, and allows you to use a comm program's scripting and file transfer features over telnet. Now supports IPv6 connections.
It works like file transfer protocols do in minicom (rx/sx, ry/sy, rz/sz).
Or you can use it as a stand-alone CLI client.
Bluetooth experimentation framework for Broadcom and Cypress chips.Broadcom chips are used in approximately a billion of devices, such as all iPhones, MacBooks, the Samsung Galaxy S series, the older Google Nexus series, older Thinkpads, Raspberry Pis, various IoT devices, and more. In 2016, Cypress acquired the IoT division of Broadcom. Since then, firmware variants slightly diverged, as Broadcom kept non-IoT customers like Apple and Samsung. However, the firmware interaction and update mechanism stayed the same. We reverse-engineered how the operating systems patch this firmware and interact with it. Based on that we developed a Bluetooth experimentation framework, which is able to patch the firmware. This enables various features that otherwise would only be possible with a full-stack software-defined radio implementation, such as injecting and monitoring packets on the link layer.
At some point, I wondered—what if I sent a packet using a transport protocol that didn’t exist? Not TCP, not UDP, not even ICMP—something completely made up. Would the OS let it through? Would it get stopped before it even left my machine? Would routers ignore it, or would some middlebox kill it on sight? Could it actually move faster by slipping past common firewall rules?
No idea.
So I had to try.
First, I sent the packets to myself, just to see how my own machine handled the poison I made up. Then, I sent them across continents to a remote Linux machine to see if they’d actually make it
This library allows you to communicate small amounts of data between air-gapped devices using sound. It implements a simple FSK-based transmission protocol that can be easily integrated in various projects. The bandwidth rate is between 8-16 bytes/sec depending on the protocol parameters. Error correction codes (ECC) are used to improve demodulation robustness.
This library is used only to generate and analyze the RAW waveforms that are played and captured from your audio devices (speakers, microphones, etc.). You are free to use any audio backend (e.g. PulseAudio, ALSA, etc.) as long as you provide callbacks for queuing and dequeuing audio samples.
It's designed for devices that are relatively close to one another that need to exchange information, like a PC and a phone or a con badge and a door lock. It even links to some mobile apps that can be used for proof-of-concept testing (but they're kind of old so they might not be installable for you).
It's hard to find good information on APRS. A web search produces mostly outdated misinformation and little of value. This is the beginning of a collection of the essential documentation.
Club meetings and ham conventions are always looking for speakers. There was nothing about APRS during the 2024 Dayton forums. Suppose you wanted to give an APRS presentation at a club meeting or ham convention. But... It's a big job. You are not sure where to start and would like to use / adapt something already done rather than starting from nothing. Where can you find suitable presentations? I’ve tried searching and could not find much that was worthwhile. I’m throwing this out as a challenge to the APRS community. Please help to make a list of the best presentations that others could use.
There is some very good material out there, but how can the newcomer find it among all the clutter? This is a crowd-sourced list of the best resources for a beginner. I need YOUR help to find the best resources.
libacars is a library for decoding ACARS message contents. Supports FANS-1/A ADS-C (Automatic Dependent Surveillance - Contract), FANS-1/A CPDLC (Controller-Pilot Data Link Communications), MIAM (Media Independent Aircraft Messaging), Media Advisory (Status of data links: VDL2, HF, Satcom, VHF ACARS), and OHMA (diagnostic messages exchanged with Boeing 737MAX aircraft) messages.
Comes with a couple of sample CLI utilities for exercising the library.
Reticulum is the cryptography-based networking stack for building local and wide-area networks with readily available hardware. It can operate even with very high latency and extremely low bandwidth. Reticulum allows you to build wide-area networks with off-the-shelf tools, and offers end-to-end encryption and connectivity, initiator anonymity, autoconfiguring cryptographically backed multi-hop transport, efficient addressing, unforgeable delivery acknowledgements and more.
The vision of Reticulum is to allow anyone to be their own network operator, and to make it cheap and easy to cover vast areas with a myriad of independent, inter-connectable and autonomous networks. Reticulum is not one network. It is a tool for building thousands of networks. Networks without kill-switches, surveillance, censorship and control. Networks that can freely interoperate, associate and disassociate with each other, and require no central oversight. Networks for human beings. Networks for the people.
Reticulum is a complete networking stack, and does not rely on IP or higher layers, but it is possible to use IP as the underlying carrier for Reticulum. It is therefore trivial to tunnel Reticulum over the Internet or private IP networks. Having no dependencies on traditional networking stacks frees up overhead that has been used to implement a networking stack built directly on cryptographic principles, allowing resilience and stable functionality, even in open and trustless networks. No kernel modules or drivers are required. Reticulum runs completely in userland and can run on practically any system that runs Python 3.
At its core, CATS is a packet radio standard primarily designed for autonomous position reports, but is versatile enough to support a much wider scope of communication. CATS packets are extremely versatile, consisting of multiple "Whiskers" which make up the packet. Whiskers come in several types. For example, a typical CATS position beacon would likely contain an Identification Whisker, GPS Whisker, and potentially a Comment Whisker and Timestamp Whisker. Different Whiskers can be mixed and matched to allow a wide range of data to be encoded. Detailed information on CATS can be found in the standard, linked below.
CATS is ultimately meant to be a replacement to APRS. Although APRS was magnificent when it was first developed, current technology allows us to do better. APRS also suffers from decades of bloat, making the standard difficult to learn.
A standard for transferring Files between airgapped units over a simplex transmission agnostic to the medium, transfer speed and distribution network. Most existing Protocols don't handle simplex transmissions at all or very poorly.
The data to be tansmitted is to be collected in a container [this may be a folder or tar archive]. The container is then optionally compressed and encrypted. The container is hashed (SHA3-512 is recommended). A header is used to communicate the essential parameters, including compression algorithm, encryption used, checksum, container size and number of fragments, timestamp, and checksum of the header.
Documentation aside, proof of concept of each feature is part of the repo in the form of shell scripts.
RACE (Resilient Anonymous Communications for Everyone) is a distributed system developed to provide resilient, secure, anonymous messaging. You can think of RACE in terms of a network two types of nodes: clients and servers. The clients are devices run by individual users who want to anonymously message one another; the servers are run by volunteer users or organizations that provide the infrastructure to enable anonymous client messaging. Uses special multi-party computation (MPC) algorithms to route messages without individual servers learning the metadata. The specific goals of the original RACE program were to enable up to 20% of the servers to be malicious and colluding without any client messaging metadata being leaked.
Software that decodes the following digital transmission modes: POCSAG512, POCSAG1200, POCSAG2400, FLEX, EAS, UFSK1200, CLIPFSK, AFSK1200, AFSK2400, AFSK2400_2, AFSK2400_3, HAPN4800, FSK9600, DTMF, ZVEI1, ZVEI2, ZVEI3, DZVEI, PZVEI, EEA, EIA, CCIR, Morse code (CW), X10.
Give it a recording or stream of raw audio and it can try to make sense of it. This includes the output of utilities like rtl_fm.
RACE is an open source project aimed at developing technologies to provide metadata-anonymous, secure, and resilient messaging for users around the world. RACE provides anonymity by routing messages through an overlay network of volunteer servers using cryptographic algorithms that prevent a malicious subset of these servers from determining who is messaging whom. RACE uses specialized networking protocols to prevent connections between individual members of the network from being detected or blocked. RACE is built to run in a dockerized linux environment and on Android devices.
This document defines the FediE2EE-PKD (Fediverse End-to-End Encryption Public Key Directory), which consists of ActivityPub-enabled directory server software, a protocol for communicating with the directory server, and integration with a transparent, append-only data structure (e.g., based on Merkle trees).
We report several practically-exploitable cryptographic vulnerabilities in the end-to-end encryption in Matrix and describe proof-of-concept attacks exploiting these vulnerabilities. When relying on implementation specific behaviour, these attacks target the Matrix standard as implemented by the matrix-react-sdk and matrix-js-sdk libraries. These libraries provide the basis for the flagship Element client. The vulnerabilities we exploit differ in their nature (insecure by design, protocol confusion, lack of domain separation, implementation bugs) and are distributed broadly across the different subprotocols and libraries that make up the cryptographic core of Matrix.
Status: Whilst the language of the paper and this website is in present tense, many of the vulnerabilities disclosed have been fixed. See our updated paper (or Matrix’ website) for more details. Our updated paper includes details of the mitigations for these attacks (alongside a few updates and corrections).
PyHam is a collection of applications and software libraries for ham radio enthusiasts, written in Python.
The applications are intended to address real-world use cases for the ham while keeping complexity to a minimum and focusing on ease of use. By avoiding the lure of trying to be all things to all people, PyHam applications target the majority of users at the possible expense of those few who may desire additional capabilities.
The libraries are written in pure Python, and each focus on a particular technology with the goal of making that technology easier to work with than it otherwise would be. PyHam applications are themselves built upon these libraries.
PyHam software has been developed with a primary focus on Direwolf as a platform, since it is the dominant software TNC in use today. However, where appropriate, the software has also been tested against other platforms such as ldsped and AGWPE.
STOMP provides an interoperable wire format so that STOMP clients can communicate with any STOMP message broker to provide easy and widespread messaging interoperability among many languages, platforms and brokers.
STOMP is a very simple and easy to implement protocol, coming from the HTTP school of design; the server side may be hard to implement well, but it is very easy to write a client to get yourself connected. For example you can use Telnet to login to any STOMP broker and interact with it!
An opionated (and incomplete) ActivityPub service implementation in Go. The documentation for this package is incomplete reflecting the nature of our work to first understand the mechanics, and second explore the tolerances, of the ActivityPub protocols. The closest thing to "quick start" documentation can be found in the Example section of this README.
Centralized social media is harmful to society. We are building a gatekeeper-free decentralized system. Our mission is “social media done right”, to put people in control of their own identity and build the technology that would enable a shift to collaborative and intentional security models prioritizing active consent. To accomplish this, we will build a new architecture for the internet: removing the necessity of client-server architecture, replacing it with a participatory peer-centric model.
This is the home of the Spritely Goblins Distributed Programming platform - the core of our vision of a completely decentralised social internet.
Spritely’s technology is being released as free and open source software aiming for multiple programming language implementations and eventual open standardization. All of our work, ranging from decentralized identity, peer-to-peer user agents, decentralized social networks, encrypted and portable storage, and distributed object programming infrastructure is being built to enable a gatekeeper-free path where users and content are not tied to a specific server.
Gitlab: https://gitlab.com/spritely