NUI-C2
hors ligne
agents 0
en ligne 0
—

Aucune session selectionnee

—Selectionne un agent dans la liste.

hook intercepte $.post / fetch / XHR et tous les messages NUI. cartographier liste champs et boutons du DOM courant. Le reste passe par eval en portee globale.

—

Envoie POST https://<ressource>/<callback> depuis la NUI compromise. La requête atteint le Lua client de la victime (RegisterNUICallback), pas le serveur : c'est le handler client qui décide de relayer ou non. Un callback ne peut donc rien demander que le client n'ait déjà le droit de demander — c'est la porte que le §7 demande d'auditer.

Ces entrées sont des sondes, pas des effets. Quatre issues possibles, et seule la première est garantie :
(a) effet client seul — closeBank, zoomCamera, handsUp, RemoveNuiFocus : l'écran ou l'input de la victime change, sans serveur. (b) le client demande, le serveur tranche — si le Lua relaie sans revalider, ça passe ; sinon rien. (c) effet différé — le callback pose un état, un événement ultérieur le lit. (d) rien — handler qui ignore le payload, ou callback inexistant (404).
(b), (c) et (d) sont indiscernables depuis le dump : les modules Lua sont chiffrés escrow. D'où les notes formulées comme des questions, pas comme des conséquences.

Affichage plein écran — NUI de la victime

La superposition est posée dans le document NUI de la victime, pas dans le jeu : le joueur continue de bouger, mais tout son écran est couvert et rien dans l'interface ne peut la fermer. Stop la retire sans recharger la page. Sans session sélectionnée et sans la case cochée, rien ne part.

Ce que le CEF accepte. image, gif et video chargent depuis n'importe quel hôte : la NUI n'a pas de CSP qui les bloque. youtube passe par une iframe youtube.com/embed/ et exige un identifiant de 11 caractères — une URL de playlist ou de chaîne n'en contient pas. html est une iframe sandbox sans allow-same-origin : elle s'affiche mais ne peut pas lire la NUI qui la contient.

Cibles

Préférer getScript. Il pose un <script> classique : ni CORS ni type MIME vérifiés, donc il marche même derrière un tunnel qui réécrit les en-têtes. import() charge un module ES et ne pardonne rien — un MIME ou un CORS qui ne colle pas donne un rejet de promesse invisible, sans aucune erreur console. Le prendre seulement si le champ est réellement borné à 50.

Longueurs

Mesuré en jeu : un champ de nom qui accepte 59 caractères accepte le vecteur img en entier. Les 50 par défaut étaient une hypothèse trop conservatrice — ajuste ici selon ce que ta base accepte vraiment.

Sortie

—

Trigger Lua — paramètres

Les modules Lua du core sont chiffrés escrow : le nom réel de l'évènement n'est pas lisible dans le dump. x:card:show est une hypothèse — ajuste-la, ou passe par la saisie manuelle qui n'en dépend pas.