docs · installation(1)
Installation
Build requirements, the Makefile targets, loading and removing the module. Everything assumes a standard out-of-tree kernel module build.
Requirements
- Kernel headers matching the running kernel
(
linux-headers-$(uname -r)or your distribution's equivalent). gcc,make, standard build tools.- Root access to load the module and to write the payload script's permissions correctly.
1. Clone the repository
$ git clone https://github.com/0x48piraj/wrong8007.git
$ cd wrong8007/
2. Build the kernel module
$ make
For verbose logging of keypresses and command execution during development:
$ make EXTRA_CFLAGS=-DDEBUG
Debug builds log matched keystrokes. Do not use -DDEBUG builds
for anything beyond local testing; it works against the stealth goals
described in Philosophy.
3. Load the module
Every load requires EXEC, an absolute path to an executable
payload. The example below runs the bundled test script when the phrase
secret phrase is typed:
$ chmod +x tests/test_exec.sh
$ test -f tests/test_exec.sh && make load PHRASE='secret phrase' \
EXEC="$(realpath tests/test_exec.sh)"
The payload must have execute permission (chmod +x) and must be
referenced by an absolute path. Trigger-specific load parameters
(USB_DEVICES, MATCH_MAC, HEARTBEAT_HOST,
and so on) are documented on activation triggers.
Removing the module
$ make remove # rmmod wrong8007
$ make clean # optional: clean build artifacts
On unload, each trigger's exit() runs, then
flush_work() waits for any in-flight execution to finish before
freeing the module's memory.
Known limitations
- No DKMS support yet; the module must be rebuilt against each kernel you load it on.
- No install/uninstall scripts beyond the
Makefiletargets above. - Not packaged for any distribution.