Repository navigation
v1.2.4
What's Changed
Critical Fix - PSRP Wire Format runspace.py
-
run_command- 100% pipeline failure on Windows Server 2025 WinRM (w:InternalError/w:InvalidSelectors): The custom MS-PSRP fragmentation layer in_fragment()encoded Runspace/Pipeline GUIDs as 32-byte ASCII hex strings instead of the 16-byte binary format required by MS-PSRP spec §2.2.1. Additionally,rsp:ShellIdin theCreaterequest body was hardcoded to"http://localhost/wsman"(the ResourceURI value) instead of a valid UUID, causing Windows to invalidate the shell immediately after creation. Combined, these two defects caused_create_pipeline()to receivew:InternalErroron first command dispatch andw:InvalidSelectorson all subsequent commands - 100% failure rate on Windows Server 2025. Windows Server builds may have been more lenient and partially functional. Fixed by replacing the custom PSRP implementation withpypsrpas the PSRP backend while retaining PwnRM's own SPNEGO/Kerberos/CredSSP/ClientCert transport layer for authentication. Affectedrunspace.pyentirely. -
__enter__- bare_receive()calls crash shell init on Windows Server 2025: Two_receive()calls in__enter__were issued without aCommandId, which Windows Server WinRM rejects withw:InternalErrorat the shell init stage. After the first receive failed, the shell was invalidated by the server - every subsequent request returnedw:InvalidSelectors. Resolved as part of the PSRP backend replacement.
Dependency
- Added
pypsrp>=0.8.0torequirements.txtandpyproject.toml.
Full Changelog: v1.2.1...v1.2.4