
Logiciel C2 pour systèmes embarqués écrit en C/C#
Oni framework est une plateforme de développement logiciel pour dispositifs embarqués. Elle est utilisée pour déboguer/ajouter des fonctionnalités à distance sur un dispositif embarqué. Actuellement, les concepts principaux sont un système de plugins entièrement modulaire, avec RPC local et distant. Cela a été conçu pour fonctionner au niveau de privilège ring-0, mais avec quelques ajustements peut également être utilisé aux niveaux ring-3. Attention, ceci n'est PAS destiné à une utilisation en production, seulement pour les développeurs souhaitant une plateforme de construction facile pour la recherche.
Fonctionnalités prévues :
Oni-Framework nécessite simplement que vous vérifiiez ce répertoire et implémentiez le fichier oni/utils/kdlsym/default.h avec toutes les implémentations requises. Après cela, il devrait compiler correctement avec gcc ou clang et produire un fichier exécutable. Vous devrez fournir votre propre méthode d'exécution, mais pour la plupart des dispositifs embarqués, cela peut être réalisé via un shell SSH, un shell via telnet, ou n'importe quel shell d'ailleurs. D'autres dispositifs peuvent devoir se charger dans le contexte mémoire en cours d'exécution, puis sauter vers main qui devrait gérer tous les problèmes d'initialisation.
git clone https://github.com/kiwidoggie/oni-framework.git
a. Optionnel : Définissez l'emplacement des en-têtes FreeBSD export BSD_INC="/chemin/vers/les/en-tetes/freebsd/include"make create qui créera la structure de dossiersmake
a. Si vous n'avez pas défini la variable d'environnement, vous pouvez construire avec make BSD_INC=/chemin/vers/les/en-tetes/freebsd/includeOni-Framework ne dépend pas d'une libc entièrement fonctionnelle, et est conçu pour être construit et exécuté de manière totalement autonome (à condition que toutes les conditions préalables soient remplies). Au lieu de cela, les fonctionnalités nécessaires sont assemblées à partir du minimum de fonctions existantes, soit dans le contexte d'un processus en cours d'exécution, soit dans le contexte du noyau (ce dernier est le seul testé).
include/oni/utils/kdlsym/my_platform.hinclude/oni/utils/kdlsym/default.h dans votre fichier d'en-tête nouvellement crééinclude/oni/utils/kdlsym.h#if ONI_PLATFORM==ONI_UNKNOWN_PLATFORM
#include "kdlsym/default.h"
#elif ...
#elif ONI_PLATFORM==ONI_MY_PLATFORM
#include "kdlsym/my_platform.h"
#endif
include/oni/config.h// Dispositif inconnu
#define ONI_UNKNOWN_PLATFORM -1
#define ONI_MY_PLATFORM 5
#define ONI_PLATFORM ONI_UNKNOWN_PLATFORM par #define ONI_PLATFORM ONI_MY_PLATFORMSi vous souhaitez contribuer, soumettez simplement une pull request. Sinon, il n'y a pas de véritable support pour cela à ce stade. Cela pourrait changer à l'avenir
| Décalage binaire | Longueur binaire | Nom | Description | Utilisation |
|---|
| 0 | 3 | Magie | Il s'agit d'une simple magie d'en-tête de paquet pour s'assurer que les messages sont traités correctement | OBLIGATOIRE : Doit être défini sur 0101b ou 5 (déc) |
| 3 | 4 | Catégorie de message | Cela décrit la catégorie vers laquelle acheminer le message du côté d'oni-framework | OBLIGATOIRE : Maximum de 14 catégories (5 actuellement utilisées) |
| 7 | 32 | Erreur/Type de message | Ce champ contient le code d'erreur, ou le type de message | REQUÊTES : Doit être défini sur le type de message actuellement calculé par CRC32(NomDuMessage), RÉPONSE : Défini sur le code d'erreur/valeur de retour |
| 39 | 16 | Taille de la charge utile | C'est la longueur des données qui suivent l'en-tête du message | OPTIONNEL : Défini sur 0 si pas de charge utile, sinon attend des données |
| 55 | 1 | Requête | Ce drapeau sera défini sur 1 si le message est une requête, ou 0 s'il s'agit d'une réponse | OBLIGATOIRE |
| 56 | 7 | Réservé | Réservé | IGNORÉ : Défini sur 0 |