Nob ~/accessscope

07 · minecraft + networking

AccessScope

What does a Minecraft server tell a player who tries to join?

A diagnostic tool: it joins a Minecraft server the way a player would, watches everything the server sends back, and classifies it without guessing

##See it work

##A real session

It connects with Mineflayer (in offline mode, no Microsoft accounts) and records what comes back: the kick message with its colors, the MOTD, the icon, the version, the server brand and how long the session lasted. From that it tells whether it reached the game, hit a whitelist, a ban, an account problem, or got no answer at all. Before the first scan you have to accept a responsible-use notice: the tool only looks at what the server replies

##Rules that vote

Classification uses hand-written rules, and they vote: if two rules point to different things, the result is "ambiguous" instead of picking one. Rules get added one at a time from real messages I run into, like a Spanish ban message it didn't recognize at first. And an account problem is never presented as a ban, because it isn't evidence of one

##Isolated and cancellable

Every scan runs in its own Node.js process, separate from the app, and can be cancelled at any moment. 93 Python tests cover the rules, the runtime and the storage

##Direct or through Tor

It can go out directly or through Tor, to compare what each route gets. In a test against a big server, the answer over Tor was identical to the direct one

##A card to share

The result turns into an image: the server as it shows up in the game's server list, the player's skin and the server's message, with a choice of backgrounds and an editor to arrange each part

~/accessscope · how it works
AccessScope (GTK4 + WebKit)
 │ Python service
 ▼
isolated Node.js process (Mineflayer)
 │ direct or through Tor
 ▼
Minecraft server
 │ kick · MOTD · icon · brand · version
 ▼
rules that vote
 ├─ all agree ──────► classification
 └─ they disagree ──► "ambiguous"

##Log

  1. The foundationEvery scan runs in its own isolated Node.js process that can be cancelled at any moment. The rules vote: if two disagree, the result is "ambiguous" instead of a guess. Tested live against real servers
  2. PolishConfigurable timeouts, result export, automated tests, and a shareable image card showing what each server replied

A small version of the rules, right here in your browser: type a message (§ color codes work) and watch them vote. The real rules live in the app, and there are more of them