1*c30bd091SSascha Wildner 2*c30bd091SSascha Wildner#------------------------------------------------------------------------------ 36fca56fbSSascha Wildner# $File: ber,v 1.2 2019/04/19 00:42:27 christos Exp $ 4*c30bd091SSascha Wildner# ber: file(1) magic for several BER formats used in the mobile 5*c30bd091SSascha Wildner# telecommunications industry (Georg Sauthoff) 6*c30bd091SSascha Wildner 7*c30bd091SSascha Wildner# The file formats are standardized by the GSMA (GSM association). 8*c30bd091SSascha Wildner# They are specified via ASN.1 schemas and some prose. Basic encoding 9*c30bd091SSascha Wildner# rules (BER) is the used encoding. The formats are used for exchanging 10*c30bd091SSascha Wildner# call data records (CDRs) between mobile operators and associated 11*c30bd091SSascha Wildner# parties for roaming clearing purposes and fraud detection. 12*c30bd091SSascha Wildner 13*c30bd091SSascha Wildner# The magic file covers: 14*c30bd091SSascha Wildner 15*c30bd091SSascha Wildner# - TAP files (TD.57) - CDR batches and notifications 16*c30bd091SSascha Wildner# - RAP files (TD.32) - return batches and acknowledgements 17*c30bd091SSascha Wildner# - NRT files (TD.35) - CDR batches for 'near real time' processing 18*c30bd091SSascha Wildner 19*c30bd091SSascha Wildner# 20*c30bd091SSascha Wildner# TAP 3 Files 21*c30bd091SSascha Wildner# TAP -> Transferred Account Procedure 226fca56fbSSascha Wildner# cf. https://www.gsma.com/newsroom/wp-content/uploads/TD.57-v32.31.pdf 23*c30bd091SSascha Wildner# TransferBatch short tag 24*c30bd091SSascha Wildner0 byte 0x61 25*c30bd091SSascha Wildner# BatchControlInfo short tag 26*c30bd091SSascha Wildner>&1 search/b5 \x64 27*c30bd091SSascha Wildner# Sender long tag #TAP 3.x (BER encoded) 28*c30bd091SSascha Wildner>>&1 search/b8 \x5f\x81\x44 29*c30bd091SSascha Wildner# <SpecificationVersionNumber>3</><ReleaseVersionNumber> block 30*c30bd091SSascha Wildner>>>&64 search/b64 \x5f\x81\x49\x01\x03\x5f\x81\x3d\x01 31*c30bd091SSascha Wildner>>>>&0 byte x TAP 3.%d Batch (TD.57, Transferred Account) 32*c30bd091SSascha Wildner 33*c30bd091SSascha Wildner# Notification short tag 34*c30bd091SSascha Wildner0 byte 0x62 35*c30bd091SSascha Wildner# Sender long tag 36*c30bd091SSascha Wildner>2 search/b8 \x5f\x81\x44 37*c30bd091SSascha Wildner# <SpecificationVersionNumber>3</><ReleaseVersionNumber> block 38*c30bd091SSascha Wildner>>&64 search/b64 \x5f\x81\x49\x01\x03\x5f\x81\x3d\x01 39*c30bd091SSascha Wildner>>>&0 byte x TAP 3.%d Notification (TD.57, Transferred Account) 40*c30bd091SSascha Wildner 41*c30bd091SSascha Wildner 42*c30bd091SSascha Wildner# NRT Files 43*c30bd091SSascha Wildner# NRT a.k.a. NRTRDE 44*c30bd091SSascha Wildner0 byte 0x61 45*c30bd091SSascha Wildner# <SpecificationVersionNumber>2</><ReleaseVersionNumber> block 46*c30bd091SSascha Wildner>&1 search/b8 \x5f\x29\x01\x02\x5f\x25\x01 47*c30bd091SSascha Wildner>>&0 byte x NRT 2.%d (TD.35, Near Real Time Roaming Data Exchange) 48*c30bd091SSascha Wildner 49*c30bd091SSascha Wildner# RAP Files 506fca56fbSSascha Wildner# cf. https://www.gsma.com/newsroom/wp-content/uploads/TD.32-v6.11.pdf 51*c30bd091SSascha Wildner# Long ReturnBatch tag 52*c30bd091SSascha Wildner0 string \x7f\x84\x16 53*c30bd091SSascha Wildner# Long RapBatchControlInfo tag 54*c30bd091SSascha Wildner>&1 search/b8 \x7f\x84\x19 55*c30bd091SSascha Wildner# <SpecificationVersionNumber>3</><ReleaseVersionNumber> block 56*c30bd091SSascha Wildner>>&64 search/b64 \x5f\x81\x49\x01\x03\x5f\x81\x3d\x01 57*c30bd091SSascha Wildner# <RapSpecificationVersionNumber>1</><RapReleaseVersionNumber> block 58*c30bd091SSascha Wildner>>>&1 string/b \x5f\x84\x20\x01\x01\x5f\x84\x1f\x01 59*c30bd091SSascha Wildner>>>>&0 byte x RAP 1.%d Batch (TD.32, Returned Account Procedure), 60*c30bd091SSascha Wildner>>>&0 byte x TAP 3.%d 61*c30bd091SSascha Wildner 62*c30bd091SSascha Wildner# Long Acknowledgement tag 63*c30bd091SSascha Wildner0 string \x7f\x84\x17 64*c30bd091SSascha Wildner# Long Sender tag 65*c30bd091SSascha Wildner>&1 search/b5 \x5f\x81\x44 RAP Acknowledgement (TD.32, Returned Account Procedure) 66