diff options
author | sahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7> | 2003-01-06 11:27:03 +0000 |
---|---|---|
committer | sahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7> | 2003-01-06 11:27:03 +0000 |
commit | 0c71cae252800c71d79c5ecc23a24eb924a00b0e (patch) | |
tree | 075a27ad170514bc94591e83f5e9f23dfad94117 /packet-dcerpc.c | |
parent | e7672a453262857601415cb6f0266d5dc1db14a1 (diff) |
Update DCERPC so that for (NTLMSSP) PDUs that have been decrypted
we also call the proper DCERPC subdissector.
With this change ethereal will call the SAMR dissector and dissect the
decrypted SAMR packets in devins capture.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@6855 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'packet-dcerpc.c')
-rw-r--r-- | packet-dcerpc.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/packet-dcerpc.c b/packet-dcerpc.c index 3ab5859e2e..a893a30c60 100644 --- a/packet-dcerpc.c +++ b/packet-dcerpc.c @@ -2,7 +2,7 @@ * Routines for DCERPC packet disassembly * Copyright 2001, Todd Sabin <tas@webspan.net> * - * $Id: packet-dcerpc.c,v 1.94 2002/12/31 08:08:19 guy Exp $ + * $Id: packet-dcerpc.c,v 1.95 2003/01/06 11:27:00 sahlberg Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -37,6 +37,7 @@ #include "prefs.h" #include "reassemble.h" #include "tap.h" +#include "packet-ntlmssp.h" static int dcerpc_tap = -1; @@ -1418,9 +1419,29 @@ dcerpc_try_handoff (packet_info *pinfo, proto_tree *tree, /* NTLMSSP */ tvbuff_t *ntlmssp_tvb; ntlmssp_tvb = tvb_new_subset(tvb, offset, length, length); - + pinfo->decrypted_data=NULL; + call_dissector(ntlmssp_enc_payload_handle, ntlmssp_tvb, pinfo, sub_tree); + + if(pinfo->decrypted_data){ + ntlmssp_decrypted_info_t *ndi=pinfo->decrypted_data; + + + sub_dissect = info->request ? proc->dissect_rqst : proc->dissect_resp; + if (sub_dissect) { + saved_proto = pinfo->current_proto; + saved_private_data = pinfo->private_data; + pinfo->current_proto = sub_proto->name; + pinfo->private_data = (void *)info; + + init_ndr_pointer_list(pinfo); + offset = sub_dissect (ndi->decr_tvb, 0, pinfo, ndi->decr_tree, drep); + + pinfo->current_proto = saved_proto; + pinfo->private_data = saved_private_data; + } + } break; } } |