Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gretel/ramp
RAMP provides a unified system for marking and identifying communication endpoints across physical and digital domains, designed specifically for hacker spaces, maker labs and technical gatherings like the Chaos Communication Congress.
https://github.com/gretel/ramp
conference congress documentation hackerspace marking meshtastic protocols resources reticulum
Last synced: 3 days ago
JSON representation
RAMP provides a unified system for marking and identifying communication endpoints across physical and digital domains, designed specifically for hacker spaces, maker labs and technical gatherings like the Chaos Communication Congress.
- Host: GitHub
- URL: https://github.com/gretel/ramp
- Owner: gretel
- License: mit
- Created: 2024-12-12T23:37:06.000Z (14 days ago)
- Default Branch: main
- Last Pushed: 2024-12-22T01:38:10.000Z (5 days ago)
- Last Synced: 2024-12-22T02:24:40.006Z (5 days ago)
- Topics: conference, congress, documentation, hackerspace, marking, meshtastic, protocols, resources, reticulum
- Language: Python
- Homepage:
- Size: 7.81 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# π‘ RAMP: Resource Access Marking Protocol
## π Overview
RAMP provides a unified system for marking and identifying communication endpoints across physical and digital domains, designed specifically for hacker spaces, maker labs and technical gatherings like the Chaos Communication Congress.
## ποΈ Core Architecture
Basic syntax:
```
[~]/[:[/]][#]
```
Where `~` prefix indicates a person reference (e.g. `~N/I:10.0.0.1/24#NOC-LEAD`)Where:
- `layer`: Single uppercase letter [A-Z]
- `protocol`: Single uppercase letter [A-Z]
- `param1`, `param2`: Protocol-specific parameter format
- `metadata`: Uppercase alphanumeric with hyphens [A-Z0-9-]
- `[]` denotes optional componentsExample: `P/L:433.500MHz/SF7#MESHNODE`
### Label Format
Standard sticker (40x40mm):
```
ββββββββββββββββββ
β [QR] β <- 12x12mm QR code
ββββββββββββββββββ€
β P/L:433.500M β <- 8pt monospace
β /SF7#NODE01 β
ββββββββββββββββββ€
β π‘ LoRa β <- 10pt sans-serif
β Node #01 β
ββββββββββββββββββ
```### URI Format
```
ramp:///[:[/]][#]
```
- URI-unsafe characters must be percent-encoded
- Parameters and metadata are case-preserved
- Fragment (#) cannot contain additional fragments## π Protocol Stack Examples
### Basic Layer Model
```mermaid
graph TB
L0[Physical Layer: P] -->|Raw transmission| L1[Network Layer: N]
L1 -->|Protocol| L2[Application Layer: A]style L0 fill:#1a73e8,color:white
style L1 fill:#34a853,color:white
style L2 fill:#ea4335,color:white
```### Examples
## Remote Shell Access
```mermaid
graph TB
P1[P/L:433.500MHz/SF7] -->|Mesh Node| N1[N/R:a1b2c3d4]
N1 -->|Transport| A1[A/X:shell#1337]style P1 fill:#1a73e8,color:white
style N1 fill:#34a853,color:white
style A1 fill:#ea4335,color:white
```Remote system access over LoRa-based Reticulum mesh. SF7 spreading factor balances range and speed.
```
ββββββββββββββββββ
β [QR] β
ββββββββββββββββββ€
β P/L:433.500M β
β /SF7#SHELL01 β
ββββββββββββββββββ€
β π‘ LoRa β
β Shell #01 β
ββββββββββββββββββ
```## DMR Repeater System
```mermaid
graph TB
P1[P/R:145.500MHz] -->|Input| N1[N/D:317523]
N1 -->|Controller| P2[P/R:145.900MHz]
P2 -->|Output| A1[A/M:@rprt145]style P1 fill:#1a73e8,color:white
style N1 fill:#34a853,color:white
style P2 fill:#1a73e8,color:white
style A1 fill:#ea4335,color:white
```DMR voice repeater with Matrix status updates. Input 145.500MHz, output 145.900MHz, monitoring via Matrix.
```
ββββββββββββββββββ
β [QR] β
ββββββββββββββββββ€
β P/R:145.500M β
β #RPRT317523 β
ββββββββββββββββββ€
β π» DMR β
β Repeater #01 β
ββββββββββββββββββ
```## π Protocol Mappings
### Parameter Validation Rules
```python
VALIDATION = {
# Physical parameters
'freq': r'^\d{3}\.\d{3}[MG]Hz$', # e.g., 433.500MHz
'sf': r'^SF\d{1,2}$', # e.g., SF7
'mac': r'^([0-9A-F]{2}:){5}[0-9A-F]{2}$', # MAC address
'channel': r'^\d{1,3}$', # e.g., 36
'speed': r'^\d+[KMGT]$', # e.g., 100M
# Network parameters
'ipv4': r'^\d{1,3}(\.\d{1,3}){3}$', # IPv4 address
'ipv6': r'^[0-9a-fA-F:]+$', # IPv6 address
'port': r'^\d{1,5}$', # Port number
'hash': r'^[0-9a-f]{64}$', # SHA-256 hash
# Application parameters
'user': r'^@?[a-zA-Z0-9_.-]+$', # Username
'room': r'^[#!][a-zA-Z0-9_.-]+$', # Room identifier
'host': r'^[a-zA-Z0-9.-]+$' # Hostname
}
```### Physical Layer (P)
```python
PHYSICAL = {
# Radio
'L': {'name': 'LoRa', 'params': '/', 'note': 'π‘ Long Range Radio',
'presets': {
'ST': {'name': 'Short Turbo', 'sf': 7, 'bw': 500, 'cr': '4/5', 'dr': 21.88},
'SF': {'name': 'Short Fast', 'sf': 7, 'bw': 250, 'cr': '4/5', 'dr': 10.94},
'SS': {'name': 'Short Slow', 'sf': 8, 'bw': 250, 'cr': '4/5', 'dr': 6.25},
'MF': {'name': 'Medium Fast', 'sf': 9, 'bw': 250, 'cr': '4/5', 'dr': 3.52},
'MS': {'name': 'Medium Slow', 'sf': 10, 'bw': 250, 'cr': '4/5', 'dr': 1.95},
'LF': {'name': 'Long Fast', 'sf': 11, 'bw': 250, 'cr': '4/5', 'dr': 1.07},
'LM': {'name': 'Long Moderate', 'sf': 11, 'bw': 125, 'cr': '4/8', 'dr': 0.34},
'LS': {'name': 'Long Slow', 'sf': 12, 'bw': 125, 'cr': '4/8', 'dr': 0.18},
'VLS':{'name': 'Very Long Slow', 'sf': 12, 'bw': 62.5,'cr': '4/8', 'dr': 0.09}
}},
'R': {'name': 'RF', 'params': '/', 'note': 'π» Generic Radio'},
'W': {'name': 'WiFi', 'params': '/', 'note': 'πΆ WiFi Radio'},
'B': {'name': 'BLE', 'params': '/', 'note': 'π¦· Bluetooth Low Energy'},
'Z': {'name': 'Zigbee', 'params': '/', 'note': 'πΈοΈ Zigbee Radio'},
# Wired
'E': {'name': 'Ethernet', 'params': '/', 'note': 'π Wired Network'},
'S': {'name': 'Serial', 'params': '/', 'note': 'π€ Serial Data'},
'U': {'name': 'USB', 'params': '/', 'note': 'π Universal Serial Bus'},
'C': {'name': 'CAN', 'params': '/', 'note': 'π Controller Area Network'},
# Special
'Q': {'name': 'QR', 'params': '/', 'note': 'π± QR Code Resource'},
'O': {'name': 'Optical', 'params': '/', 'note': 'π¦ Light-based'},
'N': {'name': 'NFC', 'params': '/', 'note': 'π± Near Field Comms'},
'A': {'name': 'Audio', 'params': '/', 'note': 'π Sound-based'},
'Q': {'name': 'QAM', 'params': '/', 'note': 'γ°οΈ RF Modulation'},
'V': {'name': 'Visual', 'params': '/', 'note': 'ποΈ Visual Light Comms'}
}
```### Network Layer (N)
```python
NETWORK = {
# Internet Infrastructure
'A': {'name': 'AS', 'params': '/', 'note': 'π Autonomous System'},
'I': {'name': 'IPv4', 'params': '/', 'note': 'π Internet Protocol v4'},
'6': {'name': 'IPv6', 'params': '/', 'note': 'π Internet Protocol v6'},
'T': {'name': 'TCP', 'params': '/', 'note': 'π Transport Control'},
'U': {'name': 'UDP', 'params': '/', 'note': 'π User Datagram'},
# Amateur Radio
'P': {'name': 'POCSAG', 'params': '/', 'note': 'π Paging Protocol'},
'D': {'name': 'DMR', 'params': '/', 'note': 'ποΈ Digital Mobile Radio'},
'X': {'name': 'AX.25', 'params': '/', 'note': 'π‘ Packet Radio'},
# Mesh/P2P
'M': {'name': 'Meshtastic','params': '/', 'note': 'πΈοΈ Meshtastic Mesh'},
'R': {'name': 'Reticulum', 'params': '/', 'note': 'πΈοΈ Reticulum Mesh'},
'Y': {'name': 'Yggdrasil', 'params': '/', 'note': 'π³ Yggdrasil Network'},
'C': {'name': 'cjdns', 'params': '/', 'note': 'πΈοΈ cjdns Mesh'},
'H': {'name': 'HAMnet', 'params': '/', 'note': 'π‘ Amateur Radio Network'},
# Overlay Networks
'O': {'name': 'Tor', 'params': '/', 'note': 'π§ Tor Network',
'types': {'HS': 'Hidden Service', 'NODE': 'Relay Node', 'DIR': 'Directory'}},
'N': {'name': 'I2P', 'params': '/', 'note': 'π§ I2P Network'},
'L': {'name': 'IPFS', 'params': '/', 'note': 'π¦ InterPlanetary FS'},
}
}
```### Application Layer (A)
```python
APPLICATION = {
# Communication
'M': {'name': 'Matrix', 'params': '/', 'note': 'π¬ Matrix Protocol'},
'X': {'name': 'XMPP', 'params': '/', 'note': 'π¬ XMPP Protocol'},
'I': {'name': 'IRC', 'params': '/', 'note': 'π¬ Internet Relay Chat',
'uri': 'irc://[:]/[,]'},
'L': {'name': 'LXMF', 'params': '/', 'note': 'π¨ LXMF Messaging'},
'E': {'name': 'Email', 'params': '/', 'note': 'π§ Email Protocol'},
# Services
'H': {'name': 'HTTP', 'params': '/', 'note': 'π Web Service'},
'G': {'name': 'Gemini', 'params': '/', 'note': 'π Gemini Protocol'},
'S': {'name': 'SIP', 'params': '/', 'note': 'βοΈ Voice Over IP'},
'F': {'name': 'FTP', 'params': '/', 'note': 'π File Transfer'},
'N': {'name': 'NNTP', 'params': '/', 'note': 'π° Usenet News'},
# Security
'P': {'name': 'PGP', 'params': '/', 'note': 'π PGP Keys'},
'O': {'name': 'OTR', 'params': '/', 'note': 'π€« Off The Record'},
'W': {'name': 'WireGuard', 'params': '/', 'note': 'π VPN Tunnel'},
# Special Purpose
'T': {'name': 'Telemetry', 'params': '/', 'note': 'π Sensor Data'},
'D': {'name': 'DNS', 'params': '/', 'note': 'π Name Service'},
'B': {'name': 'Bitcoin', 'params': '/', 'note': 'βΏ Cryptocurrency'},
'R': {'name': 'Radio', 'params': '/', 'note': 'π» Amateur Radio'},
'Z': {'name': 'ZeroMQ', 'params': '/', 'note': 'π Message Queue'}
}
```## πͺ Congress Example Labels
WiFi Access Point:
```
ββββββββββββββββββ
β [QR] β
ββββββββββββββββββ€
β P/W:36/160 β
β #NOC.AP.12 β
ββββββββββββββββββ€
β πΆ WiFi β
β NOC AP 12 β
ββββββββββββββββββ
```Network Segment:
```
ββββββββββββββββββ
β [QR] β
ββββββββββββββββββ€
β N/I:10.128.0.0 β
β /16#HACKCTR β
ββββββββββββββββββ€
β π Net β
β Hack Center β
ββββββββββββββββββ
```NOC Reference:
```
ββββββββββββββββββ
β [QR] β
ββββββββββββββββββ€
β ~N/I:10.128 β
β /16#NOC-LEAD β
ββββββββββββββββββ€
β π€ Net β
β NOC Lead β
ββββββββββββββββββ
```QR Resource:
```
ββββββββββββββββββ
β [QR] β
ββββββββββββββββββ€
β P/Q:128/WIFI β
β #GUEST-NET β
ββββββββββββββββββ€
β π± QR β
β WiFi Access β
ββββββββββββββββββ
```Tor Hidden Service:
```
ββββββββββββββββββ
β [QR] β
ββββββββββββββββββ€
β N/O:xmpl23... β
β /80#HS.01 β
ββββββββββββββββββ€
β π§ Tor β
β Hidden Svc β
ββββββββββββββββββ
```Badge Charging:
```
ββββββββββββββββββ
β [QR] β
ββββββββββββββββββ€
β P/U:2.0/CDC β
β #CHARGE.05 β
ββββββββββββββββββ€
β π USB β
β Charging #05 β
ββββββββββββββββββ
```