Traduction française complète + courriel de divulgation responsable

- README, PROTOCOL, FINDINGS, endpoints, rapport et outils traduits en français
- docs/DISCLOSURE.md : courriel prêt à envoyer à hello@boti.education
  (compte démo codé en dur, transmission en clair, logging de production)
- extract_endpoints.py vérifié après traduction (100 points d'accès toujours extraits)
This commit is contained in:
2026-09-01 17:29:25 +01:00
parent 358027bf27
commit b6f22ad7c1
8 changed files with 329 additions and 224 deletions
+37 -30
View File
@@ -1,39 +1,46 @@
# greenwood-school-re
Static reverse engineering of the Greenwood School parent app
(com.botieducation.greenwood), the "horrible mobile app" that is actually a
Capacitor web wrapper by vendor Boti Education (boti.education).
Ingénierie inverse statique de l'application parents Greenwood School
(com.botieducation.greenwood), la « horrible application mobile » qui est en
réalité un wrapper web Capacitor de l'éditeur Boti Education (boti.education).
Analyzed: 2.4.14 (versionCode 24140), XAPK from APKPure.
XAPK sha256: f46aa8b126f8f8856ea15e10ed12fa259d02e383f8921b0645139521b7820e69
Version analysée : 2.4.14 (versionCode 24140), XAPK via APKPure.
Empreinte XAPK sha256 : f46aa8b126f8f8856ea15e10ed12fa259d02e383f8921b0645139521b7820e69
## Contents
## Contenu
- docs/PROTOCOL.md, full API protocol: base URL, auth, request envelope,
push registration, media URLs, quirks
- docs/endpoints.md, all 100 app endpoints with get/post and source chunk
- docs/FINDINGS.md, security findings (yes, including the hardcoded dev account)
- tools/extract_endpoints.py, regenerate the endpoint table from decompiled chunks
- tools/boti_login.sh, login + session key caching (credentials from
~/.config/boti.ini, never in the repo)
- results/report.md, original analysis notes
- docs/PROTOCOL.md, le protocole API complet : URL de base, authentification,
enveloppe des requêtes, notifications push, URLs médias, particularités
- docs/endpoints.md, les 100 points d'accès de l'app avec méthodes get/post
et chunk source
- docs/FINDINGS.md, constats de sécurité (oui, y compris le compte de démo
codé en dur)
- docs/DISCLOSURE.md, courriel de divulgation responsable prêt à envoyer
- tools/extract_endpoints.py, régénère la table des points d'accès depuis les
chunks décompilés
- tools/boti_login.sh, connexion + mise en cache de la clé de session
(identifiants dans ~/.config/boti.ini, jamais dans le dépôt)
- results/report.md, notes d'analyse originales
## TL;DR
## En résumé
- The app is an Ionic/Angular SPA in a Capacitor 5 shell. All logic in JS.
- Backend: https://boti.education/p/greenwood/botiapi/ (per-school path under
one shared vendor backend)
- Auth: POST login (phone + plaintext password) -> keyToken (40 hex) used as
key=<token> on every call. JWT access/refresh headers supported but usually
empty for parents.
- The build ships a hardcoded dev account in the login page component.
- Verified live with a single login call; no other requests were made against
the school server.
- L'application est une SPA Ionic/Angular dans une coquille Capacitor 5.
Toute la logique est en JavaScript.
- Backend : https://boti.education/p/greenwood/botiapi/ (chemin par école sur
un backend unique partagé entre tous les établissements Boti)
- Auth : POST login (téléphone + mot de passe en clair) -> keyToken (40 hex)
utilisé comme key=<token> sur chaque appel. Jetons JWT access/refresh
supportés mais généralement vides pour les comptes parents.
- La version livrée contient un compte de démonstration codé en dur dans le
composant de la page de connexion.
- Protocole vérifié en direct avec un seul appel de connexion ; aucune autre
requête n'a été faite au serveur de l'école.
## No credentials here
## Pas d'identifiants ici
The repository contains no credentials or personal data of the account holder.
The one phone/password pair quoted in docs/FINDINGS.md is vendor-shipped demo
content quoted as vulnerability evidence; it is present in every public copy of
the APK. Live credentials belong in ~/.config/boti.ini (chmod 600) on the
machine that runs the tools, never in this repo.
Le dépôt ne contient aucune donnée personnelle du titulaire du compte. La
seule paire téléphone/mot de passe citée dans docs/FINDINGS.md est le contenu
de démo livré par l'éditeur, cité comme preuve de vulnérabilité ; il figure
dans chaque copie publique de l'APK. Les identifiants réels vont dans
~/.config/boti.ini (chmod 600) sur la machine qui exécute les outils, jamais
dans ce dépôt.