diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2013-06-13 10:52:34 +0000 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2013-06-13 10:52:34 +0000 |
commit | 32bec588924411ce68dd2a77e5c80146ea8e9eb0 (patch) | |
tree | a92eb390f4a24085493b78aa9f5c3059f9b0b7a7 /epan/dissectors/packet-usb-ccid.c | |
parent | e1b7a26463617bc9faaa4c78486c538f92571919 (diff) |
From Tyson Key via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8791 :
Improve dissection of GSM SIM payloads in USB CCID packets
svn path=/trunk/; revision=49915
Diffstat (limited to 'epan/dissectors/packet-usb-ccid.c')
-rw-r--r-- | epan/dissectors/packet-usb-ccid.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/epan/dissectors/packet-usb-ccid.c b/epan/dissectors/packet-usb-ccid.c index bc8de1cc96..f4edcf6aab 100644 --- a/epan/dissectors/packet-usb-ccid.c +++ b/epan/dissectors/packet-usb-ccid.c @@ -173,8 +173,9 @@ static gint ett_ccid = -1; enum { SUB_DATA = 0, SUB_ISO7816, - SUB_GSM_SIM, + SUB_GSM_SIM_CMD, SUB_PN532_ACS_PSEUDO_APDU, + SUB_GSM_SIM_RSP, SUB_MAX }; @@ -326,6 +327,11 @@ dissect_ccid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) call_dissector(sub_handles[SUB_PN532_ACS_PSEUDO_APDU], next_tvb, pinfo, tree); } + /* Try to dissect responses to GSM SIM packets */ + if (sub_selected == SUB_GSM_SIM_CMD) { + call_dissector(sub_handles[SUB_GSM_SIM_RSP], next_tvb, pinfo, tree); + } + else if (sub_selected == SUB_ISO7816) { pinfo->p2p_dir = P2P_DIR_RECV; call_dissector(sub_handles[SUB_ISO7816], next_tvb, pinfo, tree); @@ -399,7 +405,7 @@ proto_register_ccid(void) static const enum_val_t sub_enum_vals[] = { { "data", "Data", SUB_DATA }, { "iso7816", "Generic ISO 7816", SUB_ISO7816 }, - { "gsm_sim", "GSM SIM", SUB_GSM_SIM }, + { "gsm_sim", "GSM SIM", SUB_GSM_SIM_CMD }, { "pn532", "NXP PN532 with ACS Pseudo-Header", SUB_PN532_ACS_PSEUDO_APDU}, { NULL, NULL, 0 } }; @@ -431,8 +437,9 @@ proto_reg_handoff_ccid(void) sub_handles[SUB_DATA] = find_dissector("data"); sub_handles[SUB_ISO7816] = find_dissector("iso7816"); - sub_handles[SUB_GSM_SIM] = find_dissector("gsm_sim"); + sub_handles[SUB_GSM_SIM_CMD] = find_dissector("gsm_sim.command"); sub_handles[SUB_PN532_ACS_PSEUDO_APDU] = find_dissector("pn532"); + sub_handles[SUB_GSM_SIM_RSP] = find_dissector("gsm_sim.response"); } /* |