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.otid
is only present in theinvoke
andtcap.dtid
is 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 theinvoke
differs from the GT of the VLR as calling in thereturnResultLast
, so the (gt,gt) AVPL of theinvoke
andreturnResultLast
would 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 byOK
and 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
Extract
ing both SCCP called and SCCP calling into two AVPs of the same name but, depending on presence of other fields allowing to discriminate betweeninvoke
andreturnResultLast
, 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
Accept
a Pdu depending on an AVPL match, it is possible toExtract
a(gmsc_gt, trans_id)
AVPL from(sccp.calling.digits, tcap.otid)
in one case and from(sccp.called.digits, tcap.dtid)
in another, andAccept
only the one whose AVPL contains thetrans_id
. So effectively, for theinvoke
where only thetcap.otid
is present, the value of thegmsc_gt
AVP is taken from thesccp.calling.digits
, while for thereturnResultLast
, it is taken from thesccp.called.digits
because in that message, only thetcap.dtid
is present.So the result is as follows:
I guess I’ll have to update the Wiki accordingly soon.