diff options
author | tpot <tpot@f5534014-38df-0310-8fa8-9805f1628bb7> | 2005-03-17 02:27:26 +0000 |
---|---|---|
committer | tpot <tpot@f5534014-38df-0310-8fa8-9805f1628bb7> | 2005-03-17 02:27:26 +0000 |
commit | 130b75cd4fd7be9cfb276c5bd6d367138005d89b (patch) | |
tree | 822600656b4ea8f30e42117fa942a5eb826a57dc | |
parent | 01bc015f834e454daf5aec26fa9cad5fcc030655 (diff) |
Apply abartlet@samba.org's "raw NTLMSSP over GSS-SPNEGO" patch.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@13788 f5534014-38df-0310-8fa8-9805f1628bb7
-rw-r--r-- | epan/dissectors/packet-gssapi.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/epan/dissectors/packet-gssapi.c b/epan/dissectors/packet-gssapi.c index 23d384f56b..b4084ff4e2 100644 --- a/epan/dissectors/packet-gssapi.c +++ b/epan/dissectors/packet-gssapi.c @@ -55,6 +55,8 @@ static gint ett_gssapi = -1; * Subdissectors */ +static dissector_handle_t ntlmssp_handle = NULL; + static GHashTable *gssapi_oids; static gint gssapi_oid_equal(gconstpointer k1, gconstpointer k2) @@ -247,14 +249,19 @@ dissect_gssapi_work(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } if (!value) { - proto_tree_add_text(subtree, tvb, offset, 0, - "Unknown header (cls=%d, con=%d, tag=%d)", - cls, con, tag); + /* It could be NTLMSSP, with no OID. This can happen + for anything that microsoft calls 'Negotiate' or GSS-SPNEGO */ + if (tvb_strneql(tvb, offset, "NTLMSSP", 7) == 0) { + call_dissector(ntlmssp_handle, tvb_new_subset(tvb, offset, -1, -1), pinfo, subtree); + } else { + proto_tree_add_text(subtree, tvb, offset, 0, + "Unknown header (cls=%d, con=%d, tag=%d)", + cls, con, tag); + } return_offset = tvb_length(tvb); goto done; - } - else - { + + } else { tvbuff_t *oid_tvb; /* Naughty ... no way to reset the offset */ @@ -512,6 +519,8 @@ proto_reg_handoff_gssapi(void) { data_handle = find_dissector("data"); + ntlmssp_handle = find_dissector("ntlmssp"); + register_dcerpc_auth_subdissector(DCE_C_AUTHN_LEVEL_CONNECT, DCE_C_RPC_AUTHN_PROTOCOL_SPNEGO, &gssapi_auth_fns); |