
Principe Autofill
###Chaîne Autofill
contrib/extension/content_script.js:4 repère le premier champ mot de passe de la page, demande les identifiants au background pour l’origin courant, puis retombe sur une requête “globale” si rien n’est trouvé pour ce domaine (:11-17). Le script injecte ensuite le premier résultat reçu dans le champ login via une série de sélecteurs heuristiques (:22-47) et dans le champ mot de passe (:49-51), en déclenchant des évènements input pour que les frameworks front détectent les valeurs. contrib/extension/background.js:3-16 fait le pont : il écoute requestLogins, puis relaie la demande au host natif “com.monapp.nativehost” grâce à browser.runtime.sendNativeMessage, et renvoie la réponse JSON au content script. contrib/native/monmdp-host.py:74-199 récupère les entrées chiffrées dans Postgres (commande docker compose … psql, cf. fetch_all_ciphertexts), les déchiffre avec la clé privée de session (load_session_privkey, decrypt_record_with_privkey), puis renvoie une liste triée. Le score augmente si le nom du site apparaît dans les métadonnées (:188-199), ce qui permet au content script de choisir en priorité l’entrée correspondant au domaine courant. Pour que le host serve des logins, il faut déverrouiller la clé privée en amont (monmdp-host.py –unlock, contrib/native/monmdp-host.py:204-223). Elle est stockée sous ~/.local/share/monmdp/session_privkey.b64; si absente, les messages de l’extension obtiennent status: “locked”. Tester l’autoremplissage en chargeant l’extension (contrib/extension/manifest.json) et en vérifiant que le host est déverrouillé. 2) Ajuster les heuristiques de sélection (content_script.js) si certains formulaires particuliers ne se remplissent pas correctement.