Generated from Manticore v1.1.6 • 388 packages. View on pkg.go.dev

mswkst

import "github.com/TheManticoreProject/Manticore/windows/protocols/ms-wkst"

Index

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"`
}