| Hi, Currently I am sending AnyTimeInterrogation to the HLR over a MAP link. I would like to monitor specific queries being made for certain users. So I need to filter by msisdn. It gets complicated because the answer to the ATI does not contain the msisdn field. The only way to link the query to the answer is by the dtid field in TCAP layer Any pointers as to how i can do this filter? A pcap is downloadable from here https://drive.google.com/file/d/0B9-7ejADsontcmVSLThyOE5YUzg/view?usp=sharing asked 27 Jul '16, 08:47 mquevedob edited 27 Jul '16, 14:26 cmaynard ♦♦ | 
2 Answers:
| < EDIT > Using MATE as described in the original Answer kept below, you can directly filter or find the  Either way, it must be possible to recognize that the SCCP calling address of the  If you need to filter PDUs by fields which are not directly present in them and the existing dissector does not provide any meta-fields for this purpose, MATE is your only way out. Using MATE, you may group PDUs together by contents of some fields (in your case, the  If you need a pushstart, publish a trace with at least two independent requests and responses. Currently, there are some issues with MATE in tshark, but they may not affect you. answered 27 Jul '16, 09:10 sindy edited 20 Sep '16, 22:35 | 
| This sounds like a job for MATE. answered 27 Jul '16, 08:59 cmaynard ♦♦ | 
 
          
thanks for the answer! Would you give me some pointers as to how i would have to configure mate in order to filter the outgoing package by msisdn and the incoming packet to match the oid field of the outgoing package?
There are no pointers other than the manual already pointed to.
Or, if it has discouraged you, you can accept my proposal from the answer:
Because I won't spend time creating a useless MATE configuration; to put together a useful one, I need the pcap file to debug it.
I have shared a link (on the original post) where you can download the pcap file. Please let me know. And thanks for your support !
Here we go:
It is really minimalistic - I am not 100% sure what else on top of TCAP transaction ID has to be checked so that the PDUs could be safely considered a matching request and answer. If you would capture somewhere closer to the HLR and multiple GMSCs would query the same HLR, I guess nothing prevents them from incidentally using the same transaction ID, so the GT of the GMSC should also be part of the Gop key. But integrating that requires more effort because while
tcap.otidis only present in theinvokeandtcap.dtidis only present in thereturnResultLast, the calling and called GT is present in both but with swapped roles, which has to be sorted out usingTransform. And you cannot use both GTs without filtering because the GT of the HLR as called in theinvokediffers from the GT of the VLR as calling in thereturnResultLast, so the (gt,gt) AVPL of theinvokeandreturnResultLastwould differ, preventing the PDUs from matching the same GoP key. Plus this analysis completely ignores cases where one of the SCCP (calling, called) would e.g. not contain the GT but just the point code.This MATE configuration (
Edit->Preferences->Protocols->Mate->Configuration Filename, followed byOKand starting a new instance of Wireshark), allows you to use a display filtermate.tcap_dialog.msisdn == “91:95:95:17:41:01:10”to filter an invoke/returnResultLast pair by msisdn. Unfortunately, the format is like this and cannot be changed as this is how the gsm_map dissector provides it.Wow, as it turned out to be impossible to achieve the goal of
Extracting both SCCP called and SCCP calling into two AVPs of the same name but, depending on presence of other fields allowing to discriminate betweeninvokeandreturnResultLast, keeping as part of the Gop key only that one of the two which represented the GMSC usingTransform, I’ve discovered another feature of MATE not explicitly mentioned in the documentation.Apparently it is possible to define several MATE Pdus of the same type but with different description, and get all of them created in parallel from the very same source PDU. So together with the possibility to
Accepta Pdu depending on an AVPL match, it is possible toExtracta(gmsc_gt, trans_id)AVPL from(sccp.calling.digits, tcap.otid)in one case and from(sccp.called.digits, tcap.dtid)in another, andAcceptonly the one whose AVPL contains thetrans_id. So effectively, for theinvokewhere only thetcap.otidis present, the value of thegmsc_gtAVP is taken from thesccp.calling.digits, while for thereturnResultLast, it is taken from thesccp.called.digitsbecause in that message, only thetcap.dtidis present.So the result is as follows:
I guess I’ll have to update the Wiki accordingly soon.