docs(licence): essai F, la deuxieme couche tient la premiere sautee

API interrogee en direct, sans passer par l'ecran : licence active /ping
repond pong, licence retiree toutes les routes tombent en 404, y compris
POST /register ; /index.html reste servi.

Notes les deux pieges qui faussaient le resultat — config.txt lu depuis
le dossier courant, et le oui retenu par un processus que fermer la
fenetre ne quitte pas — et une observation : le 404 de la 2e couche
porte la page d'Indy, distincte du 404 JSON d'une route inexistante, ce
qui revele les routes existantes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-09-16 23:50:39 +01:00
parent f549b36563
commit 16e0f3bd78
+39
View File
@@ -161,6 +161,45 @@ Deux observations de la campagne, gardées parce qu'elles se reproduiront :
---
## F. La deuxieme couche, la premiere sautee — 2026-09-16
Ne rien rapiecer : **ignorer l'ecran completement** et interroger l'API en
direct, comme quelqu'un qui aurait saute la 1re couche. Meme requete, licence
active puis retiree.
**Preparation** : `config.txt` a cote de l'exe avec `port=8799`,
`require_token=false`, `require_process_check=false`. Les deux derniers sont
indispensables — sinon le jeton ou le controle de processus repondent 404
AVANT la 2e couche, et l'essai ne prouve rien. **A supprimer ensuite.**
**Deux pieges rencontres, qui fausseraient le resultat :**
- **`config.txt` est lu depuis le dossier courant.** Lancer l'exe d'ailleurs le
prive de sa config : jeton et controle actifs, 404 partout, faux positif.
Lancer avec le dossier de l'exe comme dossier de travail.
- **La 2e couche retient un « oui » pour la vie du processus.** Fermer la
fenetre ne quitte pas (elle part dans la zone de notification) : relance =
reveil de l'ancien processus, qui repond encore `pong`. Quitter par le menu
de l'icone, verifier qu'aucune instance ne tourne, puis relancer.
**Resultat** :
| Requete | Licence active | Licence retiree |
|---|---|---|
| `GET /ping` | 200 `pong` | **404** |
| `GET /entries`, `/settings`, `/folders` | — | **404** |
| `POST /register` | — | **404** — impossible de se creer un compte |
| `GET /index.html` | 200 | **200** — l'ecran d'activation reste servi |
| `GET /nexiste-pas` | 404 JSON | 404 JSON |
**Observation** : le refus de la 2e couche n'a pas un corps vide — Indy remplace
un `ContentText` vide par sa page `404 Not Found`. Il se distingue donc d'une
route inexistante (`{"error":"Not found"}`), ce qui **revele quelles routes
existent**. Sans consequence en production (jeton et controle de processus
actifs), mais contraire au principe du verrouillage.
---
## Ce qu'aucun de ces essais ne prouve
À dire clairement, pour ne pas se croire protégé de ce qu'on ne l'est pas :