This is outdated. We are working hard on getting this project finished (ETA Christmas 2013). It seems that nobody cares about "ETA Christmas 2013". (--Christmas 2015) brmlab GSM stack is similar to ccch_scan, but should implement the following two important features: * use "sendfifo" to inject a hopping sequence into a running sniffer - to sniff calls after you cracked the key * use master-slave architecture to sniff multiple parallel conversations on one BTS - one phone camps on BCCH and instructs other phones to go to CCCH It used to work, but now it is broken. * Hopping channels don't work at all. Like if you have an immediate assignment to a hopping CCCH, you won't sniff anything. * The slave takes several frames to sync, so you lose valuable known plaintext. This could be fixed by pre-syncing slaves. Despite having my e-mail address in AUTHORS file, I will not support this thing anymore. Use [[user:jenda:gsm|gsmtk]] or try to work this out. Quick start guide to this distribution *** What you will need + A Linux distribution (tested Debian Wheezy and Fedora on x86 and amd64) + there used to be "recent" here, but it was here for several years, so "recent" is not required anymore + An osmocom-compatible phone (Motorola Cxxx) or modem (openmoko/freerunner) and serial interface to it + Wireshark 1.8.0 or newer + ~600 MB of disk space + 1337 h4x1n9 skillz It would be nice to have + More phones + Uplink filters removed Phones have bandpass filter that they don't receive uplink well (only 10-30 metres). http://bb.osmocom.org/trac/wiki/Hardware/FilterReplacement + Access to a fast A5/1 cracker (demand 1s/burst throughput and 10s latency :) It is possible to do some work on desktop with 2TB harddrive, but it's extremely slow. + Genuine brmbora™ hardware with Next-Businness-Day support The compilation of all sources will take several minutes on a modern Core i* computer or 2 hours on Intel Atom netbook. *** OsmocomBB firmware http://bb.osmocom.org/trac/wiki/GettingStarted + Install ARM toolchain. The phone is an arm, so we will crosscompile on our x86. + git clone git://git.osmocom.org/osmocom-bb.git + git checkout sylvain/burst_ind this branch has patched DSP so it allows us to sniff traffic off-the-air + make *** Installing other tools + Copy mysrc/.omgsm to ~ + edit ~/.omgsm/config and ~/.omgsm/phones GSMPATH=path to this GSMDEFSESSION=where sniffed data are stored (usually several MB per hour) GSMMAXCELLS=when scanning for BTS, pick N strongest GSMKRAKENHOST,GSMKRAKENPORT=where your A5/1 cracker lives they tend to listen only on localhost, so try ssh -L 6666:localhost:6666 GSMBRMBORACTL=where brmbora™ conTROLLer is leave blank if you don't have a brmbora™ genuine device and order on at shop.brmlab.cz GSMSESSION=current session, will be set automatically on first run + cd mysrc; make + Kraken will tell you the secret state at some round of A5/1 keystream generator. You need something to backclock (revert and extract original key) the cipher. Use find_kc from Kraken-Utilities patched with our version to support uplink. git clone git://git.srlabs.de/kraken.git cd kraken/Utilities cp mysrc/find_kc.cpp . make find_kc deposit the binary to GSMPATH/kraken/Utilities/ *** Initializing hardware Check scripts in bin/ + gsm_init_hw.sh + Without a brmbora™ genuine device you need to press button on your phone. + You should see the firmware loading. The correct output should have the following features: Received PROMPT1 from phone, responding with CMD read_file(../../target/firmware/board/compal_e88/hello_world.compalram.bin): file_size=27192, hdr_len=4, dnload_len=27199 Received PROMPT2 from phone, starting download handle_write(): finished Received DOWNLOAD ACK from phone, your code is running now! LOST nnnn! If it got stuck before the "LOST" message, try again. Contact your brmbora™ authorized reseller in case of problems. *** Initianing a new session, scanning BTS + gsm_bts_scan.sh *** Investigating the SESSION direstory arfcn - what channels we will sniff on new/ - captured data tmsi2bursts.txt - phones seen on air and their data *** Start sniffing gsm_start_sniff.sh Some .dat files should appear in SESSION/new/. They are usually 5-15 kB each. FIXME We now have better sniffer using master-slave architecture useful if you have 4+ phones. See bin/gsm_spawn_master_slave.sh for more info. *** Viewing sniffed data with Wireshark iptables -A INPUT -p UDP --dport 4729 -j DROP # we will send dummy packets and kernel will reply with ICMP port unreachable start Wireshark on localhost gsm_convert -f SESSION/new/file-to-view.dat -d will convert data to GSMTAP frames and send them to Wireshark Some packets should appear in Wireshark: http://bb.osmocom.org/trac/wiki/WiresharkIntegration *** Cracking your own data from your very own phone of course! Use napalmex.py for a statistical keystream guesser with up to 100% efficiency on less-secure networks and ability to crack about 50% of traffic even on secure networks! *** Viewing cracked data start Wireshark on localhost gsm_convert -f SESSION/new/file-to-view.dat -k KEY Interesting .dat files are the bigger ones (10kB). Interesting frames are "GSM-SMS CP-DATA". See gsm_evenlog.sh for tips how to extract phone numbers, SMS messages etc. See this link for guessing which types of communication are in the file even berofe it is cracked: http://jenda.hrach.eu/brm/sms_analysis.png