====== WTF ist GSM ====== Hilfreiches: * [[http://en.wikipedia.org/wiki/Um_interface|Um Interface: Kommunikation zwischen Basisstation und Mobile Station]] * [[http://de.wikipedia.org/wiki/Control_Channel|Übersicht der Control Channels im GSM-Netz]] Wireshark-Hints: * View->Coloring Rules: New, Filter: gsmtap.uplink == 0 -> farbe wählen, "GSM downlink" als Name eingeben. ==1 entspricht uplink. In der Liste über UDP schieben, da die Liste sequentiell abgearbeitet wird. ===== Einbuchen der Mobile Station ===== ==== Empfang einer SMS ==== Wireshark-Filter: (udp.port == 4729) && !(gsm_a.dtap_msg_rr_type == 0x21) && // Keine Paging Request Type 1 messages anzeigen !(gsmtap.chan_type == 5) // Keine Paging Channel (PCH) messages ===== IMSIs filter ===== Wireshark-Filter: gsm_a.imsi Konzept: Wireshark-Dump als PDML (XML-Format) exportieren, dann mit Ruby-Skript (basierend auf Nokogiri) die IMSIs aus den Paging Requests Type 1 herausfischen. http://nokogiri.org/tutorials/searching_a_xml_html_document.html ugly hack is ugly: require 'rubygems' require 'nokogiri' # ugly hack is ugly but works. @doc = Nokogiri::XML(File.open("einbuchen.pdml")) puts "timestamp\timsi" imsi_xml = @doc.xpath("//field[@name='gsm_a.imsi']") imsi_xml.each{|node| imsi = node["value"] packet_xml=Nokogiri::XML(node.parent.parent.parent.to_s) timestamp_xml=packet_xml.xpath("//field[@name='timestamp']") timestamp=timestamp_xml[0]["value"] puts "#{timestamp}\t#{imsi}" } Mit mehreren Mobile Stations dann gucken, ob $Leute an verschiedenen Orten mehrfach auftauchen. Als KML darstellen. http://www.omninerd.com/articles/Automating_Data_Visualization_with_Ruby_and_Graphviz BSIC: http://en.wikipedia.org/wiki/Base_station_identity_code -> brauchen wir nicht wirklich, da ja die position des Sniffers bekannt ist. tcpdump -i lo port 4247 -w foo.pcap tshark -r foo.pcap -T psml > foo.pdml