📄 nbt.idl
字号:
dgram_msg_type msg_type; dgram_flags flags; uint16 dgram_id; ipv4address src_addr; uint16 src_port; [switch_is(msg_type)] dgram_data data; } nbt_dgram_packet; /****************************************** * \MAILSLOT\NET\NETLOGON mailslot requests * and * \MAILSLOT\NET\NTLOGON mailslot requests */ typedef [public,gensize] struct { uint32 sa_family; [flag(NDR_BIG_ENDIAN)] ipv4address pdc_ip; [flag(NDR_REMAINING)] DATA_BLOB remaining; } nbt_sockaddr; typedef [bitmap32bit,public] bitmap { NBT_SERVER_PDC = 0x00000001, NBT_SERVER_GC = 0x00000004, NBT_SERVER_LDAP = 0x00000008, NBT_SERVER_DS = 0x00000010, NBT_SERVER_KDC = 0x00000020, NBT_SERVER_TIMESERV = 0x00000040, NBT_SERVER_CLOSEST = 0x00000080, NBT_SERVER_WRITABLE = 0x00000100, NBT_SERVER_GOOD_TIMESERV = 0x00000200 } nbt_server_type; typedef [bitmap32bit,public] bitmap { NETLOGON_NT_VERSION_1 = 0x00000001, NETLOGON_NT_VERSION_5 = 0x00000002, NETLOGON_NT_VERSION_5EX = 0x00000004, NETLOGON_NT_VERSION_5EX_WITH_IP = 0x00000008, NETLOGON_NT_VERSION_WITH_CLOSEST_SITE = 0x00000010, NETLOGON_NT_VERSION_AVIOD_NT4EMUL = 0x01000000, NETLOGON_NT_VERSION_PDC = 0x10000000, NETLOGON_NT_VERSION_IP = 0x20000000, NETLOGON_NT_VERSION_LOCAL = 0x40000000, NETLOGON_NT_VERSION_GC = 0x80000000 } netlogon_nt_version_flags; typedef [enum16bit,public] enum { LOGON_PRIMARY_QUERY = 7, /* Was also NETLOGON_QUERY_FOR_PDC */ NETLOGON_ANNOUNCE_UAS = 10, NETLOGON_RESPONSE_FROM_PDC = 12, LOGON_SAM_LOGON_REQUEST = 18, /* Was also NETLOGON_QUERY_FOR_PDC2, NTLOGON_SAM_LOGON */ LOGON_SAM_LOGON_RESPONSE = 19, /* Was also NTLOGON_SAM_LOGON_REPLY */ LOGON_SAM_LOGON_PAUSE_RESPONSE = 20, LOGON_SAM_LOGON_USER_UNKNOWN = 21, /* Was also NTLOGON_SAM_LOGON_REPLY15 */ LOGON_SAM_LOGON_RESPONSE_EX = 23, /* was NETLOGON_RESPONSE_FROM_PDC2 */ LOGON_SAM_LOGON_PAUSE_RESPONSE_EX = 24, LOGON_SAM_LOGON_USER_UNKNOWN_EX = 25 /* was NETLOGON_RESPONSE_FROM_PDC_USER */ } netlogon_command; typedef bitmap samr_AcctFlags samr_AcctFlags; /* query to dc hand marshaled, as it has 'optional' * parts */ typedef [nopull,nopush] struct { uint16 request_count; nstring computer_name; nstring user_name; astring mailslot_name; samr_AcctFlags acct_control; [value(ndr_size_dom_sid0(&sid, ndr->flags))] uint32 sid_size; /* The manual alignment is required because this * structure is marked flag(NDR_NOALIGN) via the * nbt_netlogon_packet below. * * However, both MUST only be present if sid_size > 0 */ [flag(NDR_ALIGN4)] DATA_BLOB _pad; [subcontext(0),subcontext_size(sid_size)] dom_sid0 sid; netlogon_nt_version_flags nt_version; uint16 lmnt_token; uint16 lm20_token; } NETLOGON_SAM_LOGON_REQUEST; typedef [flag(NDR_NOALIGN),public] struct { netlogon_command command; nstring server; nstring user_name; nstring domain; netlogon_nt_version_flags nt_version; uint16 lmnt_token; uint16 lm20_token; } NETLOGON_SAM_LOGON_RESPONSE_NT40; typedef [flag(NDR_NOALIGN),public] struct { netlogon_command command; nstring pdc_name; nstring user_name; nstring domain_name; GUID domain_uuid; GUID zero_uuid; nbt_string forest; nbt_string dns_domain; nbt_string pdc_dns_name; ipv4address pdc_ip; nbt_server_type server_type; netlogon_nt_version_flags nt_version; uint16 lmnt_token; uint16 lm20_token; } NETLOGON_SAM_LOGON_RESPONSE; /* response from pdc hand marshaled (we have an additional * function that uses this structure), as it has 'optional' * parts */ typedef [flag(NDR_NOALIGN),public] struct { netlogon_command command; uint16 sbz; /* From the docs */ nbt_server_type server_type; GUID domain_uuid; nbt_string forest; nbt_string dns_domain; nbt_string pdc_dns_name; nbt_string domain; nbt_string pdc_name; nbt_string user_name; nbt_string server_site; nbt_string client_site; /* Optional on NETLOGON_NT_VERSION_5EX_WITH_IP */ [value(ndr_size_nbt_sockaddr(&sockaddr, ndr->flags))] uint8 sockaddr_size; [subcontext(0),subcontext_size(sockaddr_size)] nbt_sockaddr sockaddr; /* Optional on NETLOGON_NT_VERSION_WITH_CLOSEST_SITE */ nbt_string next_closest_site; netlogon_nt_version_flags nt_version; uint16 lmnt_token; uint16 lm20_token; } NETLOGON_SAM_LOGON_RESPONSE_EX; /* query for pdc request */ typedef struct { astring computer_name; astring mailslot_name; [flag(NDR_ALIGN2)] DATA_BLOB _pad; nstring unicode_name; netlogon_nt_version_flags nt_version; uint16 lmnt_token; uint16 lm20_token; } nbt_netlogon_query_for_pdc; /* response from pdc */ typedef [flag(NDR_NOALIGN),public] struct { netlogon_command command; astring pdc_name; [flag(NDR_ALIGN2)] DATA_BLOB _pad; nstring unicode_pdc_name; nstring domain_name; netlogon_nt_version_flags nt_version; uint16 lmnt_token; uint16 lm20_token; } nbt_netlogon_response_from_pdc; typedef enum netr_SamDatabaseID netr_SamDatabaseID; /* used to announce SAM changes - MS-NRPC 2.2.1.5.1 */ typedef struct { netr_SamDatabaseID db_index; hyper serial; NTTIME timestamp; } nbt_db_change_info; typedef struct { uint32 serial_lo; time_t timestamp; uint32 pulse; uint32 random; astring pdc_name; astring domain; [flag(NDR_ALIGN2)] DATA_BLOB _pad; nstring unicode_pdc_name; nstring unicode_domain; uint32 db_count; nbt_db_change_info dbchange[db_count]; [value(ndr_size_dom_sid0(&sid, ndr->flags))] uint32 sid_size; [subcontext(0),subcontext_size(sid_size)] dom_sid0 sid; uint32 message_format_version; uint32 message_token; } NETLOGON_DB_CHANGE; typedef [nodiscriminant] union { [case(LOGON_SAM_LOGON_REQUEST)] NETLOGON_SAM_LOGON_REQUEST logon; [case(LOGON_PRIMARY_QUERY)] nbt_netlogon_query_for_pdc pdc; [case(NETLOGON_ANNOUNCE_UAS)] NETLOGON_DB_CHANGE uas; } nbt_netlogon_request;#if 0 [case(NETLOGON_RESPONSE_FROM_PDC)] nbt_netlogon_response_from_pdc response; [case(NETLOGON_RESPONSE_FROM_PDC_USER)] nbt_netlogon_response_from_pdc2 response2; [case(LOGON_SAM_LOGON_PAUSE_RESPONSE)] NETLOGON_SAM_LOGON_RESPONSE reply; [case(LOGON_SAM_LOGON_RESPONSE)] NETLOGON_SAM_LOGON_RESPONSE reply; [case(LOGON_SAM_LOGON_USER_UNKNOWN)] NETLOGON_SAM_LOGON_RESPONSE reply; [case(LOGON_SAM_LOGON_RESPONSE_EX)] NETLOGON_SAM_LOGON_RESPONSE_EX reply_ex; [case(LOGON_SAM_LOGON_PAUSE_RESPONSE_EX)] NETLOGON_SAM_LOGON_RESPONSE_EX reply_ex; [case(LOGON_SAM_LOGON_USER_UNKNOWN_EX)] NETLOGON_SAM_LOGON_RESPONSE_EX reply_ex;#endif typedef [flag(NDR_NOALIGN),public] struct { netlogon_command command; [switch_is(command)] nbt_netlogon_request req; } nbt_netlogon_packet; /********************************************************/ /* \MAILSLOT\BROWSE mailslot requests */ /* for details see http://ubiqx.org/cifs/Browsing.html */ /********************************************************/ typedef bitmap svcctl_ServerType svcctl_ServerType; typedef [enum8bit] enum { HostAnnouncement = 1, AnnouncementRequest = 2, Election = 8, GetBackupListReq = 9, GetBackupListResp = 10, BecomeBackup = 11, DomainAnnouncement = 12, MasterAnnouncement = 13, ResetBrowserState = 14, LocalMasterAnnouncement = 15 } nbt_browse_opcode; typedef struct { uint8 UpdateCount; uint32 Periodicity; [charset(DOS)] uint8 ServerName[16]; uint8 OSMajor; uint8 OSMinor; svcctl_ServerType ServerType; uint8 BroMajorVer; uint8 BroMinorVer; uint16 Signature; astring Comment; } nbt_browse_host_announcement; typedef struct { uint8 Unused; astring ResponseName; } nbt_browse_announcement_request; typedef struct { uint8 Version; uint32 Criteria; uint32 UpTime; /* In milliseconds */ uint32 Reserved; /* Must be zero */ astring ServerName; } nbt_browse_election_request; typedef struct { uint8 ReqCount; uint32 Token; } nbt_browse_backup_list_request; typedef struct { uint8 BackupCount; uint32 Token; nbt_name BackupServerList[BackupCount];/* TODO: this is wrong */ } nbt_browse_backup_list_response; typedef struct { astring BrowserName; } nbt_browse_become_backup; typedef struct { uint8 UpdateCount; uint32 Periodicity; [charset(DOS)] uint8 ServerName[16]; uint8 OSMajor; uint8 OSMinor; svcctl_ServerType ServerType; uint32 MysteriousField; astring Comment; } nbt_browse_domain_announcement; typedef struct { astring ServerName; } nbt_browse_master_announcement; typedef struct { uint8 Command; } nbt_browse_reset_state; typedef struct { uint8 UpdateCount; uint32 Periodicity; [charset(DOS)] uint8 ServerName[16]; uint8 OSMajor; uint8 OSMinor; svcctl_ServerType ServerType; uint8 BroMajorVer; uint8 BroMinorVer; uint16 Signature; astring Comment; } nbt_browse_local_master_announcement; typedef [nodiscriminant] union { [case(HostAnnouncement)] nbt_browse_host_announcement host_annoucement; [case(AnnouncementRequest)] nbt_browse_announcement_request announcement_request; [case(Election)] nbt_browse_election_request election_request; [case(GetBackupListReq)] nbt_browse_backup_list_request backup_list_request; [case(GetBackupListResp)] nbt_browse_backup_list_response backup_list_response; [case(BecomeBackup)] nbt_browse_become_backup become_backup; [case(DomainAnnouncement)] nbt_browse_domain_announcement domain_announcement; [case(MasterAnnouncement)] nbt_browse_master_announcement master_announcement; [case(ResetBrowserState)] nbt_browse_reset_state reset_browser_state; [case(LocalMasterAnnouncement)] nbt_browse_local_master_announcement local_master_announcement; } nbt_browse_payload; typedef [public,flag(NDR_NOALIGN)] struct { nbt_browse_opcode opcode; [switch_is(opcode)] nbt_browse_payload payload; } nbt_browse_packet;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -