
Utilitaires C# pour Windows Notification Facility
Ceci est le dépôt des outils Windows Notification Facility (WNF). Actuellement, un portage C# des outils de wnfun développés par Alex Ionescu (@aionescu) et Gabrielle Viala (@pwissenlit) a été téléversé. Lorsque je développerai des outils supplémentaires pour Windows Notification Facility, ils seront téléversés ici.
Cet outil permet de dumper ou de manipuler les informations relatives aux WNF State Names. Équivalent à wnfdump.exe et WnfDump.py. J'ai apporté quelques mises à jour par rapport à l'outil d'origine (gestion des exceptions, Well-Known State Name et nouveau membre WNF_DATA_SCOPE).
Pour récupérer les informations sur tous les WNF State Names Well-Known, Permanent et Persistent présents sur votre hôte, exécutez avec l'option -d (--dump) :```
PS C:\Dev> .\SharpWnfDump.exe -d
| WNF_WEBA_CTAP_DEVICE_STATE | S | W | N | RW | I | 0 | 12 | 0 | | WNF_WEBA_CTAP_DEVICE_CHANGE_NOTIFY | S | W | N | RW | I | 0 | 4 | 0 | | WNF_PNPA_DEVNODES_CHANGED | S | W | N | RO | U | 0 | 0 | 11 |
--snip--
Pour afficher uniquement le nom d'état utilisé dans le système, définissez le drapeau `-u` (`--used`).
Ce drapeau peut être appliqué aux options `-d` et `-b` :```
PS C:\Dev> .\SharpWnfDump.exe -d -u
| WNF State Name [WellKnown Lifetime] | S | L | P | AC | N | CurSize | MaxSize | Changes |
----------------------------------------------------------------------------------------------------------------------
| WNF_PNPA_DEVNODES_CHANGED | S | W | N | RO | U | 0 | 0 | 140 |
| WNF_AUDC_RENDER | S | W | N | RO | U | 4096 | 4096 | 7 |
| WNF_AUDC_CAPTURE | S | W | N | RO | U | 4096 | 4096 | 1 |
| WNF_AUDC_SPATIAL_STATUS | S | W | N | RO | U | 4096 | 4096 | 3 |
--snip--
Si vous souhaitez récupérer les informations du descripteur de sécurité, définissez l'option -s (--sid) :```
PS C:\Dev> .\SharpWnfDump.exe -d -s
| WNF_WEBA_CTAP_DEVICE_STATE | S | W | N | RW | I | 0 | 12 | 0 |
D:(A;;CCDC;;;SY)(A;;CCDC;;;BA)(A;;CCDC;;;S-1-5-80-242729624-280608522-2219052887-3187409060-2225943459)(A;;CC;;;AU)(A;;CC;;;AC)
| WNF_WEBA_CTAP_DEVICE_CHANGE_NOTIFY | S | W | N | RW | I | 0 | 4 | 0 |
D:(A;;CCDC;;;SY)(A;;CCDC;;;BA)(A;;CCDC;;;S-1-5-80-242729624-280608522-2219052887-3187409060-2225943459)(A;;CC;;;AU)(A;;CC;;;AC)
| WNF_PNPA_DEVNODES_CHANGED | S | W | N | RO | U | 0 | 0 | 11 |
D:(A;;CC;;;BU)(A;;CCDC;;;SY)
--snip--
Si vous souhaitez récupérer les données du buffer, utilisez l'option `-v` (`--value`) ou `-r` (`--read`).
Ces options peuvent être utilisées avec l'option `-s` :```
PS C:\Dev> .\SharpWnfDump.exe -d -v
| WNF State Name [WellKnown Lifetime] | S | L | P | AC | N | CurSize | MaxSize | Changes |
----------------------------------------------------------------------------------------------------------------------
| WNF_WEBA_CTAP_DEVICE_STATE | S | W | N | RW | I | 0 | 12 | 0 |
| WNF_WEBA_CTAP_DEVICE_CHANGE_NOTIFY | S | W | N | RW | I | 0 | 4 | 0 |
--snip--
| WNF_AUDC_RENDER | S | W | N | RO | U | 4096 | 4096 | 1 |
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 | 01 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 | ........ ........
00000010 | 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 | ........ ........
00000020 | 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 | ........ ........
--snip--
Pour récupérer les informations de tous les noms d'état WNF temporaires sur votre hôte, exécutez avec l'option -b (--brut) :```
PS C:\Dev> .\SharpWnfDump.exe -b
| 0x41C64E6DA3AC3845 | S | T | N | RW | A | 8 | ? | 1 | | 0x41C64E6DA3AC4845 | S | T | N | RW | A | 8 | ? | 1 | | 0x41C64E6DA3AC6845 | S | T | N | RW | A | 8 | ? | 1 |
--snip--
Le drapeau `-b` (`--brut`) peut être utilisé avec le drapeau `-v` (`--value`) ou `-r` (`--read`), mais ne peut pas être utilisé avec le drapeau `-s` (`--sid`).
La signification de chaque colonne du tableau obtenu à partir des résultats de l'option `--dump` ou `--brut` est la suivante :
| Nom de colonne | Description |
| :--- | :--- |
| `WNF State Name` | Les noms d'état WNF sont affichés ici |
| `S` | Portée des données pour le nom d'état WNF. La signification des lettres affichées est la suivante :<br><br>+ `S` : Portée système<br>+ `s` : Portée session<br>+ `U` : Portée utilisateur<br>+ `P` : Portée processus<br>+ `M` : Portée machine<br>+ `p` : Portée machine physique |
| `L` | Durée de vie du nom d'état WNF. La signification des lettres affichées est la suivante :<br><br>+ `W` : Bien connu<br>+ `P` : Permanent<br>+ `V` : Persistant (volatile)<br>+ `T` : Temporaire |
| `P` | Affiche si le nom d'état WNF est permanent :<br><br>+ `Y` : Oui<br>+ `N` : Non |
| `AC` | Contrôle d'accès pour le nom d'état WNF :<br><br>+ `RW` : Lecture et écriture<br>+ `RO` : Lecture seule<br>+ `WO` : Écriture seule<br>+ `NA` : Ni lecture ni écriture |
| `N` | Affiche l'existence d'abonnés :<br><br>+ `A` : Un abonné existe<br>+ `I` : Aucun abonné n'existe<br>+ `U` : Inconnu |
| `CurSize` | Le nombre indique la taille actuelle du tampon utilisée pour le nom d'état WNF. |
| `MaxSize` | Le nombre indique la taille maximale du tampon pouvant être utilisée pour le nom d'état WNF. |
| `Changes` | Le nombre indique combien de fois il a été mis à jour. |