自宅でGSMネットワークを起動する





この記事では、Osmocomと控えめな設備投資を使用して、自分のGSMネットワークをどうやって立ち上げたかを詳しく説明したいと思います。



公式ウェブサイトの指示は時代遅れであり、私はそれらを適応させるのにかなりの時間を費やす必要がありました。 幸いなことに、すべての問題は解決されており、以下のアドバイスを厳密に守れば成功します。



その結果、GPRSを使用せずに、SMSと音声通話をサポートする実験的な2Gセルラーネットワークを部屋内で開始します。 GSMネットワークのデバイスとコンポーネントの動作と相互作用を研究するために使用でき、商用のセルラーネットワークに干渉しません。





サイクル記事:



自宅でGSMネットワークを起動する

WiresharkでのGSMネットワークトラフィックの分析

GPRSをホームGSMネットワークに追加します

GSMネットワーク内の攻撃の実例



注意!

著者は、他のユーザーの行動、商用GSMネットワークへの干渉、およびユーザー自身の機器の損傷に対して一切の責任を負いません。 何かを始める前に、自分が何をしているかを理解してください。




UPD:構成ファイルの作成または使用中に問題が発生した場合は、 Nightly Builds debパッケージから新しいOSにインストールできるすべてのものをインストールすることをお勧めします。 osmocombb(jolly / testing branch)ブランチをビルドするには、以下で書いたように、古いツールチェーンが必要です。 Debian 9(32ビット)にすべてをインストールしましたが、libdbiやその他のものに問題はありません。aptが提供する依存関係を置きます。 ツールチェーンを構築するときに、texinfoで問題が発生する場合があります。 このためのaxiliratorスクリプトにはすでにいくつかのパッチがありますが、Debian 9ではgcc / doc / gcc.texiでさらに編集する必要がありました。



鉄とソフトウェア









ソフトウェア





買っています





TI Calypsoチップセットに基づいた電話は、あなたの街の無料クラシファイドサイトで探すのが最も簡単です。 価格は、充電器の状態と可用性に応じて、300から700ルーブルまで異なります。 ロシアで西部GSMバンド用に設計された電話を購入する可能性は非常に小さいですが、海外で購入することにした場合は、GSMバンドの使用に注意することをお勧めします。 ロシアに住んでいる場合、900 MHzおよび1800 MHzで動作する電話が必要です。



ここでサポートされているモデルのリストを見ることができます



おそらく他の互換性のある携帯電話があります。特に、Motorola c113およびc113aはOsmocomBBと完全に互換性がありますが、公式Webサイトには掲載されていません。



SIMカードは必要ありません。







USB-TTLコンバーターは、CP2102、FT232、またはPL2303チップで動作します。



CP2102を使用することをお勧めします。 特殊なユーティリティを使用する 、一部のOsmocomBBブランチに必要な非標準速度でこのコンバーターを動作させることができます。



それをebayまたはaliexpressで100ルーブルで購入するか、多少なりとも大きな電気店で2〜3倍高価にすることができます。 2番目のオプションは、待機したくない場合に適しています。



コンピューターを電話に接続するワイヤーは異なって見えるかもしれませんが、ラジオ部品店で2.5 mmジャックを購入することをお勧めします





UPD:後で気づいたように、この写真には4つのピンが付いたジャックが表示されています。3が必要です。



ArduinoやRaspberry Piでよく使用されるようなコネクタ付きのワイヤ。





2番目がない場合は、独自の何かを思い付くことができます。 次のように、コンバータの端子Tx、Rx、GNDをジャックの接点に接続します。



TxDはジャックの先端に接続します

RxDはジャックの中央のピンに接続します

GNDはジャックの下部ピンに接続します。



3本のワイヤーを束ねて、コネクターの一端を噛み、残りのワイヤーを一端のコネクターでジャックの端子にはんだ付けします。



音声通話でネットワークを開始するには、 2台の電話、 2台のコンバーター、 2本の既成配線が必要です。



明白な問題



ジャックを購入したら、ヘッドセットジャックに完全に挿入できることを確認します。 そうしないと、電話への接続の信頼性が低いか、まったくないためにエラーが表示される場合があります。



無線部品店で最もよく販売されているジャックは、次のようにソケットに完全には挿入されていません。 彼らはケース(あなた/電話)によって邪魔されます。











ジャックが完全に挿入されていることを確認するには、電話をケースから取り出して、ジャックを挿入してみます。







後でケースがジャックに干渉していることに気付いた場合は、プライヤーとファイルで武装し、ウィットをオンにして、ジャックまたは電話のケースを変更して、接触が信頼できるようにする必要があります。



PuTTYとの接続の信頼性を確認できます。 COMポート番号は、デバイスマネージャーで確認できます。







USB-TTLコンバーターと組み立てられたワイヤを介して電話をコンピューターに接続し、電源ボタンを短く押すと、@ TtmtoolerrorというメッセージがPuTTYウィンドウに表示されます。



Linuxでもminicomを使用して同じことができます。



設置



最初に述べたように、32ビットバージョンのUbuntu 14.04を使用することをお勧めします。 おそらくすべてを64ビットUbuntu 16.04にインストールできますが、インストール中にすべての依存関係の問題を解決し、Osmocomプロジェクトブランチとの互換性を確保する必要があります。



また、仮想マシンの使用を試みることもできますが、ゲストOSで安定した接続を取得できませんでした。 おそらく、USBポートの仮想化レベルで問題が発生します。



仮想マシンを使用してosmocombbとその個々のアプリケーションを操作できますが、GSMネットワークの起動に関しては、仮想化を使用しないことをお勧めします。



Osmocomをビルドするために必要な基本パッケージをインストールします。



apt-get install build-essential libtool libtalloc-dev shtool autoconf automake git-core pkg-config make gcc libpcsclite-dev
      
      





libosmocore



git clone git://git.osmocom.org/libosmocore.git
cd libosmocore/
autoreconf -i
./configure
make
make install
ldconfig -i

      
      





toolchain



- toolchain. , osmocombb, .



, , toolchain, -.



git clone https://github.com/axilirator/gnu-arm-installer.git
cd gnu-arm-installer
apt-get install libgmp3-dev libmpfr-dev libx11-6 libx11-dev flex bison libncurses5 libncurses5-dbg libncurses5-dev libncursesw5 libncursesw5-dbg libncursesw5-dev zlibc zlib1g-dev libmpfr4 libmpc-dev texinfo
./download.sh
./build.sh

      
      





, . 3 .



PATH, /root/osmocom/gnu-arm-installer/install/bin



vi /etc/bash.bashrc
add in the end
export PATH=$PATH:/root/osmocom/gnu-arm-installer/install/bin

      
      





osmocombb



Master- GSM , , , RSSI cell_log (. ).



- , src/target/firmware/Makefile :



CFLAGS += -DCONFIG_TX_ENABLE

      
      









git clone git://git.osmocom.org/osmocom-bb.git osmocombb
cd osmocombb/src
make

      
      





FFT



wget http://www.fftw.org/fftw-3.3.6-pl2.tar.gz
tar -xvzf fftw-3.3.6-pl2.tar.gz
cd fftw-3.3.6-pl2
./configure --enable-threads --enable-float
make
make install 
ldconfig

      
      





libosmo-dsp



git clone git://git.osmocom.org/libosmo-dsp.git
cd libosmo-dsp/
autoreconf -i
./configure
make
make install
ldconfig

      
      





osmocombb OsmoBTS



git clone git://git.osmocom.org/osmocom-bb.git trx
cd trx/
git checkout jolly/testing
cd src/

      
      





target/firmware/Makefile



CFLAGS += -DCONFIG_TX_ENABLE

      
      





:



make HOST_layer23_CONFARGS=--enable-transceiver

      
      





libdbi sqlite



apt-get install sqlite3 libsqlite3-dev libsctp-dev

      
      





: sourceforge.net/projects/libdbi/files/libdbi/libdbi-0.8.3



tar -xvzf libdbi-0.8.3.tar.gz
cd libdbi-0.8.3
autogen.sh
./configure --disable-docs
make
make install
ldconfig
cd ..

      
      





: sourceforge.net/projects/libdbi-drivers/files/libdbi-drivers/libdbi-drivers-0.8.3



tar -xvzf libdbi-drivers-0.8.3.tar.gz
cd libdbi-drivers-0.8.3

      
      





, HLR. .



vi drivers/sqlite3/dbd_sqlite3.c

      
      





_dbi_internal_error_handler



_dbd_internal_error_handler



.



:



./autogen.sh
./configure --disable-docs --with-sqlite3 --with-sqlite3-dir=/usr/bin --with-dbi-incdir=/usr/local/include
make
make install
ldconfig

      
      





ORTP



wget http://download.savannah.gnu.org/releases/linphone/ortp/sources/ortp-0.22.0.tar.gz
tar -xvf ortp-0.22.0.tar.gz
cd ortp-0.22.0/
./autogen.sh
./configure
make
make install
ldconfig

      
      





libosmo-abis



git clone git://git.osmocom.org/libosmo-abis.git
cd libosmo-abis
autoreconf -i
./configure
make
make install
ldconfig

      
      





libosmo-netif



git clone git://git.osmocom.org/libosmo-netif.git
cd libosmo-netif
autoreconf -i
./configure
make
make install
ldconfig

      
      





OpenBSC



apt-get install libssl0.9.8 libssl-dev
ldconfig
git clone git://git.osmocom.org/openbsc.git
cd openbsc/openbsc/
autoreconf -i
./configure
make
make install

      
      





OsmoBTS



git clone git://git.osmocom.org/osmo-bts.git
cd osmo-bts
autoreconf -i
./configure --enable-trx
make
make install

      
      









Osmocom root, /root/.osmocom



mkdir /root/.osmocom;cd /root/.osmocom
touch ~/.osmocom/osmo-bts.cfg
touch ~/.osmocom/open-bsc.cfg

      
      





:





osmo-bts.cfg open-bsc.cfg .



(band) GSM ARFCN.



ARFCN — .

ARFCN RSSI, osmocombb, cell_log.



, GSM . , , band.



, . Calypso BTS SCH bursts . ( ), .



ARFCN band , OsmoNTIB .





.



ls -l /dev/ttyUSB*

      
      





ttyUSB0 ttyUSB1.



.



osmocon . compal_e86 e87 c123xor, - .







cd /root/osmocom/trx/src
host/osmocon/osmocon -m c123xor -p /dev/ttyUSB0 -s /tmp/osmocom_l2 -c target/firmware/board/compal_e88/trx.highram.bin -r 99

      
      





, . TRX.







cd /root/osmocom/trx/src
host/osmocon/osmocon -m c123xor -p /dev/ttyUSB1 -s /tmp/osmocom_l2.2 -c target/firmware/board/compal_e88/trx.highram.bin -r 99

      
      





, . TRX.



BTS



ARFCN , . , RSSI cell_log.



cd /root/osmocom/trx/src/host/layer23/src/transceiver/
./transceiver -a ARFCN -2 -r 99

      
      





MSC, HLR -



cd /root/.osmocom
osmo-nitb -c ~/.osmocom/open-bsc.cfg -l ~/.osmocom/hlr.sqlite3 -P -C --debug=DRLL:DCC:DMM:DRR:DRSL:DNM

      
      









cd /root/.osmocom
osmo-bts-trx --debug DRSL:DOML:DLAPDM -r 99

      
      





GSM !





, . 00101 TestNet. .



- , , .



USSD *#100#.



OsmoNTIB



telnet localhost 4242

      
      





OsmoBTS




telnet localhost 4241

      
      





. , wireshark.



UPD: GPRS



!





osmo-bts.cfg
!

! OsmoBTS (0.4.0.433-8913) configuration saved from vty

!!!

!

log stderr

logging filter all 1

logging color 1

logging print category 0

logging timestamp 0

logging level all everything

logging level rsl info

logging level oml info

logging level rll notice

logging level rr notice

logging level meas notice

logging level pag info

logging level l1c info

logging level l1p info

logging level dsp debug

logging level pcu notice

logging level ho notice

logging level trx notice

logging level loop notice

logging level abis notice

logging level rtp notice

logging level sum notice

logging level lglobal notice

logging level llapd notice

logging level linp notice

logging level lmux notice

logging level lmi notice

logging level lmib notice

logging level lsms notice

logging level lctrl notice

logging level lgtp notice

logging level lstats notice

logging level lgsup notice

logging level loap notice

logging level lss7 notice

logging level lsccp notice

logging level lsua notice

logging level lm3ua notice

log file OsmoBTS.log

logging filter all 0

logging color 1

logging print category 0

logging timestamp 1

logging level all everything

logging level rsl info

logging level oml info

logging level rll notice

logging level rr notice

logging level meas notice

logging level pag info

logging level l1c info

logging level l1p info

logging level dsp debug

logging level pcu notice

logging level ho notice

logging level trx notice

logging level loop notice

logging level abis notice

logging level rtp notice

logging level sum notice

logging level lglobal notice

logging level llapd notice

logging level linp notice

logging level lmux notice

logging level lmi notice

logging level lmib notice

logging level lsms notice

logging level lctrl notice

logging level lgtp notice

logging level lstats notice

logging level lgsup notice

logging level loap notice

logging level lss7 notice

logging level lsccp notice

logging level lsua notice

logging level lm3ua notice

!

line vty

no login

!

e1_input

e1_line 0 driver ipa

e1_line 0 port 0

no e1_line 0 keepalive

phy 0

osmotrx ip 127.0.0.1

osmotrx fn-advance 30

osmotrx rts-advance 5

instance 0

bts 0

band [ GSM900 DCS1800]

ipa unit-id 1801 0

oml remote-ip 127.0.0.1

rtp jitter-buffer 0

paging queue-size 200

paging lifetime 0

uplink-power-target -75

min-qual-rach 50

min-qual-norm -5

ms-power-loop -65

timing-advance-loop

setbsic

trx 0

power-ramp max-initial 0 mdBm

power-ramp step-size 2000 mdB

power-ramp step-interval 1

ms-power-control dsp

phy 0 instance 0



open-bsc.cfg
!

! OpenBSC (0.15.0.763-5121) configuration saved from vty

!!!

!

log stderr

logging filter all 1

logging color 1

logging print category 0

logging timestamp 0

logging level all everything

logging level rll everything

logging level cc everything

logging level mm everything

logging level rr everything

logging level rsl everything

logging level nm everything

logging level mncc notice

logging level pag notice

logging level meas notice

logging level sccp notice

logging level msc notice

logging level mgcp notice

logging level ho notice

logging level db notice

logging level ref notice

logging level gprs debug

logging level ns info

logging level bssgp debug

logging level llc debug

logging level sndcp debug

logging level nat notice

logging level ctrl notice

logging level smpp debug

logging level filter debug

logging level ranap debug

logging level sua debug

logging level lglobal notice

logging level llapd notice

logging level linp notice

logging level lmux notice

logging level lmi notice

logging level lmib notice

logging level lsms notice

logging level lctrl notice

logging level lgtp notice

logging level lstats notice

logging level lgsup notice

logging level loap notice

logging level lss7 notice

logging level lsccp notice

logging level lsua notice

logging level lm3ua notice

log file OsmoBSC.log

logging filter all 0

logging color 1

logging print category 0

logging timestamp 1

logging level all info

logging level rll notice

logging level cc notice

logging level mm notice

logging level rr notice

logging level rsl notice

logging level nm info

logging level mncc notice

logging level pag notice

logging level meas notice

logging level sccp notice

logging level msc notice

logging level mgcp notice

logging level ho notice

logging level db notice

logging level ref notice

logging level gprs debug

logging level ns info

logging level bssgp debug

logging level llc debug

logging level sndcp debug

logging level nat notice

logging level ctrl notice

logging level smpp debug

logging level filter debug

logging level ranap debug

logging level sua debug

logging level lglobal notice

logging level llapd notice

logging level linp notice

logging level lmux notice

logging level lmi notice

logging level lmib notice

logging level lsms notice

logging level lctrl notice

logging level lgtp notice

logging level lstats notice

logging level lgsup notice

logging level loap notice

logging level lss7 notice

logging level lsccp notice

logging level lsua notice

logging level lm3ua notice

!

stats interval 5

!

line vty

no login

!

e1_input

e1_line 0 driver ipa

e1_line 0 port 0

no e1_line 0 keepalive

network

network country code 1

mobile network code 1

short name TestNet

long name TestNet

auth policy accept-all

authorized-regexp .*

location updating reject cause 13

encryption a5 0

neci 1

paging any use tch 0

rrlp mode none

mm info 1

handover 0

handover window rxlev averaging 10

handover window rxqual averaging 1

handover window rxlev neighbor averaging 10

handover power budget interval 6

handover power budget hysteresis 3

handover maximum distance 9999

timer t3101 10

timer t3103 0

timer t3105 40

timer t3107 0

timer t3109 0

timer t3111 0

timer t3113 60

timer t3115 0

timer t3117 0

timer t3119 0

timer t3122 10

timer t3141 0

dyn_ts_allow_tch_f 0

subscriber-keep-in-ram 0

bts 0

type sysmobts

description calypso

band DCS1800

cell_identity 0

location_area_code 1

base_station_id_code 63

ms max power 30

cell reselection hysteresis 4

rxlev access min 0

periodic location update 30

radio-link-timeout 32

channel allocator ascending

rach tx integer 9

rach max transmission 7

channel-descrption attach 1

channel-descrption bs-pa-mfrms 5

channel-descrption bs-ag-blks-res 1

early-classmark-sending forbidden

ip.access unit_id 1801 0

oml ip.access stream_id 255 line 0

neighbor-list mode automatic

codec-support fr amr

amr tch-h modes 0

amr tch-h start-mode 1

gprs mode none

no force-combined-si

trx 0

rf_locked 0

arfcn []

nominal power 23

max_power_red 0

rsl e1 tei 0

timeslot 0

phys_chan_config CCCH+SDCCH4

hopping enabled 0

timeslot 1

phys_chan_config TCH/H

hopping enabled 0

timeslot 2

phys_chan_config TCH/H

hopping enabled 0

timeslot 3

phys_chan_config TCH/H

hopping enabled 0

timeslot 4

phys_chan_config TCH/H

hopping enabled 0

timeslot 5

phys_chan_config TCH/H

hopping enabled 0

timeslot 6

phys_chan_config TCH/H

hopping enabled 0

timeslot 7

phys_chan_config TCH/H

hopping enabled 0

mncc-int

default-codec tch-f amr

default-codec tch-h amr

nitb

subscriber-create-on-demand

assign-tmsi





UPD: — ( ) Pentestit Security Conference : « GSM».



UPD: Osmocom defcon.ru/wireless-security/4716



All Articles