Ethereal-cvs: [Ethereal-cvs] cvs commit: ethereal packet-dcerpc.c packet-dcerpc.h packet-ntlms
tpot 2003/09/26 01:30:13 CDT
Modified files:
. packet-dcerpc.c packet-dcerpc.h
packet-ntlmssp.c
Log:
This commit refactors the dcerpc authentication subdissectors for
handling encrypted request/response PDUs. Instead of having
dissection function pointers which perform both decryption and
dissection, the function pointers now only decrypt the DCERPC fragment
payload. Dissection is handled by the dcerpc_try_handoff() function
(with DCERPC fragment reassembly if necessary).
Details:
- Move the dcerpc_auth_info struct into dcerpc.h as it is now used in
the function prototype for the decryption function handlers.
- decode_encrypted_data() was refactored to take a boolean request
parameter instead of passing the DCERPC PDU packet type.
- A tvbuff_t * data field was added to dcerpc_auth to hold the
verifier. This is passed as an argument to the decryption function
handlers.
- Dissection of verifiers in request and response PDUs was moved to
before the payload.
- The dissect_dcerpc_cn_stub() function was refactored to perform
the decryption process and hand decrypted data to the reassembly
code instead of performing the decryption after reassembly.
- Removed references to decrypted_info_t as it's not necessary
anymore.
Code was tested using encrypted and unencrypted fragmented PDUs.
Before this commit ethereal could not dissect unencrypted (!)
fragmented PDUs correctly.
Revision Changes Path
1.142 +105 -125 ethereal/packet-dcerpc.c
1.35 +22 -10 ethereal/packet-dcerpc.h
1.45 +14 -43 ethereal/packet-ntlmssp.c