mswkst
import "github.com/TheManticoreProject/Manticore/windows/protocols/ms-wkst"
Index
- type JOINPR_ENCRYPTED_USER_PASSWORD
- type JOINPR_ENCRYPTED_USER_PASSWORD_AES
- type JOINPR_USER_PASSWORD
- type NETSETUP_JOIN_STATUS
- type NETSETUP_NAME_TYPE
- type NET_COMPUTER_NAME_ARRAY
- type NET_COMPUTER_NAME_TYPE
- type STAT_WORKSTATION_0
- type USE_ENUM_STRUCT
- type USE_ENUM_UNION
- type USE_INFO
- type USE_INFO_0
- type USE_INFO_0_CONTAINER
- type USE_INFO_1
- type USE_INFO_1_CONTAINER
- type USE_INFO_2
- type USE_INFO_2_CONTAINER
- type USE_INFO_3
- type WKSTA_INFO
- type WKSTA_INFO_100
- type WKSTA_INFO_101
- type WKSTA_INFO_1013
- type WKSTA_INFO_1018
- type WKSTA_INFO_102
- type WKSTA_INFO_1046
- type WKSTA_INFO_502
- type WKSTA_TRANSPORT_ENUM_STRUCT
- type WKSTA_TRANSPORT_ENUM_UNION
- type WKSTA_TRANSPORT_INFO_0
- type WKSTA_TRANSPORT_INFO_0_CONTAINER
- type WKSTA_USER_ENUM_STRUCT
- type WKSTA_USER_ENUM_UNION
- type WKSTA_USER_INFO_0
- type WKSTA_USER_INFO_0_CONTAINER
- type WKSTA_USER_INFO_1
- type WKSTA_USER_INFO_1_CONTAINER
type JOINPR\_ENCRYPTED\_USER\_PASSWORD
JOINPR_ENCRYPTED_USER_PASSWORD is the RC4-encrypted join password ([MS-WKST] 2.2.5.18). Buffer is a FIXED array of JOIN_OBFUSCATOR_LENGTH + JOIN_MAX_PASSWORD_LENGTH*sizeof(wchar_t) + sizeof(unsigned long) = 8 + 256*2 + 4 = 524 bytes (no conformance, no referent id), so it is modeled as a Go fixed array rather than a slice.
type JOINPR_ENCRYPTED_USER_PASSWORD struct {
Buffer [524]uint8
}
type JOINPR\_ENCRYPTED\_USER\_PASSWORD\_AES
JOINPR_ENCRYPTED_USER_PASSWORD_AES ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type JOINPR_ENCRYPTED_USER_PASSWORD_AES struct {
AuthData [64]uint8
Salt [16]uint8
CbCipher ndr.DWORD
Cipher []uint8 `ndr:"unique,size_is=CbCipher"`
}
type JOINPR\_USER\_PASSWORD
JOINPR_USER_PASSWORD is the cleartext join password structure ([MS-WKST] 2.2.5.17). All fields are fixed-size: Obfuscator is JOIN_OBFUSCATOR_LENGTH (8) bytes, Buffer is JOIN_MAX_PASSWORD_LENGTH (256) wchar_t, and Length is the byte length of the password stored at the tail of Buffer. The structure is never sent as plaintext on the wire; it is encrypted into a JOINPR_ENCRYPTED_USER_PASSWORD first. The arrays are FIXED NDR arrays (no conformance, no referent id), so they are modeled as Go fixed arrays.
type JOINPR_USER_PASSWORD struct {
Obfuscator [8]uint8
Buffer [256]uint16
Length ndr.DWORD
}
type NETSETUP\_JOIN\_STATUS
NETSETUP_JOIN_STATUS is an NDR enum, transmitted as a 16-bit value ([C706] 14.3.6, [MS-WKST]).
type NETSETUP_JOIN_STATUS uint16
const (
NetSetupUnknownStatus NETSETUP_JOIN_STATUS = 0
NetSetupUnjoined NETSETUP_JOIN_STATUS = 1
NetSetupWorkgroupName NETSETUP_JOIN_STATUS = 2
NetSetupDomainName NETSETUP_JOIN_STATUS = 3
)
type NETSETUP\_NAME\_TYPE
NETSETUP_NAME_TYPE is an NDR enum, transmitted as a 16-bit value ([C706] 14.3.6, [MS-WKST]).
type NETSETUP_NAME_TYPE uint16
const (
NetSetupUnknown NETSETUP_NAME_TYPE = 0
NetSetupMachine NETSETUP_NAME_TYPE = 1
NetSetupWorkgroup NETSETUP_NAME_TYPE = 2
NetSetupDomain NETSETUP_NAME_TYPE = 3
NetSetupNonExistentDomain NETSETUP_NAME_TYPE = 4
NetSetupDnsMachine NETSETUP_NAME_TYPE = 5
)
type NET\_COMPUTER\_NAME\_ARRAY
NET_COMPUTER_NAME_ARRAY is the list of computer names returned by NetrEnumerateComputerNames ([MS-WKST] 2.2.5.20). ComputerNames is a unique pointer to a conformant array of EntryCount counted Unicode strings. The [MS-WKST] UNICODE_STRING is structurally the [MS-DTYP] RPC_UNICODE_STRING, so we reuse msdtyp.RPC_UNICODE_STRING.
type NET_COMPUTER_NAME_ARRAY struct {
EntryCount ndr.DWORD
ComputerNames []msdtyp.RPC_UNICODE_STRING `ndr:"unique,size_is=EntryCount"`
}
type NET\_COMPUTER\_NAME\_TYPE
NET_COMPUTER_NAME_TYPE is an NDR enum, transmitted as a 16-bit value ([C706] 14.3.6, [MS-WKST]).
type NET_COMPUTER_NAME_TYPE uint16
const (
NetPrimaryComputerName NET_COMPUTER_NAME_TYPE = 0
NetAlternateComputerNames NET_COMPUTER_NAME_TYPE = 1
NetAllComputerNames NET_COMPUTER_NAME_TYPE = 2
NetComputerNameTypeMax NET_COMPUTER_NAME_TYPE = 3
)
type STAT\_WORKSTATION\_0
STAT_WORKSTATION_0 ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type STAT_WORKSTATION_0 struct {
StatisticsStartTime msdtyp.LARGE_INTEGER
BytesReceived msdtyp.LARGE_INTEGER
SmbsReceived msdtyp.LARGE_INTEGER
PagingReadBytesRequested msdtyp.LARGE_INTEGER
NonPagingReadBytesRequested msdtyp.LARGE_INTEGER
CacheReadBytesRequested msdtyp.LARGE_INTEGER
NetworkReadBytesRequested msdtyp.LARGE_INTEGER
BytesTransmitted msdtyp.LARGE_INTEGER
SmbsTransmitted msdtyp.LARGE_INTEGER
PagingWriteBytesRequested msdtyp.LARGE_INTEGER
NonPagingWriteBytesRequested msdtyp.LARGE_INTEGER
CacheWriteBytesRequested msdtyp.LARGE_INTEGER
NetworkWriteBytesRequested msdtyp.LARGE_INTEGER
InitiallyFailedOperations ndr.DWORD
FailedCompletionOperations ndr.DWORD
ReadOperations ndr.DWORD
RandomReadOperations ndr.DWORD
ReadSmbs ndr.DWORD
LargeReadSmbs ndr.DWORD
SmallReadSmbs ndr.DWORD
WriteOperations ndr.DWORD
RandomWriteOperations ndr.DWORD
WriteSmbs ndr.DWORD
LargeWriteSmbs ndr.DWORD
SmallWriteSmbs ndr.DWORD
RawReadsDenied ndr.DWORD
RawWritesDenied ndr.DWORD
NetworkErrors ndr.DWORD
Sessions ndr.DWORD
FailedSessions ndr.DWORD
Reconnects ndr.DWORD
CoreConnects ndr.DWORD
Lanman20Connects ndr.DWORD
Lanman21Connects ndr.DWORD
LanmanNtConnects ndr.DWORD
ServerDisconnects ndr.DWORD
HungSessions ndr.DWORD
UseCount ndr.DWORD
FailedUseCount ndr.DWORD
CurrentCommands ndr.DWORD
}
type USE\_ENUM\_STRUCT
USE_ENUM_STRUCT ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type USE_ENUM_STRUCT struct {
Level ndr.DWORD
UseInfo USE_ENUM_UNION
}
type USE\_ENUM\_UNION
USE_ENUM_UNION is a discriminated union ([MS-WKST] 2.2.5.23). switch_type is DWORD; the discriminant is transmitted inline before the selected arm ([C706] 14.3.8). Every arm is a unique pointer container (LPUSE_INFO_0_CONTAINER, …), so each arm is a pointer field with `unique`; an inline-value arm would drop the container referent id and desync decode.
type USE_ENUM_UNION struct {
Tag ndr.DWORD `ndr:"switch"`
Level0 *USE_INFO_0_CONTAINER `ndr:"case=0,unique"`
Level1 *USE_INFO_1_CONTAINER `ndr:"case=1,unique"`
Level2 *USE_INFO_2_CONTAINER `ndr:"case=2,unique"`
}
type USE\_INFO
USE_INFO is a discriminated union ([MS-WKST] 2.2.5.22). switch_type is unsigned long, so the discriminant is a DWORD, transmitted inline before the selected arm ([C706] 14.3.8). Every arm in the IDL is a unique pointer (LPUSE_INFO_0, …), so each arm is a pointer field with `unique`; an inline-value arm would drop the arm referent id and desync decode.
type USE_INFO struct {
Tag ndr.DWORD `ndr:"switch"`
UseInfo0 *USE_INFO_0 `ndr:"case=0,unique"`
UseInfo1 *USE_INFO_1 `ndr:"case=1,unique"`
UseInfo2 *USE_INFO_2 `ndr:"case=2,unique"`
UseInfo3 *USE_INFO_3 `ndr:"case=3,unique"`
}
type USE\_INFO\_0
USE_INFO_0 ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type USE_INFO_0 struct {
Ui0_local *ndr.WSTR `ndr:"unique"`
Ui0_remote *ndr.WSTR `ndr:"unique"`
}
type USE\_INFO\_0\_CONTAINER
USE_INFO_0_CONTAINER ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type USE_INFO_0_CONTAINER struct {
EntriesRead ndr.DWORD
Buffer *USE_INFO_0 `ndr:"unique"`
}
type USE\_INFO\_1
USE_INFO_1 ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type USE_INFO_1 struct {
Ui1_local *ndr.WSTR `ndr:"unique"`
Ui1_remote *ndr.WSTR `ndr:"unique"`
Ui1_password *ndr.WSTR `ndr:"unique"`
Ui1_status ndr.DWORD
Ui1_asg_type ndr.DWORD
Ui1_refcount ndr.DWORD
Ui1_usecount ndr.DWORD
}
type USE\_INFO\_1\_CONTAINER
USE_INFO_1_CONTAINER ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type USE_INFO_1_CONTAINER struct {
EntriesRead ndr.DWORD
Buffer *USE_INFO_1 `ndr:"unique"`
}
type USE\_INFO\_2
USE_INFO_2 ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type USE_INFO_2 struct {
Ui2_useinfo USE_INFO_1
Ui2_username *ndr.WSTR `ndr:"unique"`
Ui2_domainname *ndr.WSTR `ndr:"unique"`
}
type USE\_INFO\_2\_CONTAINER
USE_INFO_2_CONTAINER ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type USE_INFO_2_CONTAINER struct {
EntriesRead ndr.DWORD
Buffer *USE_INFO_2 `ndr:"unique"`
}
type USE\_INFO\_3
USE_INFO_3 ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type USE_INFO_3 struct {
Ui3_ui2 USE_INFO_2
Ui3_flags ndr.DWORD
}
type WKSTA\_INFO
WKSTA_INFO is a discriminated union ([MS-WKST] 2.2.4.1). switch_type is unsigned long, so the discriminant is a DWORD, transmitted inline before the selected arm ([C706] 14.3.8). Every arm in the IDL is a unique pointer (LPWKSTA_INFO_100, …), so each arm is a pointer field with `unique`: the codec emits the arm referent id after the discriminant and defers the body. Modeling an arm as an inline value would drop that referent id and desync the decode by four bytes.
type WKSTA_INFO struct {
Tag ndr.DWORD `ndr:"switch"`
WkstaInfo100 *WKSTA_INFO_100 `ndr:"case=100,unique"`
WkstaInfo101 *WKSTA_INFO_101 `ndr:"case=101,unique"`
WkstaInfo102 *WKSTA_INFO_102 `ndr:"case=102,unique"`
WkstaInfo502 *WKSTA_INFO_502 `ndr:"case=502,unique"`
WkstaInfo1013 *WKSTA_INFO_1013 `ndr:"case=1013,unique"`
WkstaInfo1018 *WKSTA_INFO_1018 `ndr:"case=1018,unique"`
WkstaInfo1046 *WKSTA_INFO_1046 `ndr:"case=1046,unique"`
}
type WKSTA\_INFO\_100
WKSTA_INFO_100 ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type WKSTA_INFO_100 struct {
Wki100_platform_id ndr.DWORD
Wki100_computername *ndr.WSTR `ndr:"unique"`
Wki100_langroup *ndr.WSTR `ndr:"unique"`
Wki100_ver_major ndr.DWORD
Wki100_ver_minor ndr.DWORD
}
type WKSTA\_INFO\_101
WKSTA_INFO_101 ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type WKSTA_INFO_101 struct {
Wki101_platform_id ndr.DWORD
Wki101_computername *ndr.WSTR `ndr:"unique"`
Wki101_langroup *ndr.WSTR `ndr:"unique"`
Wki101_ver_major ndr.DWORD
Wki101_ver_minor ndr.DWORD
Wki101_lanroot *ndr.WSTR `ndr:"unique"`
}
type WKSTA\_INFO\_1013
WKSTA_INFO_1013 ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type WKSTA_INFO_1013 struct {
Wki1013_keep_conn ndr.DWORD
}
type WKSTA\_INFO\_1018
WKSTA_INFO_1018 ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type WKSTA_INFO_1018 struct {
Wki1018_sess_timeout ndr.DWORD
}
type WKSTA\_INFO\_102
WKSTA_INFO_102 ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type WKSTA_INFO_102 struct {
Wki102_platform_id ndr.DWORD
Wki102_computername *ndr.WSTR `ndr:"unique"`
Wki102_langroup *ndr.WSTR `ndr:"unique"`
Wki102_ver_major ndr.DWORD
Wki102_ver_minor ndr.DWORD
Wki102_lanroot *ndr.WSTR `ndr:"unique"`
Wki102_logged_on_users ndr.DWORD
}
type WKSTA\_INFO\_1046
WKSTA_INFO_1046 ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type WKSTA_INFO_1046 struct {
Wki1046_dormant_file_limit ndr.DWORD
}
type WKSTA\_INFO\_502
WKSTA_INFO_502 ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type WKSTA_INFO_502 struct {
Wki502_char_wait ndr.DWORD
Wki502_collection_time ndr.DWORD
Wki502_maximum_collection_count ndr.DWORD
Wki502_keep_conn ndr.DWORD
Wki502_max_cmds ndr.DWORD
Wki502_sess_timeout ndr.DWORD
Wki502_siz_char_buf ndr.DWORD
Wki502_max_threads ndr.DWORD
Wki502_lock_quota ndr.DWORD
Wki502_lock_increment ndr.DWORD
Wki502_lock_maximum ndr.DWORD
Wki502_pipe_increment ndr.DWORD
Wki502_pipe_maximum ndr.DWORD
Wki502_cache_file_timeout ndr.DWORD
Wki502_dormant_file_limit ndr.DWORD
Wki502_read_ahead_throughput ndr.DWORD
Wki502_num_mailslot_buffers ndr.DWORD
Wki502_num_srv_announce_buffers ndr.DWORD
Wki502_max_illegal_datagram_events ndr.DWORD
Wki502_illegal_datagram_event_reset_frequency ndr.DWORD
Wki502_log_election_packets int32
Wki502_use_opportunistic_locking int32
Wki502_use_unlock_behind int32
Wki502_use_close_behind int32
Wki502_buf_named_pipes int32
Wki502_use_lock_read_unlock int32
Wki502_utilize_nt_caching int32
Wki502_use_raw_read int32
Wki502_use_raw_write int32
Wki502_use_write_raw_data int32
Wki502_use_encryption int32
Wki502_buf_files_deny_write int32
Wki502_buf_read_only_files int32
Wki502_force_core_create_mode int32
Wki502_use_512_byte_max_transfer int32
}
type WKSTA\_TRANSPORT\_ENUM\_STRUCT
WKSTA_TRANSPORT_ENUM_STRUCT ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type WKSTA_TRANSPORT_ENUM_STRUCT struct {
Level ndr.DWORD
WkstaTransportInfo WKSTA_TRANSPORT_ENUM_UNION
}
type WKSTA\_TRANSPORT\_ENUM\_UNION
WKSTA_TRANSPORT_ENUM_UNION is a discriminated union ([MS-WKST]); the discriminant precedes the selected arm ([C706] 14.3.8). Generated by tools/idlgen — verify case values. Every arm is a unique pointer container (LPWKSTA_TRANSPORT_INFO_0_CONTAINER), so the arm is a pointer field with `unique`; an inline-value arm would drop the container referent id.
type WKSTA_TRANSPORT_ENUM_UNION struct {
Tag ndr.DWORD `ndr:"switch"`
Level0 *WKSTA_TRANSPORT_INFO_0_CONTAINER `ndr:"case=0,unique"`
}
type WKSTA\_TRANSPORT\_INFO\_0
WKSTA_TRANSPORT_INFO_0 ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type WKSTA_TRANSPORT_INFO_0 struct {
Wkti0_quality_of_service ndr.DWORD
Wkti0_number_of_vcs ndr.DWORD
Wkti0_transport_name *ndr.WSTR `ndr:"unique"`
Wkti0_transport_address *ndr.WSTR `ndr:"unique"`
Wkti0_wan_ish ndr.DWORD
}
type WKSTA\_TRANSPORT\_INFO\_0\_CONTAINER
WKSTA_TRANSPORT_INFO_0_CONTAINER ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type WKSTA_TRANSPORT_INFO_0_CONTAINER struct {
EntriesRead ndr.DWORD
Buffer []WKSTA_TRANSPORT_INFO_0 `ndr:"unique,size_is=EntriesRead"`
}
type WKSTA\_USER\_ENUM\_STRUCT
WKSTA_USER_ENUM_STRUCT ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type WKSTA_USER_ENUM_STRUCT struct {
Level ndr.DWORD
WkstaUserInfo WKSTA_USER_ENUM_UNION
}
type WKSTA\_USER\_ENUM\_UNION
WKSTA_USER_ENUM_UNION is a discriminated union ([MS-WKST] 2.2.5.14). switch_type is DWORD; the discriminant is transmitted inline before the selected arm ([C706] 14.3.8). Every arm is a unique pointer container (LPWKSTA_USER_INFO_0_CONTAINER, …), so each arm is a pointer field with `unique`; an inline-value arm would drop the container referent id.
type WKSTA_USER_ENUM_UNION struct {
Tag ndr.DWORD `ndr:"switch"`
Level0 *WKSTA_USER_INFO_0_CONTAINER `ndr:"case=0,unique"`
Level1 *WKSTA_USER_INFO_1_CONTAINER `ndr:"case=1,unique"`
}
type WKSTA\_USER\_INFO\_0
WKSTA_USER_INFO_0 ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type WKSTA_USER_INFO_0 struct {
Wkui0_username *ndr.WSTR `ndr:"unique"`
}
type WKSTA\_USER\_INFO\_0\_CONTAINER
WKSTA_USER_INFO_0_CONTAINER ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type WKSTA_USER_INFO_0_CONTAINER struct {
EntriesRead ndr.DWORD
Buffer []WKSTA_USER_INFO_0 `ndr:"unique,size_is=EntriesRead"`
}
type WKSTA\_USER\_INFO\_1
WKSTA_USER_INFO_1 ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type WKSTA_USER_INFO_1 struct {
Wkui1_username *ndr.WSTR `ndr:"unique"`
Wkui1_logon_domain *ndr.WSTR `ndr:"unique"`
Wkui1_oth_domains *ndr.WSTR `ndr:"unique"`
Wkui1_logon_server *ndr.WSTR `ndr:"unique"`
}
type WKSTA\_USER\_INFO\_1\_CONTAINER
WKSTA_USER_INFO_1_CONTAINER ([MS-WKST]). Generated by tools/idlgen; verify pointer/array tags.
type WKSTA_USER_INFO_1_CONTAINER struct {
EntriesRead ndr.DWORD
Buffer []WKSTA_USER_INFO_1 `ndr:"unique,size_is=EntriesRead"`
}