138 Commits

Author SHA1 Message Date
Jimmy Fjällid c93999f9b2 mssrvs,msscmr,smb: share/service security descriptors and richer share info
mssrvs:
- NetShareEnumAllExt enumerates shares at info levels 501 and 502 in
  addition to level 1; NetShareEnumAll now delegates to it. Level 501 adds
  Flags; level 502 adds Permissions, MaxUses, CurrentUses, Path and the
  parsed SecurityDescriptor on each NetShare.
- NetShareGetInfo[Ext] queries a single share at levels 0/1/2/501/502.
- NetShareSetInfo plus NetShareSetInfoComment/Flags/SecurityDescriptor
  convenience setters (levels 1004/1005/1501 and the 1/2/502 unions).
- NetServerDiskEnum enumerates the server's disk drives (level 0).
- New SHARE_INFO_{0,2,501,502,1004,1005,1501} structs and the SHARE_INFO
  switch union, with NDR marshalling and round-trip tests.

msscmr:
- GetServiceSecurity[Bytes]/SetServiceSecurity[Bytes] (Opnum 4/5,
  RQueryServiceObjectSecurity/RSetServiceObjectSecurity) and
  GetSCManagerSecurity[Bytes] read and write service and SCM-database
  security descriptors.
- Open SCM/service handles with least privilege: openSCManager uses
  SC_MANAGER_CONNECT and each method opens the service with only the rights
  it needs (DeleteService -> DELETE; ChangeServiceConfig2 derives rights
  from the requested config via ConfigInfoW.RequiredServiceAccess).
- Add SECURITY_INFORMATION and standard-access-right constants; drop the
  unused scActionBuf.

smb:
- QueryInfoSecurityRaw returns the full parsed SecurityDescriptor (every
  ACE and its raw access mask) with a buffer-overflow retry; QueryInfoSecurity
  delegates to it and tolerates a descriptor with no owner/group/DACL.
- OpenFileReadAttributes opens a handle with READ_CONTROL only, enough to
  read a security descriptor without data-read access.
v0.10.0
2026-06-06 20:58:22 +02:00
Jimmy Fjällid 0c97d2f64a krb5ssp,ldap: migrate to gokrb5/v9 and adapt to decoupled ldap/v3
go-smb and github.com/jfjallid/ldap/v3 were mutually dependent modules:
go-smb/ldap wraps ldap/v3, while ldap/v3 reached back into go-smb/{gss,
krb5ssp,ntlmssp}. Because krb5ssp.KRB5Token carries gokrb5 types across that
boundary, the two were also pinned to the same gokrb5 major version. ldap/v3
v3.101.0 severs that cycle (it no longer imports go-smb); this is the go-smb
side of the change.

krb5ssp:
- Migrate from gokrb5/v8 to gokrb5/v9 (krb5ssp.go, wrapToken.go, the
  ccache_{linux,darwin,windows}.go ccache loaders and tests). No behaviour
  change; the v9 API is source-compatible for the surface we use.

ldap:
- ldap/v3 now inverts its NTLM dependency instead of importing go-smb/ntlmssp.
  Add ldap/ntlm.go: an ntlmssp.Client-backed adapter implementing ldap's
  NTLMNegotiator plus the optional NTLMChannelBinder and NTLMSessionProvider
  capabilities, registered as ldap.NTLMNegotiatorFactory in init(). Importing
  go-smb/ldap therefore restores out-of-the-box NTLM binds; the wrapper's
  credential-based NTLMChallengeBind path is unchanged and now resolves the
  negotiator through this factory.

go.mod:
- gokrb5/v8 -> gokrb5/v9 v9.0.0; ldap/v3 v3.100.0 -> v3.101.0. gokrb5 is now an
  ordinary shared dependency resolved by MVS.
2026-06-06 16:10:06 +02:00
Jimmy Fjällid cb9f559549 relay: multi-target NTLM relay package
Add the relay/ package: listen for inbound SMB or HTTP NTLM
authentications, forward them to one or more upstream targets (SMB,
HTTP/S, LDAP/S), pool the resulting authenticated sessions, and
optionally expose the pool to local tools through a SOCKS5 proxy.
Provides RelayServer (long-running multi-target listener with a session
pool, post-auth actions and optional fake-server handoff) and
RelayClient (one-shot listener returning a single authenticated
*smb.Connection), replacing the retired in-package smb.NewRelayConnection.

Add the smb.Connection hooks the relay drives: MarkAuthenticated promotes
a manually-driven SessionSetup to authenticated state, and SendRawPDU
forwards an opaque SMB2 PDU on a pooled connection (re-stamping
MessageID and applying signing/encryption).
v0.9.0
2026-05-31 20:41:37 +02:00
Jimmy Fjällid f456005f1c dcerpc: server-side PDU marshalling and RPC service servers
Implement the server (request-decode / response-encode) direction of the
core DCERPC PDUs that were previously NOT IMPLEMENTED stubs:
BindReq.UnmarshalBinary, BindRes.MarshalBinary, RequestReq.UnmarshalBinary
and RequestRes.MarshalBinary, including auth-verifier and auth-pad
handling.

Add a transport-agnostic DCERPC server that binds presentation contexts
and dispatches Request PDUs to registered operations, and a MS-SRVS
(Server Service) server backing NetShareEnum so the SMB server can answer
share enumeration over \PIPE\srvsvc. Mark ShareInfo1 Name/Comment with the
notnullptr ndr tag so empty comments serialize as a non-null pointer to an
empty string, matching Windows.
2026-05-31 19:52:37 +02:00
Jimmy Fjällid 2b30e16410 smb/server: SMB2/3 server implementation
Add an SMB2/3 server: connection dispatch loop, NEGOTIATE (incl. negotiate
contexts, preauth-integrity, signing/encryption capabilities), SESSION_SETUP
driven by the SPNEGO/NTLM acceptor, TREE_CONNECT, and the CREATE / READ /
WRITE / FLUSH / CLOSE / QUERY_DIRECTORY / QUERY_INFO / SET_INFO / IOCTL /
ECHO / CANCEL handlers, including named-pipe support and compound-request
chains.

Files are served through a small VFS interface with two backends: an
in-memory store (memvfs) and a passthrough to the local filesystem
(filevfs). Includes signing (HMAC-SHA256 / AES-CMAC / AES-GMAC) and
per-message encryption.
2026-05-31 19:46:12 +02:00
Jimmy Fjällid 42ed6f7026 spnego/ntlmssp: add server-side authentication acceptor
Add ntlmssp.Server, the acceptor counterpart to the NTLM client: it
consumes a NEGOTIATE, emits a CHALLENGE, and validates the AUTHENTICATE
message. Wrap it in spnego.Acceptor so the SMB/HTTP server paths can
drive SPNEGO-negotiated NTLM auth and recover the established session
key. Includes acceptor round-trip tests.
2026-05-31 17:52:29 +02:00
Jimmy Fjällid 46254fe260 smb: negotiate/signing/encoding groundwork for server support
Client/shared plumbing that the upcoming server and relay packages build
on:

- signing: introduce smbSigner/smbVerifier interfaces (signer.go) and an
  AES-GMAC implementation; SessionSetup wires CMAC/HMAC-SHA256/GMAC
  through them, and key derivation is gated on negotiated encryption.
- negotiate: add an SMB2Only option, validate the server-selected dialect
  against the offered list, support a direct SMB 2.0.2 selection and a
  configurable cipher offer; accept AES_GMAC as a signing algorithm.
- credits: stop hardcoding CreditCharge=1 in the SMB2 header; 2.0.2
  reserves the field (must be 0) while later dialects consume one credit
  by default (applyCreditCharge), and Negotiate consumes one sequence
  slot even with CreditCharge=0.
- NegotiateReq now emits the real ClientGuid (was zeroed) and decodes
  SecurityMode; pointer-receiver MarshalBinary dispatch and an
  offset-emptiness check land in the encoder, with regression tests.
- server-direction marshalling scaffolding (marshal_server.go, Echo/Flush
  structs) and retire the old in-package relay internals (RelayPort
  option, NewRelayConnection) in favour of a new relay/ package; keep
  the generic SessionSetup structs and add the SendSessionSetup*WithBlob
  helpers the relay drives.
2026-05-31 17:44:10 +02:00
Jimmy Fjällid e2cc42f664 ntlmssp: set NEGOTIATE_ALWAYS_SIGN in client Negotiate
Advertise NTLMSSP_NEGOTIATE_ALWAYS_SIGN in the client's NEGOTIATE
message, matching what Windows clients send and what servers expect
when negotiating signing.
2026-05-31 17:39:43 +02:00
Jimmy Fjällid 9ff76aac74 krb5ssp: default KDC traffic to TCP
Set UDPPreferenceLimit=1 unconditionally so AS/TGS exchanges go over TCP
from the start. Against AD the PAC-bearing replies almost always exceed
the UDP datagram limit, so the UDP attempt just earns a
KRB_ERR_RESPONSE_TOO_BIG and a mandatory TCP retry; skipping it avoids
the wasted round-trip and the confusing failure mode.
2026-05-31 17:28:57 +02:00
Jimmy Fjällid 2fe455cc1a msdrsr: add AES-SHA2 Kerberos etypes
Add the aes128-cts-hmac-sha256-128 (19) and aes256-cts-hmac-sha384-192
(20) encryption types to the etype constants and name map so extracted
Kerberos keys of these types are recognised and rendered correctly.
2026-05-31 17:27:49 +02:00
Jimmy Fjällid d2d5c9a90b dcerpc: surface RPC return codes as errors
Check the operation return code against the status map in msrrp, mssamr
and mslsad calls, returning the mapped error (or an explicit "unknown
return code 0x..." for unmapped values).
Add the LSA SOME_NOT_MAPPED / NONE_MAPPED / TRUSTED_DOMAIN_FAILURE
statuses and treat SOME_NOT_MAPPED as partial success in the
SID/name lookups.

Also drop the manual trailing-null trimming of registry key/value names
in msrrp now that the ndr decoder strips it.
2026-05-31 17:26:31 +02:00
Jimmy Fjällid ef1702d6df msscmr: pass optional ChangeServiceConfig strings as pointers
BinaryPathName, ServiceStartName and DisplayName are optional in
RChangeServiceConfigW (a null pointer means "no change"). Model them as
*string in the request struct and plumb pointers through
ChangeServiceConfig/ChangeServiceConfigExt so callers can omit fields
instead of forcing empty strings.
2026-05-31 17:24:23 +02:00
Jimmy Fjällid e3b8c8b39e Support ACCESS_*_OBJECT_ACE and add GUID helpers
Parse and marshal the object-ACE family (MS-DTYP 2.4.4.3-2.4.4.6):
read the Flags field and the optional ObjectType / InheritedObjectType
GUIDs (gated by IsObjectAceType) before the SID, leaving plain ACEs
untouched so existing Mask/Sid callers are unaffected. Expose the GUIDs
through AcePermissions and add GuidToString/GuidFromString for the
little-endian object-ACE wire layout, with round-trip tests.
2026-05-31 17:20:59 +02:00
Jimmy Fjällid 00ecda6111 Use the new golog Logger.SetDisplayName to give each package logger a
short, readable tag (e.g. "epm", "msdcom", "spnego") instead of the
full import path.
2026-05-31 17:19:42 +02:00
Jimmy Fjällid 8a63eaebab Upgraded dependencies 2026-05-31 17:17:08 +02:00
Jimmy Fjällid 1a0caf2698 updated gokrb5 lib version v0.8.2 2026-05-01 21:04:45 +02:00
Jimmy Fjällid 113498938a Added an ldap client which is a convenience wrapper around github.com/jfjallid/ldap/v3 exposing a limited search functionality v0.8.1 2026-05-01 17:13:43 +02:00
Jimmy Fjällid b74bcda39e Generalized the cifs->host ccache fallback into a configurable SPN alias map
(cifs/ldap/www/http/rpcss/dcom -> host by default), exposed via a new
SPNAliases field on spnego.KRB5Initiator and a new spnAliases parameter on
krb5ssp.InitKerberosClient/InitKerberosClientExt. The ccache lookup now uses
gokrb5's NewFromCCacheWithFallbacks to try the requested SPN first and then
each configured alias in order. Bumped gokrb5 to v8.6.1 (and crypto/net) to
pick up the new fallback API and the (Client, error) return signatures on
NewWithKey/Hash/Password. Added a KRB5Initiator.Client() accessor that lazily
initializes the Kerberos client so other consumers can share credentials and
the ST cache with the DCERPC SPNEGO path. Reduced log noise in mssamr
enumerations and msdrsr DRSBind/DSA GUID selection by demoting Infof to Debugf,
mapped DRSUAPI CrackNames status codes to readable names in error messages,
and fixed resolveTarget to recognize UPNs (containing '@') and fall through to
DSUnknownName instead of misclassifying them.
v0.8.0
2026-04-25 21:22:46 +02:00
Jimmy Fjällid 34258ada4f Merge pull request #24 from jfjallid/NewRPCServices
New rpc services
2026-04-20 22:40:39 +02:00
Jimmy Fjällid f6f349f915 Added minimal support for MS-EVEN and MS-RPRN to coerce authentication. 2026-04-20 20:40:54 +02:00
Jimmy Fjällid bab62115d7 When creating a kerberos client from a CCACHE file, support specifying both DNS and Netbios domain names.
When looking for service tickets in cache for cifs SPN, fallback to host SPN when cifs is missing.
Implemented RFC 4757 RC4 Wrap/MIC tokens to support both RC4 and AES for DCERPC.
2026-04-20 20:37:50 +02:00
Jimmy Fjällid 8c5145e1f8 Changed structs to work with updated NDR encoder and migrated from manual encoding/decoding to use NDR encoder 2026-04-20 20:36:51 +02:00
Jimmy Fjällid 7b48e5d68b Added support for modifying and querying more service settings including failure actions, sid type, dependencies, description, delayed autostart info, required privileges, preshutdown info, and preferred NUMA node.
Also changed to always require ServiceAllAccess when attempting to modify a service's settings.
Changed struct encoding/decoding to use the updated NDR encoder.
2026-04-20 20:35:17 +02:00
Jimmy Fjällid 7ad7430ea2 Removing structs migrated to github.com/jfjallid/mstypes package and some changes to better support NDR encoder 2026-04-20 20:34:42 +02:00
Jimmy Fjällid f465a09b89 Added support for channelBinding for use with LDAP 2026-04-20 20:34:01 +02:00
Jimmy Fjällid f1779838eb Updated logging to use log.Trace instead of log.Debug 2026-04-20 20:33:37 +02:00
Jimmy Fjällid 15ad05caaf Add MS-DCOM (Distributed COM) client with WMI support
Implement the DCOM DCERPC service client for remote COM object activation
and method invocation over TCP. The implementation includes:

- DCOMConnection and COMObject for managing DCOM sessions and COM objects
- IRemoteSCMActivator for COM class activation via port 135
- IRemUnknown for remote reference counting and QueryInterface
- IOXIDResolver for optional OXID resolution
- IDispatch for OLE Automation (QueryInterface, GetIDsOfNames, Invoke)
- DCOM structure marshaling/unmarshaling (OBJREF, MInterfacePointer,
  ORPCTHIS/ORPCTHAT, DUALSTRINGARRAY)
- WMIClient for IWbemLevel1Login, IWbemServices, and IEnumWbemClassObject
  providing Query, GetObject, and ExecMethod operations
- CIM binary encoding (MS-WMIO) for parsing class definitions and
  instances, and building method input parameters with support for all
  scalar types, byte arrays, and string arrays
2026-03-19 19:54:23 +01:00
Jimmy Fjällid e450d1f8ad Return found bool from msrrp QueryValue2 and reduce log noise
Add a found boolean return value to QueryValue2 so callers can
distinguish missing keys from errors without string matching. Downgrade
expected-case log messages from Error to Debug in both msrrp and
IoCtlRequest.
2026-03-18 19:57:33 +01:00
Jimmy Fjällid 284d221751 Add AlterContext, ObjectUUID, and BindNakError for DCOM support
Implement AlterContext to register additional presentation contexts on an
existing DCERPC connection. Add ObjectUUID support in request PDUs for
DCOM interface remoting. Introduce BindNakError as a typed error for
programmatic handling. Add SetSPN on KRB5Initiator for DCOM service
identity override.
2026-03-18 19:55:21 +01:00
Jimmy Fjällid dbb8a6695e Add PktIntegrity authentication level support to DCERPC
Extend the Sealer interface with Sign, VerifySign, and MICSignatureSize
methods for signing without encryption. Implement for both NTLM and
Kerberos (MIC tokens). Update sealRequestPDU/unsealResponsePDU to handle
PktIntegrity where the stub is signed but not encrypted.
2026-03-18 19:49:49 +01:00
Jimmy Fjällid 93e76651e6 Updated golog to v0.3.5 and moved all function entry type debug messages to LevelTrace 2026-03-06 14:07:30 +01:00
Jimmy Fjällid e72cce5725 Add MS-TSCH (Task Scheduler) client
Implement the TSCH DCERPC service client for managing scheduled tasks
including functionality to create, retrieve, run, stop and delete
scheduled tasks.
2026-03-06 14:02:11 +01:00
Jimmy Fjällid 35179105dc Add MS-DRSR (DRS Replication) client
Implement the DRSR DCERPC service client for replicating Active Directory
secrets via the DRSGetNCChanges RPC. Includes DES/AES/RC4 decryption of
replicated password hashes, PEK decryption, and NTDS secret extraction.
2026-03-06 11:44:51 +01:00
Jimmy Fjällid 09359110b3 Merge pull request #23 from jfjallid/decoupling
Decouple DCERPC from SMB and add TCP transport with full authentication support, and Endpoint Mapper
v0.7.0
2026-02-26 16:15:36 +01:00
Jimmy Fjällid 869bf63999 Fixed TCP example in README 2026-02-26 16:12:31 +01:00
Jimmy Fjällid 3a076202c6 Change epm methods to return a list of StringBindings instead of just one to support when the server responds with multiple towers 2026-02-25 18:02:22 +01:00
Jimmy Fjällid d3a315adef EPM methods that returned a port number for a given service UUID now returns a
StringBinding struct instead which contains both port and ip address to support
cases where a server binds a service to a secondary ip.
2026-02-25 15:11:06 +01:00
Jimmy Fjällid 63c0756f8f Add EPM floor helpers, fix DCE-style scoping, and randomize authContextId
- dcerpc/epm: add typed floor/tower accessor methods (GetTCPPorts,
    GetUDPPorts, GetIPAddresses, GetUUIDs, and per-floor helpers) with a
    UUIDFloor type returning UUID string, major, and minor versions; update
    GetTCPPort to delegate to GetTCPPorts; add comprehensive tests including
    IP address assertion from real captured wire data
  - dcerpc: add DCEStyleInitiator interface and call EnableDCEStyle() in
    BindAuth so GSS_C_DCE_STYLE is only set on the DCERPC TCP path, not SMB
  - dcerpc: generate a random authContextId per bind and propagate it to
    every security trailer written by sealRequestPDU
  - msdtyp: fix RPC_UNICODE_STRING MaxCount convention in WriteRPCUnicodeStrArray
    to use MaxCount = ActualCount+1 for non-null-terminated strings per
    MS-DTYP 2.3.10 (MaxLength = Length+2)
  - smb/encoder: use fmt.Sprintf format verbs instead of string concatenation
    in error messages
2026-02-25 13:15:28 +01:00
Jimmy Fjällid 21bd238d47 Maintainability improvements across the codebase
Fix broken tests, latent bugs, type duplication, and non-idiomatic Go
  style.

  Broken tests:
  - Fix dcerpc/msrrp tests that failed to compile due to unqualified
    msdtyp identifiers (AccessAllowedAceType, ContainerInheritAce, ACE,
    SID, etc.) — add msdtyp. prefix throughout msrrp_test.go and
    structures_test.go

  Bug fixes:
  - Fix ContextItem.UnmarshalBinary and ContextResList.UnmarshalBinary
    in dcerpc/structures.go which silently no-op'd by reassigning the
    local receiver pointer rather than dereferencing it
  - Remove debug fmt.Printf left in dcerpc/mslsad/lsad.go
  - Changed logger path in ntlmssp/client.go (bare "ntlmssp" → full module path)
  - Fix public API typo: spnego/krb5ssp.go DialTimout → DialTimeout

  Type consolidation:
  - Remove duplicate Filetime, PFiletime, RPCUnicodeStr, ReturnCode types
    from dcerpc/msrrp; use msdtyp equivalents throughout
  - Remove duplicate SecurityDescriptor, SID, ACE, PACL types from
    smb/smb.go; use msdtyp equivalents throughout smb/session.go

  Idiomatic Go style:
  - Replace self receiver name with short type-appropriate names across
    all packages (dcerpc, msdtyp, msrrp, mslsad, mssamr, msscmr, mssrvs,
    mswkst, krb5ssp, ntlmssp, smb/crypto, smb)
  - Rename snake_case parameters in dcerpc/dcerpc.go to camelCase
  - Replace errors.New(fmt.Sprintf(...)) with fmt.Errorf in ntlmssp
  - Replace fmt.Print* calls with logger calls in smb/connection.go,
    smb/smb.go, and smb/encoder/encoder.go
  - Fix runSender receiver name in smb/connection.go

  Clarity:
  - Add defaultMaxFragSize constant for the magic number 4280 in
    dcerpc/dcerpc.go; add comment explaining the send/recv size inversion
  - Remove dead commented-out code (MessageSignature blocks in ntlmssp,
    debug lines in encoder, stale Credits assignment in session)

  Test quality:
  - Replace bytes.Compare(a,b) != 0 with !bytes.Equal(a,b)
  - Remove unreachable return statements after t.Fatal calls
  - Replace opaque t.Error("Fail") calls with descriptive t.Errorf
    messages showing expected vs actual values

  Refactoring:
  - Extract connectToTree helper in smb/session.go to eliminate repeated
    tree-connect/disconnect boilerplate from RetrieveFile, PutFile,
    deleteFileDir, Mkdir, and MkdirAll
2026-02-19 14:57:45 +01:00
Jimmy Fjällid 83f1b17619 Added support for Kerberos encryption over TCP via PktPrivacy. Also fixed a problem with missing port number for custom DnsHost when using Kerberos authentication 2026-02-19 11:23:05 +01:00
Jimmy Fjällid afa4234ca1 Added support for encryption when using DCERPC over TCP and with NTLM auth 2026-02-13 11:46:41 +01:00
Jimmy Fjällid 051ca85dd9 Added support for RPC_C_AUTHN_LEVEL_CONNECT 2026-02-12 16:45:20 +01:00
Jimmy Fjällid 1d1d67c7f9 Added support for the Endpoint Mapper to lookup which TCP port a given service is exposed on 2026-02-12 13:01:59 +01:00
Jimmy Fjällid f97e259852 Decoupled DCERPC code from SMB code by creating a new interface and prepared to separate DCERPC code into a new package. 2026-02-07 19:28:43 +01:00
Jimmy Fjällid bf1d3d7eb5 Removed trailing padding after NegotiateContext items. Fixes #22 v0.6.7 2025-11-18 11:40:02 +01:00
Jimmy Fjällid 97e9059080 Fixes issue with deserializing the response for SamrGetMembersInAlias v0.6.6 2025-08-09 15:19:54 +02:00
Jimmy Fjällid 842acc774c fixed dependency versions v0.6.5 2025-07-29 11:41:17 +02:00
Jimmy Fjällid f1a5ad95f3 Added three methods from MS-LSAT:
- LsarGetUserName: whoami method to return the caller's identity
- LsarLookupSids2: Translate a list of SIDs to domains and names, including cross forest if there is a trust.
- LsarLookupNames3: Translate a list of names to their corresponding SID, including cross foreT if there is a trust.

Added a new method from MS-SRVS (NetGetFileSecurity) which can be used to retrieve the security descriptor for a file on a file share.
2025-07-29 11:24:20 +02:00
Jimmy Fjällid 802837b47e Added new method to initiate a kerberos client with a custom config, with a socks proxy and with a custom dial timeout.
Added options to force DNS over TCP and to specify a custom DNS resolver.
Added a few extra error codes.
v0.6.3
2025-06-10 18:51:45 +02:00
Jimmy Fjällid 9ecded50dc SMB:
- The smb.FsctlStatusMap has been merged into smb.StatusMap for improved handling of response codes.

MS-SAMR:
- Added new request SamrCreateUser2InDomain to support creating machine accounts.

MS-RRP:
- Refactoring of code to put some shared structures and functions in the new MS-DTYP package.
- Added new methods to create and delete registry keys and to create, enumerate, modify and delete key values.
- Added support for interacting with HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER, and HKEY_USERS.
- RegSaveKey will now use a system default ACL if no owner SID is provided.
- Fixed a limitation in GetSubKeyNames where it previously was not possible to enumerate the root key names by leaving the subkey argument empty.
- New method GetKeySecurityExt which accepts argument to decide what security information to retrieve.
- New method QueryValue2 which in addition to retrieving a value also returns the value type.
- New method QueryValueExt converts the retrieved value to the data type and returns it as an interface.

MS-DTYP:
- Added a method to parse and retrieve the entries of an DACL.
v0.6.2
2025-04-27 13:47:32 +02:00