
Windows 알림 기능을 위한 C# 유틸리티
This is the repository for Windows Notification Facility (WNF) tools. Currently, a C# port of the tools in wnfun developed by Alex Ionescu (@aionescu) and Gabrielle Viala (@pwissenlit) has been uploaded. When I develop additional tools for Windows Notification Facility, they will be uploaded here.
This tool dumps or manipulate information about WNF State Names. Equivalent to wnfdump.exe and WnfDump.py. I made some updates from the original tool (Exception Handling, Well-Known State Name and new WNF_DATA_SCOPE member).
To retrieve information of all Well-Known, Permanent and Persistent WNF State Names on your host, execute with -d (--dump) flag:```
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--
시스템에서 사용된 상태 이름만 표시하려면 `-u`(`--used`) 플래그를 설정하세요.
이 플래그는 `-d` 및 `-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--
Security Descriptor 정보를 검색하려면 -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--
버퍼 데이터를 검색하려면 `-v` (`--value`) 또는 `-r` (`--read`) 플래그를 설정하세요.
이 플래그들은 `-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--
호스트에서 모든 임시 WNF 상태 이름에 대한 정보를 검색하려면 -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--
The `-b` (`--brut`) 플래그는 `-v` (`--value`) 또는 `-r` (`--read`) 플래그와 함께 사용할 수 있지만, `-s` (`--sid`) 플래그와는 함께 사용할 수 없습니다.
`--dump` 또는 `--brut` 옵션의 결과로 얻은 표의 각 열의 의미는 다음과 같습니다:
| Column Name | Description |
| :--- | :--- |
| `WNF State Name` | WNF State Name이 여기에 출력됩니다 |
| `S` | WNF State Name에 대한 데이터 범위. 표시되는 알파벳의 의미는 다음과 같습니다:<br><br>+ `S` : 시스템 범위<br>+ `s` : 세션 범위<br>+ `U` : 사용자 범위<br>+ `P` : 프로세스 범위<br>+ `M` : 머신 범위<br>+ `p` : 물리적 머신 범위 |
| `L` | WNF State Name에 대한 수명. 표시되는 알파벳의 의미는 다음과 같습니다:<br><br>+ `W` : Well-Known<br>+ `P` : 영구<br>+ `V` : 영속(휘발성)<br>+ `T` : 임시 |
| `P` | WNF State Name이 영구적인지 표시합니다:<br><br>+ `Y` : 예<br>+ `N` : 아니요 |
| `AC` | WNF State Name에 대한 액세스 제어:<br><br>+ `RW` : 읽기 및 쓰기 가능<br>+ `RO` : 읽기 전용<br>+ `WO` : 쓰기 전용<br>+ `NA` : 읽기 및 쓰기 불가 |
| `N` | 구독자 존재 여부를 표시합니다:<br><br>+ `A` : 구독자 있음<br>+ `I` : 구독자 없음<br>+ `U` : 알 수 없음 |
| `CurSize` | 이 숫자는 WNF State Name에 사용되는 현재 버퍼 크기를 의미합니다. |
| `MaxSize` | 이 숫자는 WNF State Name에 사용할 수 있는 최대 버퍼 크기를 의미합니다. |
| `Changes` | 이 숫자는 업데이트된 횟수를 의미합니다. |
특정 WNF State Name에 대한 정보를 검색하려면 다음과 같이 `-i` (`--info`) 옵션과 함께 `SharpWnfDump.exe`를 실행하십시오:```
PS C:\Dev> .\SharpWnfDump.exe -i WNF_SHEL_APPRESOLVER_SCAN
| WNF State Name | S | L | P | AC | N | CurSize | MaxSize | Changes |
----------------------------------------------------------------------------------------------------------------------
| WNF_SHEL_APPRESOLVER_SCAN | S | W | N | RW | A | 4 | 4 | 1 |
The -i (--info) 옵션은 -v (--value), -r (--read), 및 -s (--sid) 플래그와 함께 사용할 수 있습니다:```
PS C:\Dev> .\SharpWnfDump.exe -i WNF_SHEL_APPRESOLVER_SCAN -s -v
| WNF_SHEL_APPRESOLVER_SCAN | S | W | N | RW | A | 4 | 4 | 1 |