Greenhouse
No description available
Install / Use
/learn @sefcom/GreenhouseREADME
Greenhouse
Automated Single-Service Rehosting of Firmware in User-Space
Installation Requirements
- Tested on: Ubuntu 20.04 Please refer to the READMEs inside each component for the individual installation packages
Component Overview
Greenhouse
Greenhouse is the primary codebase for the Greenhouse implementation in Python.
It handles the bulk of the automated rehosting process and contains all the relevant Python source-code
FirmAEReplacements
Modified scripts to update FirmAE to work with our platform and on kubernetes
dockerization
Dockerfile, scripts and associated folders for building Greenhouse for standalone use
Use make release to build the standalone artifact used in our evaluation
routersploit_ghpatched
Modified version of routersploit (https://github.com/threat9/routersploit) framework used to replay commonly known router exploits on rehosted Greenhouse firmware images
gh3fuzz
Fuzzing component for use with rehosted Greenhouse images via AFL++
gh-qemu5
Source code for Greenhouse's QEMU user implementation (a number of interventions were implemented on the QEMU level instead)
Running
Refer to MINIKUBE.md for instructions on setting up minikube to batch run Greenhouse. Note that minikube has been observed to have performance issues compared to running in a full kubernetes cluster - some samples may not rehost correctly inside a minikube setup.
Otherwise, refer to MANUAL.md for instructions on running Greenhouse manually
Known Issues
"no disk space" message seen in logs
If rehosting is failing due to lack of disk space, please assign more disk space to the minikube instance (~16gb per pod) and run fewer parallel pods. You may also need to check if the docker prune script to periodically clean up docker containers on the minikube instance is working.
minikube ssh
docker container list -a
If the containers are not being pruned, run a periodic pruning script inside the minikube ssh terminal:
while true; do docker container prune --force; sleep 60; done;
"Out of Memory" errors
Assign more RAM per pod inside gh_job.yml. We also recommend minimizing the number of parallelisms if running in minikube.
Related Skills
node-connect
343.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
92.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.3kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
