diff --git a/imsi_detach/IMSIDetach.st b/imsi_detach/IMSIDetach.st new file mode 100644 index 0000000..78a234e --- /dev/null +++ b/imsi_detach/IMSIDetach.st @@ -0,0 +1,65 @@ +" + (C) 2012 by Holger Hans Peter Freyther + All Rights Reserved + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +" + +PackageLoader fileInPackage: #FakeBTS. + +FakeBTS.OpenBSCTest subclass: IMSIDetach [ + + + startTest [ + "1. Connect to the BTS" + self createAndConnectBTS: '1801/0/0'. + self testIMSIDetach. + ] + + testIMSIDetach [ + | lchan detach tmsi | + + tmsi := self allocateTmsi: '901010000001111'. + + "2. Get a LCHAN" + lchan := self requireAnyChannel. + + "3. Send a IMSI Detach" + detach := GSM48IMSIDetachInd new. + detach mi tmsi: tmsi. + lchan sendGSM: detach toMessage. + + "Wait for the channel to be released.." + [ + | msg | + "Read all messages until the end on SAPI=0. Ignore SAPI=3" + "If we send another SAPI=3 Release Indication we get a double + RF Channel Release from the NITB." + [ + msg := GSM48MSG decode: lchan nextSapi0Msg readStream. + (msg isKindOf: GSM48RRChannelRelease) + ifTrue: [lchan releaseAllSapis. ^true] + ] on: Exception do: [Transcript nextPutAll: 'GSM decoding error'; nl.]. + ] repeat. + ] +] + +Eval [ + | test | + + test := IMSIDetach new + startTest; + stopBts; + yourself. +] diff --git a/imsi_detach/README b/imsi_detach/README new file mode 100644 index 0000000..9d36b8d --- /dev/null +++ b/imsi_detach/README @@ -0,0 +1 @@ +Test if OpenBSC is crashing on a IMSI detach