MonkeyNet

See also:

Monkeynet Diagnostic Console (Demo)

It's in Java and runs as a desktop or applet, but the target platform is Android.

Note: Reportedly does not work in Safari.

MonkeyNet - A Game of Hacking

Yes, there have been plenty of attempts at making a fun game about hacking. And they've all failed. But if you know me, you know I'll have a fresh angle - so it has that much going for it.

I'm not going to talk about presentation yet, though I have a vision for that. First we're going to dive-into why I wrote all of this the way I did - because I'm liable to forget, myself.

The Premise

MonkeyNet is, ostensibly, a "diagnostic tool" for working with a network called MonkeyNet.

MonkeyNet is a global proprietary internetwork, with major hub networks in Asia, Europe, Australia, US, South America, etc. On the network, Monkey Robotics "Agents" perform various jobs, using their own devices and the kinds of systems you would expect. Agents have schedules, tasks, personalities, and engage in events that involve the player.

The player, by way of conspiracy, is looking for a magic sword just kidding but yeah basically the usual Epic Quest. Except that it's not a sword, but something a hacker would want. Shut up, LARP geeks objecting and waving your broadswords.

I've actually got a lot more planned in terms of player motivation and quests, but I'm not going to expose those details here yet. That's enough premise to get to the underlying techniques.

The Real Tech

This I'm going to talk about, cause it's the fascinating part. But not yet. Oh no, that's saving the best for last. :)

The In-Game Tech

This is why I started this article: To write-down the imaginary parts of this thing before forget how they work:

Basic MonkeyNet Architecture

  • 10 Regions : The network exists across 10 regions. The names, object densities, and other characteristics of each are procedural, and generated from the initial "World Seed" in combination with the region's unique id. Regions have names like "Australia" and "North America".

  • 10 Networks Each: Inside each region are 10 networks, again with densities and properties generated procedurally, seeded by the region's seed combined with the network's unique id. See how this goes?

    • 100 Nodes Each : Inside each network are 100 "nodes" - yes, network nodes, in most cases devices such as a phone or computer. These details are again generated procedurally - using the network's seed combined with the node's unique id. They each have "OS versions", unique passwords, reward levels and too much more.

    • 1 NPC Each : Yes, there is a procedurally generated non-player character to go with the imaginary computer inside the imaginary network. :) In a way it feels like an arbitrary limitation, constraining NPCs to their devices - but I had to stop this rabbit hole somewhere, before I started generating the lint in their pockets (hmmm). These NPCs already have work schedules, personality types, threat levels, and will probably soon have pocket lint counts, apparently.

You probably think that all sounds nuts but this all works, already. You can already explore all 10,000 nodes in the demo above.

Generating a Believable, Fake Internet

The process of generating a region (again, on the fly) currently goes something like:

    1. Determine object distribution and thus "population" of the region

    2. Choose a population-adjusted number of nearby regions to be connected to

    3. Designate a network inside the region that will have the "regional hub" in it

    4. Designate the node ID inside that network that will serve as the regional hub

Brilliant, eh? You see we've determined what device inside what network you need to "hack into", in order to jump to another region. And we haven't yet generated that node at all. But it will be that node, and only that node.

Because it is (will be) a regional hub, it's will be exceptionally difficult to hack, policed by a diligent admin and will reward (or penalize) the player appropriately. The formula for all of that uses these properties as inputs, combined with the seeds for this network.

Excerpts from a Fictional Network

Here are some pastes from the demo implementation.

Crazy Bob's God Dump

God-mode dump of Crazy Bob's, showing some of the properties. Yes, much of the game takes place at a fake Unix prompt. :)

[null@monkeynet:181] $ see 1338

Node 1338

Location Crazy Bob's Computer Shop

Active true

Gateway false <- Does not connect to other networks

Level 2

Pass 1517 <- This is Agent 1338's password

Seed 12122 <- This is 'region+network+node'

Bounty 0

Artifact -1

Owner Agent 1338

Online false <- NPC agent is off work

Trust 69

Personality 1

Crew -1 <- Agent 1338 not a member of any hacking crew

Hours 6:00 - 14:00

Wuhan, China God Dump

God-mode dump of the gateway in Wuhan China, showing an "admin" (NPC) as currently logged-in. The gateway's next hop is Suzhou (the address of that gateway is 9100).

[null@monkeynet:20] $ see 9800

Node 9800

Location Wuhan, China

Active true

Gateway true

Level 6 <- Gateways are more difficult to hack

Pass 138713 <- Password is longer than an ordinary node

Seed -673378880

Bounty 318

Artifact 17

Owner Agent 9800

Online true <- NPC is online!

Trust 62

Personality 0

Crew -1

Hours 5:00 - 11:00

Network 9800 - Wuhan, China

Level 0

Pass 0

Seed -673378880

Peers (1)

Suzhou, China (9100) <- Address of next hop

Lab Demo Help Screen

[null@monkeynet:23] $ help

MonkeyNet Agent Quick Reference

Agent ID : unknown

Trust Level : 23

Network : Funabashi, Japan (5900-5999)

Commands (some require higher trust levels):

login ____ To access your own node. Only. Ever.

ping ____ Test node connectivity.

map ____-____ Ping a range (ex: map 4096-8192)

debug Diagnostic and recovery mode

enable ____ Enable an unassigned node. Techs only!

Hacker 'plugins' that players wouldnt have yet:

see ____ (fka 'food') Detailed info about remote node

who ____ Display info about agents

net ____ Change network. Requires gateway key! (Disabled)

ear ____ Capture audio from a remote node

brute ____ Brute-force w/partial pwd, up to X times

stalk ____ Discreetly monitor a user's activity.

keys List installed network keys. (Disabled)

food ____ 24-hour delivery. Not to be used for pranks.

Suspicious activity will be persecuted by MonkeyRobotics Security Personnel.