Projects - notnullgames/pakemon GitHub Wiki

Pakémon is a big project, with a few sub-projects. This is a break-down of the sub-projects, and what sort of teams we could use working on them. There will be a lot of overlap, for example @konsumer does all of these, now.

Pakemon Network Diagram


  • pakemon-os - the stuff needed to make pakemon/trainer work, like badusb, startup scripts for fast boot into pakemon, overlays & drivers, etc.
  • pakemon - cute game-looking frontend
  • trainer - backend for pakemon, interface/controller to ratattas and anything else local (modifying boot for badusb, etc), interfaces with pakemon-os too
  • ratatta - payload manager (on target machine) collects/hatches eggs and send output to trainer
  • egg - single program/payload for doing something (on target machine)

pakemon-os

This team should be people who know linux stuff (and specifically pi) and their focus should be a quick boot into pakemon frontend (and starting trainer in the background) and helping trainer team provide hooks into OS.

  • hardware - this might be i2c drivers for gamepad, fancier wifi drivers for monitor-mode, fitting it all into a cute gameboy-formfactor, etc
  • basic badusb setup (swap out boot config for different scenarios) ducky-scripts for installing rattata, and anyhting else we want to do over USB (might need to work with egg team for cool windows hacks)
  • provide hooks to trainer team, so these things can be called from pakemon frontend, maybe via a bunch of scripts
  • eventually manage current wifi connection & packet-sniffing/analysis/packet-upload to keep Pakémon in wifi, and periodically expand the list of known wifi credentials

pakemon

This team should be people who know love/lua fairly well, with a focus on keeping the memory/cpu footprint light and making a fun collection of mini-games.

  • love/lua, with no deps on system other than love
  • plain-text UDP socket (to cut down on other C/lua system dependencies) to communicate with trainer. I wrote demo code for this, but it needs to be expanded.
  • no local spawning subshells or anything, that should all be done by trainer, if it's really needed (but should be avoided in general)
  • efficient unloading of unused scenes and stuff, which I think is mostly done, but keep it that way
  • socket handling should be as async as possible as to not lock up the graphic thread: this needs work
  • will attempt to compile for web, which might also reaquire a proxy to websocket (that pakemon-os team should help with), and little code-tweaks.
  • tutorials for practical use of pakemon, in the form of cut-scenes (like in pokemon or a retro RPG) or videos
  • menus for attacks, badusb setup, wifi management, etc

trainer

This team should be people who know whatever language this is written in fairly well, with a focus on Linux (via pokemon-os team) and supporting the forntend (must use protocols it supports, etc.)

  • planned in rust, but could also be C++, python/lua (which would require lots of C+lua deps on system)
  • listens for pakemon, speaks plain-text over UDP socket
  • listens for ratatta, speaks encrypted (ssl), over UDP socket, over tor
  • needs to be able to get root to change things on pakemon-os
  • needs to be able to punch through firewall to accept external connections (if needed)
  • work with pakemon-os & pakemon to build frontend for OS functions (badusb, etc)
  • local functions like intranet port-scanning and vulnerability analysis
  • persist onion address for rattata

ratatta

This team should be people who know whatever language this is written in fairly well, with a focus on small payload-size, and will need to probably work out tricks (possibly with egg team) to run on windows.

  • this is the actual payload on BadUSB or whatever
  • planned in rust, but could also be C#, C++, python/lua (which would require lots of C+lua deps on system)
  • connects to trainer onion address over tor/ssl/udp
  • listens for commands (which are essentially eggs to run in memory)
  • maybe have some built-in eggs, that can be used to collect other eggs, like "download payload and run" or "persist" or "run without pooping up a window" these might also be in the eggs themselves, which is redundant, but will mean max configurability & modular composure

egg

This team should have windows people on it. Lots of powershell, maybe C#, etc. system DLL internals, etc. WIll work closely with rattata (may even be same team) to make it run stealthy, etc.

  • self-contained code, probably in powershell (which may include EXE paylaods in base64, or download other types of payloads)
  • should run in memory if possible (persistence may throw a wrench in that)
  • should be main team that works on making sure ratatta can install & run without detection