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-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