12 #ifndef __PACKET_DCERPC_H__
13 #define __PACKET_DCERPC_H__
16 #include "ws_symbol_export.h"
22 #define DCERPC_TABLE_NAME "dcerpc.uuid"
26 #define DREP_LITTLE_ENDIAN 0x10
28 #define DREP_EBCDIC 0x01
33 #define DREP_ENC_INTEGER(drep) \
34 (((drep)[0] & DREP_LITTLE_ENDIAN) ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN)
39 #define DREP_ENC_CHAR(drep) \
40 (((drep)[0] & DREP_EBCDIC) ? ENC_EBCDIC|ENC_NA : ENC_ASCII|ENC_NA)
49 #define DCERPC_UUID_NULL { 0,0,0, {0,0,0,0,0,0,0,0} }
52 #define DCERPC_UUID_STR_LEN 36+1
98 guint32 auth_context_id;
150 #define DCERPC_IS_NDR64 0x00000001
157 guint64 transport_salt;
159 gboolean conformant_run;
161 gint32 conformant_eaten;
162 guint32 array_max_count;
163 guint32 array_max_count_offset;
164 guint32 array_offset;
165 guint32 array_offset_offset;
166 guint32 array_actual_count;
167 guint32 array_actual_count_offset;
170 const char *dcerpc_procedure_name;
179 gboolean must_check_size;
196 gboolean are_top_level;
204 #define PDU_WORKING 4
208 #define PDU_CL_CANCEL 8
210 #define PDU_CANCEL_ACK 10
212 #define PDU_BIND_ACK 12
213 #define PDU_BIND_NAK 13
215 #define PDU_ALTER_ACK 15
217 #define PDU_SHUTDOWN 17
218 #define PDU_CO_CANCEL 18
219 #define PDU_ORPHANED 19
227 guint16 dcerpc_tvb_get_ntohs (
tvbuff_t *tvb, gint offset, guint8 *drep);
228 guint32 dcerpc_tvb_get_ntohl (
tvbuff_t *tvb, gint offset, guint8 *drep);
229 void dcerpc_tvb_get_uuid (
tvbuff_t *tvb, gint offset, guint8 *drep,
e_guid_t *uuid);
233 int hfindex, guint8 *pdata);
237 int hfindex, guint8 *pdata);
241 int hfindex, guint16 *pdata);
245 int hfindex, guint32 *pdata);
249 int hfindex, guint64 *pdata);
252 int hfindex, gfloat *pdata);
255 int hfindex, gdouble *pdata);
258 int hfindex, guint32 *pdata);
270 int hfindex, guint8 *pdata);
276 int hfindex, guint16 *pdata);
282 int hfindex, guint32 *pdata);
288 int hfindex, guint64 *pdata);
292 int hfindex, guint64 *pdata);
298 int hfindex, gfloat *pdata);
302 int hfindex, gdouble *pdata);
307 int hfindex, guint32 *pdata);
316 #define FT_UINT1632 FT_UINT32
317 typedef guint32 guint1632;
322 int hfindex, guint1632 *pdata);
324 typedef guint64 guint3264;
329 int hfindex, guint3264 *pdata);
336 #define NDR_POINTER_REF 1
337 #define NDR_POINTER_UNIQUE 2
338 #define NDR_POINTER_PTR 3
342 dcerpc_dissect_fnct_t *fnct,
int type,
const char *text,
343 int hf_index, dcerpc_callback_fnct_t *callback,
344 void *callback_args);
348 dcerpc_dissect_fnct_t *fnct,
int type,
const char *text,
353 dcerpc_dissect_fnct_t *fnct,
int type,
const char *text,
357 dcerpc_dissect_fnct_t *fnct,
int type,
const char *text,
363 dcerpc_dissect_fnct_t *fnct);
367 dcerpc_dissect_fnct_blk_t *fnct);
374 dcerpc_dissect_fnct_t *fnct);
378 dcerpc_dissect_fnct_blk_t *fnct);
383 dcerpc_dissect_fnct_t *fnct);
390 int hfinfo, gboolean add_subtree,
400 int hfindex, gboolean add_subtree,
char **data);
403 int hfinfo, gboolean add_subtree,
413 dcerpc_dissect_fnct_t *dissect_rqst;
414 dcerpc_dissect_fnct_t *dissect_resp;
423 const char *dcerpc_get_proto_name(
e_guid_t *uuid, guint16 ver);
425 int dcerpc_get_proto_hf_opnum(
e_guid_t *uuid, guint16 ver);
435 WS_DLL_PUBLIC
void decode_dcerpc_reset_all(
void);
436 typedef void (*decode_add_show_list_func)(gpointer data, gpointer user_data);
437 WS_DLL_PUBLIC
void decode_dcerpc_add_show_list(decode_add_show_list_func func, gpointer user_data);
446 WS_DLL_PUBLIC GHashTable *dcerpc_uuids;
470 dcerpc_dissect_fnct_t *bind_fn;
471 dcerpc_dissect_fnct_t *bind_ack_fn;
472 dcerpc_dissect_fnct_t *auth3_fn;
473 dcerpc_dissect_fnct_t *req_verf_fn;
474 dcerpc_dissect_fnct_t *resp_verf_fn;
478 dcerpc_decode_data_fnct_t *req_data_fn;
479 dcerpc_decode_data_fnct_t *resp_data_fn;
483 void register_dcerpc_auth_subdissector(guint8 auth_level, guint8 auth_type,
496 guint64 transport_salt;
503 WS_DLL_PUBLIC guint64 dcerpc_get_transport_salt(
packet_info *pinfo);
504 WS_DLL_PUBLIC
void dcerpc_set_transport_salt(guint64 dcetransportsalt,
packet_info *pinfo);
514 #define DCE_C_RPC_AUTHN_PROTOCOL_NONE 0
515 #define DCE_C_RPC_AUTHN_PROTOCOL_KRB5 1
516 #define DCE_C_RPC_AUTHN_PROTOCOL_SPNEGO 9
517 #define DCE_C_RPC_AUTHN_PROTOCOL_NTLMSSP 10
518 #define DCE_C_RPC_AUTHN_PROTOCOL_GSS_SCHANNEL 14
519 #define DCE_C_RPC_AUTHN_PROTOCOL_GSS_KERBEROS 16
520 #define DCE_C_RPC_AUTHN_PROTOCOL_DPA 17
521 #define DCE_C_RPC_AUTHN_PROTOCOL_MSN 18
522 #define DCE_C_RPC_AUTHN_PROTOCOL_DIGEST 21
523 #define DCE_C_RPC_AUTHN_PROTOCOL_SEC_CHAN 68
524 #define DCE_C_RPC_AUTHN_PROTOCOL_MQ 100
528 #define DCE_C_AUTHN_LEVEL_NONE 1
529 #define DCE_C_AUTHN_LEVEL_CONNECT 2
530 #define DCE_C_AUTHN_LEVEL_CALL 3
531 #define DCE_C_AUTHN_LEVEL_PKT 4
532 #define DCE_C_AUTHN_LEVEL_PKT_INTEGRITY 5
533 #define DCE_C_AUTHN_LEVEL_PKT_PRIVACY 6
555 #define PIDL_POLHND_OPEN 0x80000000
556 #define PIDL_POLHND_CLOSE 0x40000000
558 #define PIDL_STR_SAVE 0x20000000
560 #define PIDL_SET_COL_INFO 0x10000000
563 #define PIDL_POLHND_TYPE_MASK 0x00ff0000
564 #define PIDL_POLHND_TYPE_SAMR_USER 0x00010000
565 #define PIDL_POLHND_TYPE_SAMR_CONNECT 0x00020000
566 #define PIDL_POLHND_TYPE_SAMR_DOMAIN 0x00030000
567 #define PIDL_POLHND_TYPE_SAMR_GROUP 0x00040000
568 #define PIDL_POLHND_TYPE_SAMR_ALIAS 0x00050000
570 #define PIDL_POLHND_TYPE_LSA_POLICY 0x00060000
571 #define PIDL_POLHND_TYPE_LSA_ACCOUNT 0x00070000
572 #define PIDL_POLHND_TYPE_LSA_SECRET 0x00080000
573 #define PIDL_POLHND_TYPE_LSA_DOMAIN 0x00090000
578 guint32 open_frame, close_frame;
586 extern int hf_dcerpc_drep_byteorder;
587 extern int hf_dcerpc_ndr_padding;
589 #define FAKE_DCERPC_INFO_STRUCTURE \
592 dcerpc_call_value call_data; \
594 di.conformant_run = FALSE; \
595 di.no_align = TRUE; \
598 call_data.flags = 0; \
599 di.call_data = &call_data;
Definition: packet-dcerpc.h:94
Definition: packet-dcerpc.h:466
Definition: packet-dcerpc.h:128
Definition: packet-dcerpc.h:154
Definition: packet-dcerpc.h:410
Definition: packet-dcerpc.h:448
Definition: packet-dcerpc.h:54
Definition: packet-dcerpc.h:59
Definition: packet-dcerpc.h:70
Definition: guid-utils.h:22
Definition: packet_info.h:44
Definition: value_string.h:26
Definition: conversation.h:220
Definition: packet-dcerpc.h:109
Definition: packet-dcerpc.h:487
Definition: packet-dcerpc.h:576
Definition: tvbuff-int.h:35