- PHP 64.8%
- CSS 24.7%
- JavaScript 10.5%
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| lib | ||
| public | ||
| tools | ||
| LICENSE | ||
| README.md | ||
| vendors.yaml | ||
goofymacs.net
Goofy MAC addresses for IX peering LANs: a real IEEE-registered OUI of a vendor you would never expect on a peering LAN (vending machines, washing machines, desk phones, a BBQ), plus three random bytes. Your router then shows up in ARP tables and IX portals as something it is not.
Live at https://goofymacs.net/.
Use
$ curl goofymacs.net
00:22:16:a3:5f:09
SHIBAURA VENDING MACHINE CORPORATION (vending)
Your AMS-IX router is now a vending machine. Exact change only.
- The MAC is always the first line:
curl -s goofymacs.net | head -1. /jsonreturns the same fields as JSON.?category=<name>limits the pick, e.g.curl goofymacs.net?category=toys. An unknown name returns the list.- curl, wget, HTTPie and similar get plain text, recognised by User-Agent; browsers get the page.
| Category | What |
|---|---|
vending |
Vending machines and drinks |
cash |
Cash handling and payment terminals |
voip |
Desk phones |
printers |
Printers and copiers |
tv |
TVs, speakers, hi-fi and streaming |
gadgets |
Phones, watches, mice and other gadgets |
appliances |
Kitchen and laundry |
home |
Around the house: vacuums, heating, bathroom, lighting, locks, pets |
toys |
Toys, consoles and retro computers |
gambling |
Slot machines |
heavy |
Heavy machinery, cranes, lifts, power tools and one particle accelerator |
vehicles |
Cars, trains, planes, rockets and traffic lights |
farm |
Farm and garden |
music |
Instruments, microphones and headsets |
cameras |
Cameras, drones and cinema |
fitness |
Fitness gear and sports watches |
Register the MAC with your IX before you use it. Most exchanges lock a port to the MAC they know, and frames from anything else are dropped.
How a MAC is made
- The first three bytes are an MA-L (24-bit) OUI from
vendors.yaml, registered at the IEEE to exactly the vendor name shown. Every OUI there has the multicast bit off, so the MAC is unicast. - The last three bytes come from PHP's
random_bytes(), a fresh pick per request. - Medical vendors are left out on purpose.
The vendor list
vendors.yaml holds one entry per OUI: oui, vendor (exactly as in the IEEE registry),
category and joke. The categories are defined in lib/goofy.php.
tools/verify.php checks the whole list against the IEEE registry: every OUI is MA-L,
registered under exactly that name, unicast, not duplicated, and in a known category.
curl -s https://standards-oui.ieee.org/oui/oui.csv | php tools/verify.php -
It needs PHP with the yaml extension (php-yaml on Debian and Ubuntu).
Layout
vendors.yaml the vendor list
lib/goofy.php categories, picking a vendor and making the MAC
public/index.php the page, the plain-text answer and /json
public/app.js, style.css "Another one" and the copy button
tools/verify.php the vendor check
.forgejo/workflows/ deploy on push to main
Deploy
A push to main deploys to boromir.ams1 through the Forgejo runner there: lint, the vendor check
against a fresh copy of the IEEE registry, then git reset --hard to the pushed commit in
/var/www/domains/goofymacs.net and a check that /, /json and the page answer. Apache serves
public/ behind Nginx Proxy Manager, which handles TLS.
Licence
MIT, see LICENSE.