Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.
Bylo vydáno OpenBSD 7.7. Opět bez písničky.
V Tiraně proběhl letošní Linux App Summit (LAS) (Mastodon). Zatím nesestříhané videozáznamy přednášek jsou k dispozici na YouTube.
Na začátku musím objasnit, co to znamená, když si budeme do telefonu nahrávat vlastní firmware. Rozhodně se totiž nejedná o žádné flashování jiné verze Androidu nebo něco podobného – my půjdeme o úroveň hlouběji. Dnešní telefony jsou totiž složeny ze dvou izolovaných částí – de-facto plnohodnotného počítače a GSM (případně 3G) modemu.
Na „počítači“ běží to, co běžně uživatel vidí – třeba Android, iOS, Symbian nebo u hloupých telefonů jednoduché menu. Když chceme zavolat, hlavní systém to po sériové lince řekne GSM modemu a ten všechno zařídí a systému se vrátí zvuková data hovoru.
Z toho vyplývá, že třeba takový Android, i když je rootnutý, jailbreaknutý a kdo ví, co ještě, toho může s GSM sítí dělat poměrně málo – může modemu posílat příkazy jako „pošli SMS“, „zavolej“, „přijmi hovor“ nebo „ulož toto číslo na SIM kartu“, ale o moc víc toho nejde.
V GSM modemu je mikrokontrolér, který to celé řídí, a takzvaný DSP procesor, čip specializovaný pro dekódování přijatého signálu a vysílání toho, co chceme odeslat. V obou většinou běží uzavřený firmware, který je k jakémukoli rýpání velmi nepřátelský. Čipy jsou mizerně zdokumentované, výrobci kdeco tají a o možnosti spustit nedestruktivně vlastní kód si můžeme nechat jenom zdát. Přitom pokud bychom se dokázali dostat až do nitra modemu, mohli bychom přímo ladit s přijímačem, sledovat, co se děje kolem, a dokonce i zkusit něco vlastního vysílat (vysílání bez licence je však v ČR poněkud nelegální).
Nicméně jednoho dne se zjistilo, že existují mobilní telefony, které jsou k hackování relativně přátelské. Pomocí střípků nalezených na Internetu, uniklé dokumentace a reverzního inženýrství se podařilo spustit uvnitř mobilu a dokonce i na DSP vlastní kód, a to dokonce nedestruktivně, z RAM – po vyndání baterky se RAM smaže a vše se obnoví, takže nehrozí, že si telefon neopatrnou manipulací zničíte. A tak se zrodil projekt OsmocomBB.
Je dobré alespoň naprosto povrchně tušit, v čem se budeme rýpat.
GSM je síť používaná pro hovory, pomocí postupných rozšíření a upgradů přes ni jdou i přenášet data. V Evropě má přidělena dvě pásma, a to 900 MHz a 1800 MHz. Různě po krajině a po vysokých budovách jsou rozeseté základnové stanice, tzv. BTSky (base station), které jsou propojené do jednoho velkého přepojovacího centra. Seznam BTS včetně fotek, souřadnic a technických dat se dá najít třeba na GSMweb.cz.
Účastník má u sebe mobilní telefon se simkartou, na které je uložena jeho identita používaná typicky pro účtování a směrování hovoru na dané telefonní číslo. Při zapnutí se mobil podívá, které BTSky jsou v okolí, a s tou nejsilnější se zaregistruje. Potom průběžně měří sílu signálu, a když se mu zdá příliš slabý a najde silnější BTS, přeregistruje se na ni. Tomu se říká handover. Komunikace mezi mobilem a BTS je šifrovaná nepříliš kvalitní šifrou A5/1; v zemích, se kterými se nemá západní svět rád, pak ještě mizernější šifrou A5/2.
Protože na jedné BTS visí mnoho mobilů současně a více lidí současně chce taky telefonovat, musíme mezi ně nějak rozdělit dostupné frekvenční spektrum. Rozsah frekvencí, které BTS dostala od operátora (ten je dostal od ČTÚ), rozdělíme na 200 kHz široké kanály, a každý kanál ještě na 8 timeslotů (po sobě následující „okénka“, ve kterých se mobily střídají). Místo, kde smí telefon vysílat, je pak určené číslem kanálu (ARFCN) a pořadím timeslotu. Jeden z kanálů označíme jako Beacon („maják“, též BCCH – Broadcast Control Channel). Na něm neustále vysílá BTS zprávu jako „tady je BTS operátora toho a toho, můžete se ke mně přihlásit“ a zároveň na tomto kanále poslouchají všechny mobily, se kterými se právě netelefonuje. Když má na některý z nich přijít příchozí hovor, BTS na Beacon kanálu zahlásí něco jako „Mobil 123456 tady má příchozí hovor, žádám ho, aby mě následoval na kanál 4, timeslot 5.“
Tomuto řešení se říká TDMA (time-divison multiple access), protože na každém kanálu může být více mobilů, které se ve vysílání střídají a každý má přidělený nějaký čas, po který smí vysílat.
Seznam podporovaných telefonů najdete na wiki projektu. Většinou jsou to různé staré Motoroly, které se dají vykšeftovat po bazarech (teď je po nich ale docela velká poptávka, takže už to tak snadné není), případně objednat z čínského dovozu třeba tady. Podporovaný je prý i Neo a OpenMoko, nicméně ty jsem nezkoušel.
Motorola přichází v plastovém obalu a na boku má konektor na 2,5mm jack na sluchátka. Do sluchátek je vyvedený sériák a mobil má pozoruhodnou vlastnost – když je vypnutý, krátce stisknete tlačítko pro zapnutí a zároveň do něj přes konektor na sluchátka začnete cpát data, tato data nahraje do paměti a spustí.
Z toho vyplývá, že budeme potřebovat sériák přebastlený na sluchátkový konektor. Telefon interně pracuje s napětím 3,3 V (plus mínus autobus), tedy sériák musí být TTL a 3,3V. Pokud ho zrovna nemáte, na TTL se dá udělat buď konvertor z obyčejného RS232 sériáku (obvodem MAX232, nezkoušeno, a jak si dále povíme, nedoporučováno) nebo z USBčka. Říká se tomu FTDI Breakout a dá se to sehnat třeba na Sparkfunu nebo zkanibalizovat z Arduina (vyndá se procesor a do patice se na správná místa nastrkají drátky). Pro maximalisty existuje čip FT4232H, respektive modul FT4232H Mini-Module, který má hned 4 sériáky v jednom pouzdře.
Převodníků z USB na TTL sériák se dá sehnat víc, já ale doporučuji použít něco od FTDI, poněvadž se dají snadno přetaktovat – normálním sériákem protlačíte nejvyšší rychlost 115200 b/s, což nemusí stačit, pokud se rozhodnete telefon použít třeba k poslouchání celého kanálu najednou (115200 stačí jen na 6 z 8 timeslotů).
Já mám modul na 5 V, a i když je elektronika mobilu celkem odolná, netroufnu si to na ten 3,3V port připojit. Nastává proto čas bastlení. Tx linku vyřešíme děličem 1:2 z 10k a 4k7 odporu, Rx necháme tak, protože 3,3 V je i 5V čipem chápáno jako logická 1. S takovým děličem není problém nahrát firmware (používá se rychlost 9600 b/s), ale na vysoké rychlosti se mi jít nepodařilo, pravděpodobně kvůli nějakým vnitřním kapacitám. Takže třeba pro streamování dat ze vzduchu to použít nepůjde.
Sériák vyrobíme podle návodu. Pájet sluchátkové konektory je ale otrava, navíc dírka je zapuštěná v plastu a tak se tam třeba nejlevnější konektory z GM prostě mechanicky nevejdou a musíme se poohlédnout po opravdových sluchátkách.
Další možnost je telefon otevřít (drží to celé na 2 šroubcích), desku vyndat a konektor přesvědčit ke spolupráci pomocí mírného násilí, nožíku a kleštiček. Když už do toho rejpete, rovnou můžete udělat napájení z USB. "-" baterky a zem na desce spojte, telefonu to nevadí.
Ačkoli používám trafopájku téměř ke všemu, do telefonu je lepší pájet mikropájkou; pokud je navíc ESD-safe, tak je to jen dobře.
Pokud zjistíte, že k nějakému projektu potřebujete víc (8+) telefonů, brzo vám začne vadit, že je musíte zapínat ručně a když se něco rozbije, tak je musíte ručně restartovat. Navíc musíte řešit nabíjení a ze sériáků se vám vytvoří zmuchlanec kabelů, ve kterém už se nevyznáte. Proto jsem vyrobil desku, ke které se mobily připojí, zavře se to do krabičky a o všechno včetně napájení se to stará samo.
K odesílání dat z mobilu na BTS (uplink) se používají trošku jiné frekvence než k přijímaní dat z BTS do mobilu (downlink). Mobil je navržený k tomu, aby dobře slyšel BTS, a ostatní signál odfiltroval – při normálním provozu se tak potlačí zbytečný šum. Pokud ale z nějakého důvodu potřebujete slyšet i ostatní mobily v okolí (analyzujete provoz, něco ladíte nebo jste si dokonce spustili vlastní BTS), filtr sníží dosah na pár metrů ve městě a na desítky metrů v přírodě (daleko od BTS → okolní mobily musí vysílat silněji). Filtr se dá buď vyměnit za jiný nebo prostě přemostit. Druhá metoda je levnější a rychlejší, i když dosahované výsledky jsou trošku horší. I tak se připravte na pájení titěrných součástek.
Procesor v mobilu je ARM, takže na x86 budeme muset crosskompilovat. Ale stačí postupovat podle instrukcí a rozchodit to jde snadno.
Po zkompilování najdete po stromu se zdrojáky různé binárky.
Defaultně je vypnutá veškerá podpora vysílání, neměli byste se tedy dostat do problémů kvůli tomu, že třeba něco zarušíte.
Nejjednodušší aplikace prostě vypíše na displej zprávu a zobrazí informace o baterce. Najdete ji, jako ostatní aplikace, v target/firmware/board/<název vaší desky>/
a nahrajete podle návodu k vašemu konkrétnímu typu telefonu. Třeba u mé Motoroly C118 to je
master/src/host/osmocon$ ./osmocon -p /dev/ttyUSB0 -m c123xor ../../target/firmware/board/compal_e88/hello_world.compalram.bin
Parametr -p je jasný, parametr -m určuje typ telefonu (najdete na wiki, případně vyzkoušíte – hlavně jestli očekává paritu (koncovka xor) nebo ne) a pak následuje cesta k souboru, který chcete nahrát a spustit. Po zadání příkazu se zdánlivě nic neděje, program čeká na výzvu k nahrání firmware. Tu vyvoláte krátkým stisknutím zapínacího (červeného) tlačítka na telefonu. Hned potom by se měla na konzoli vysypat spousta informací o průběhu nahrávání a nakonec o úspěchu.
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! battery_compal_e88_init: starting up OsmocomBB Hello World (revision osmocon_v0.0.0-1348-g1362a21-modified) ======================================================================
Interní loader v mobilu bohužel neumí stáhnout víc než 64 KiB, i když v mobilu je více dostupné paměti. Naštěstí osmocon podporuje chainloading – na začátku nahrajeme krátký prográmek, který zpřístupní celou paměť, a pak mu pošleme kód, který chceme nahrát.
./osmocon -p /dev/ttyUSB0 -m c123xor -c ../../target/firmware/board/compal_e88/hello_world.highram.bin ../../target/firmware/board/compal_e88/chainload.compalram.bin
Kód, který chceme nahrát, se určuje parametrem -c. Firmware pro chainloading má v názvu highram.
Aplikace jménem rssi umožňuje procházet kanály a ukazuje přijímaný výkon. Je potřeba ji chainloadovat, protože má asi 82 kB.
./osmocon -p /dev/ttyUSB0 -m c123xor -c ../../target/firmware/board/compal_e88/rssi.highram.bin ../../target/firmware/board/compal_e88/chainload.compalram.bin
Po nahrání můžete zkusit naladit nějakou blízkou BTS (číslo kanálu najdete na již odkazovaném webu ve sloupečku Bch) a uvidíte znatelně silnější signál. Pomocí šipky nahoru lze zapnout „Geiger mód“, kdy telefon cvaká podle síly signálu :).
Aplikace mobile
implementuje standardní telefonní chování. Neumí ještě handover, takže při přesunu na větší vzdálenost ji bude třeba restartovat. Nicméně jsem ji nezkoušel, například proto, že její provoz je v ČR nelegální (není to schválené zařízení). Navíc implementace GSM jsou všelijaké a takovéto experimenty mají tendenci buď shazovat BTSky nebo okolní mobily.
Též by mělo být možné rozjet si s několika mobily vlastní BTSku, nevím ale, jak dalece je tato myšlenka implementována. Představivosti se meze nekladou. Pokud vás chytá paranoia, že po vás jdou, proč se pomocí směrové antény nezaregistrovat na 30 km vzdálenou BTSku a falšováním time-advance přesvěčit operátora, že se fyzicky nacházíte někde úplně jinde? Opět nevím, jak dalece je toto implementováno.
Zatím jsme spouštěli aplikace z Git větve master. Velký zájem veřejnosti ale poslední dobou budí větev sylvain/burst_ind
. Ta obsahuje určité úpravy kódu DSP telefonu, které zařídí, že DSP začne přijímat i data, která mu „nepatří“, a následně je posílá po sériáku. Dále je vypnuté dešifrování v telefonu a počítání kontrolních součtů, takže z telefonu dostanete i surová zašifrovaná data. Bohužel již delší dobu jsou patche do této větve neveřejné, nicméně i tak je kód plně funkční (padá při slabém signálu).
Zkompilujeme si jednoduše git checkout sylvain/burst_ind; cd src/; make clean; ./configure; make
.
Pro sniffování je potřeba mít přetaktovaný sériák na rychlost vyšší než 115200 b/s. S 5V FTDI převodníkem k brmduinu sraženým na 3,3 V děličem se mi to rozchodit nepovedlo, se zmiňovaným čtyřportovým FT4232H mi to funguje.
Můžeme začít tím, že se rozhlédneme okolo. Do mobilu nahrajeme upravený firmware, který si s sebou nese balíček, kterým za běhu patchne kód v DSP (ano, je to trošku hardcore).
./osmocon -p /dev/ttyUSB0 -m c123xor ../../target/firmware/board/compal_e88/layer1.compalram.bin
Potom už můžeme s mobilem začít komunikovat. Sken okolních BTS vyvolá aplikace cell_log.
./host/layer23/src/misc/cell_log -s /tmp/osmocom_l2 -l - ... <000e> cell_log.c:340 Sync ARFCN XX (rxlev -70, XXX syncs left) <000e> cell_log.c:190 Cell: ARFCN=XX MCC=230 MNC=XX (Czech Republic, Nejmenovaný operátor) ... <000e> cell_log.c:340 Sync ARFCN XX (rxlev -82, XXX syncs left) <000e> cell_log.c:190 Cell: ARFCN=XX MCC=230 MNC=XX (Czech Republic, Další nejmenovaný operátor) ...
V posledních verzích Wiresharku je podpora věci zvané GSMTAP – to je protokol pro přenos GSM provozu po UDP/IP. U Wiresharku nás to zajímá proto, že když na UDP port 4729 pošlete správně zabalená GSM data, Wireshark je hezky rozparsuje a můžete je všelijak analyzovat.
Linux defaultně odpoví na přijetí paketu na neznámý port zamítavou ICMP zprávou a vysílač GSMTAP zpráv to po pár pokusech přestane bavit. Můžeme proto pakety třeba tiše zahazovat, Wireshark je chytí i tak.
iptables -A INPUT -p UDP --dport 4729 -j DROP
Aplikace ccch_scan instruuje mobil, aby poslouchal na beacon kanálu BTS, a když se tam objeví jakákoli výzva „pojď si povídat na jiný kanál“, přeladil se na ten nový kanál. Zároveň všechny rámce, které mobil slyší, posílá po sériáku do počítače, a ccch_scan je balí do GSMTAP a posílá po IP.
osmocom-bb/src$ ./host/layer23/src/misc/ccch_scan -s /tmp/osmocom_l2 -a XX -i 127.0.0.1
Nečekejte ale, že ve Wiresharku uvidíte kdovíjaké informace. Pokud zrovna nejste na nešifrované síti (což se vám asi hned tak nestane), většina zachycených spojení bude končit příkazem k zapnutí šifrování.
Osmocom zastřešuje i několik dalších projektů; za zmínku stojí například:
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
proč se pomocí směrové antény nezaregistrovat na 30 km vzdálenou BTSku a falšováním time-advance přesvěčit operátora, že se fyzicky nacházíte někde úplně jinde?Tak myslím, že u 30km BTS by falšování už být nemuselo ne? (hledat v mezikruží o šířce někde 300m nebo kolik je jeden time-advance by imho skoro nikdo nechtěl, i když v případě sektorové antény a kruhové výseče možná už jo
Zřejmě mám moc starou motorolu
Hmm, tak opravdu, jsem pár let pozadu - moje Motorola Amio s 4xAA bateriemi na tohle asi opravdu nemá
Nebudu se tvářít, že jsem tomu nějak pořádně rozumněl, taková technika jde vážně mimo mě, ale obdivuji um, jak technický, tak i ten popisující, že i já jsem si rozšířil obzory. Díky za článek, po dlouhé době něco opravdu hodnotného na Ábíčku.