Nokia konfigurační SMS

Účel tohoto dokumentu je popsat způsob jak vytvořit tzv. konfigurační SMS zprávu, díky které je možné pohodlně uživatelům nastavit v mobilních telefonech Nokia SIP účet nebo připojení k bezdrátové síti.

Odesílání sms

Gnokii nestačí. Neumí posílat smsky v binárním módu. Naštěstí pro ovládání stačí cat. Příklad použití. Přepínače -ne u echa jsou nutné, stejně jako \r\n za každým příkazem. Zařízení /dev/ttyACM0 je seriový modem, ke kterému je mobil připojený.

echo -ne "AT\r\n" > /dev/ttyACM0

Seznam některých příkazů včetně jednoduchého popisu co dělají je tady. Obsáhlejší příručka je tady

Odesílaní v binárním režimu

Konfigurační smsky lze posílat pouze v binárním režimu. Do binárního režimu lze přepnou telefon příkazem

AT+CMGF=0

Vlastní odeslání sms se pak provede příkazem

AT+CMGS

Který následně čeká na zadání sms. Po jejím zadání je potřeba ukončit řádek znakem \032

Formát binárni sms pro WAP-PUSH

| PDU | UDH | WSP | WBXML |

pro data rozdělená do více sms je formát

| PDU | UDH 1 | WSP | WBXML 1 |
| PDU | UDH 2 | WBXML 2       |
| PDU | UDH 3 | WBXML 3       |
           .
           .
           .
| PDU | UDH n | WBXML n  |

Formát PDU

Detailně lze najít tady nebo tady (hlavně kapitola 9.2 typ sms-submit), pro naše potřeby stačí

| 00 51 00 91 OC 6407281553F8 00 F5 AA 0A |

1. byte = SMSC délka je 0, nezapočítává se do celkové délky zprávy (viz. byte 16) 2. byte = máme UDH, formát TTL je relativní a typ zprávy je SMS-submit (dáva 81d = 0×51) 3. byte = telefon nastavuje referenční číslo 4. byte = délka čísla (12) 5. byte = příznak, že číslo příjemce je v mezinárodním formátu (+420xxxxxxxx) 6-12. byte = telefonní číslo (v semi octet formátu → tzn. po vynechání znaků + je vždy prohozena sudá a lichá číslice → např. z 420123456789 se stane 241032547698) 13. byte = typ zprávy, v našem případě SME-to-SME implicitní 14. byte = kódování obsahu, 0×01 + 0xF0 ME specifická zpráva, 04 = 8bit 15. byte = TTL zprávy, AA = 4 dny 16. byte = délka zprávy (tzn. bez pdu hlavičky) 17-x. byte = vlastní zpráva Pro rozdělené zprávy, které směřují na stejné číslo je PDU hlavička shodná.

Formát UDH

Detailní popis formátu UDH lze najít zde (kapitola 9.2.3.24 - čtení pro náročné), ukázka s detailním vysvětlením tady (Appendix C.) UDH je v našem případě použito pro 2 účely - doručení wsp zprávy na wap-push port a rozdělení dlouhé zprávy do více sms. UDH je složeno z Information Element Identifier (IEI), které se skládají za sebe a tvoří dohromady UDH hlavičku. My vystačíme s 2-mi IEI

| 05 04 0B84 0000 | 00 03 62 01 01 | 
       1. IEI           2. IEI 

1. byte = definuje typ IEI. Toto IEI určuje, v jakém formátu jsou zadány adresy, 05 = 16 bitově (= 0×0000-0xFFFF ). 2. byte = délka 1. IEI, počítá se od 3. byte včetně (2 adresy po 2 bytech = 4) 3-4. byte = cílový port, na který ma být obsah UDH doručen. 0x0B84 je obecný wap-push 5-6. byte = výchozí port, pro nás není důležitý, může být 0×0000 7. byte = určuje typ IEI, 00 = zpráva rozložená do více SMS 8. byte = délka 2. IEI, počítá se od 9. byte včetně 9. byte = referenční číslo pro celou skupinu smsek, do kterých byl obsah rozdělen. Pokud odesíláte zprávy na jedno tel. číslo, je dobré ho měnit. 10. byte = celkový počet zpráv 11. byte = pořadové číslo této konkrétní zprávy Pokud použijeme oba IEI, zbyde nám na zprávu 128 byte (139-6-5).

WSP

Hlavicka se opět skládá z několika částí. Podrobý popis viz. zde (hlavně kapitola 8, čtění pro odolné).

| 01 06 2F | 1F | 2D | B6 | 9181 | 92<40-ti bytová hash> | 00

1. byte = ID pushe, 1 (je všude 1, neznámo proč ) 2. byte = typ pdu pushe. WAP-PUSH má 6 3. byte = délka hlavičky od 4. byte včetně, naše statická hlavička má 2F 4. byte = typ následujícího prvku, typ 1F je délka hlavičky od 6. byte 5. byte = délka je 2D 6. byte = typ následujícího prvku, typ B6 je shortint zakódovaná hodnota 36, která podle tohoto dokumentu. Kódování probíhá tak, že se musí nastavit 7.bit ⇒ B6 (10110110) a 36 (00110110) 7. byte = typ následujícho prvku je typ zabezpečení (hodnota 11, 91 jako short int). 8. byte = typ zabezpečení USERPIN. USERPIN je pin, který je zadán při vytváření hmac hashe - viz. byte 10-50.(hodnota 1, jako short int 81) 9. byte = typ následujícího prvku je MAC (hmac-hash) 10-50. byte = hmac sha1 hash posílaného dokumentu. Klíč použitý při jejím vytváření je nutné správně zadat při otevírání sms v mobilu 51. byte = 00 pro EOF, konec hlavičky

WBXML

Detailní popis jednotlivých XML tagů pro provisioning je tady. Příklady nastavení specifických pro nokii lze najít tady. Možná bude nutné použít starší verze dokumentu, záleží na cílovém zařízení. Příklad konfiguračního xml souboru pro nastavení VoIPu, Sipu a eduroamu. APPID w9010 a w9013 jsou specifické pro nokii (Seznam APPID typů je tady).

<?xml version="1.0"?>
  <wap-provisioningdoc version="1.2">
  <characteristic type="APPLICATION">
    <parm name="APPID" value="w9010"/>
    <parm name="APPREF" value="ZCU_SIP"/>
    <parm name="PROVIDER-ID" value="ZCU SIP"/>
    <parm name="PTYPE" value="IETF"/>
    <parm name="PUID" value="orion-login@zcu.cz"/>
    <parm name="NAME" value="ZCU SIP"/>
    <parm name="TO-NAPID" value="eduroam"/>
    <characteristic type="APPADDR">
        <parm name="LR"/>
        <parm name="AUTOREG" value="needed"/>
        <parm name="ADDR" value="zcu.cz"/>
        <characteristic type="PORT">
            <parm name="PORTNBR" value="5060"/>
        </characteristic>
    </characteristic>
    <characteristic type="APPAUTH">
        <parm name="AAUTHNAME" value="orion-login"/>
        <parm name="AAUTHSECRET" value="sip-heslo"/>
        <parm name="AAUTHDATA" value="zcu.cz"/>
    </characteristic>
    <characteristic type="RESOURCE">
        <parm name="URI" value="zcu.cz:5060"/>
        <parm name="AAUTHNAME" value="orion-login"/>
        <parm name="AAUTHSECRET" value="sip-heslo"/>
        <parm name="AAUTHDATA" value="zcu.cz"/>
    </characteristic>
 </characteristic>
 
 <characteristic type="APPLICATION">
   <parm name="APPID" value="w9013"/>
   <parm name="PROVIDER-ID" value="ZCU VoIP"/>
   <parm name="NAME" value="ZCU VoIP"/>
   <parm name="TO-APPREF" value="ZCU_SIP"/>
   <characteristic type="CODEC">
       <parm name="MEDIASUBTYPE" value="1"/>
       <parm name="PRIORITYINDEX" value="0"/>
   </characteristic>
   <characteristic type="CODEC">
       <parm name="MEDIASUBTYPE" value="10"/>
       <parm name="PRIORITYINDEX" value="1"/>
   </characteristic>
   <characteristic type="CODEC">
       <parm name="MEDIASUBTYPE" value="4"/>
       <parm name="PRIORITYINDEX" value="2"/>
   </characteristic>
   <characteristic type="CODEC">
       <parm name="MEDIASUBTYPE" value="3"/>
       <parm name="PRIORITYINDEX" value="3"/>
   </characteristic>
   <characteristic type="CODEC">
       <parm name="MEDIASUBTYPE" value="0"/>
       <parm name="PRIORITYINDEX" value="4"/>
   </characteristic>
 </characteristic>

<characteristic type="NAPDEF">
   <parm name="NAPID" value="eduroam"/>
   <parm name="BEARER" value="WLAN"/>
   <parm name="NAME" value="eduroam"/>
   <characteristic type="WLAN">
       <parm name="PRI-SSID" value="eduroam"/>
       <parm name="NETMODE" value="INFRA"/>
       <parm name="SECMODE" value="8021X"/>
           <characteristic type="EAP">
               <parm name="EAPTYPE" value="EAP-PEAP"/>
               <parm name="USERNAME" value="orion-login@zcu.cz"/>
               <parm name="REALM" value="zcu.cz"/>
               <parm name="VER-SER-REALM" value="1"/>
               <parm name="CLIENT-AUTH" value="1"/>
               <parm name="PEAP-V0" value="1"/>
               <parm name="PEAP-V1" value="1"/>
               <parm name="PEAP-V2" value="1"/>
           </characteristic>
           <characteristic type="EAP">
               <parm name="EAPTYPE" value="EAP-MSCHAPV2"/>
               <parm name="USERNAME" value="orion-login@zcu.cz"/>
               <parm name="PASSWORD" value="eduroam-heslo"/>
               <parm name="ENCAPS" value="EAP-PEAP"/>
           </characteristic>
    </characteristic>
</characteristic>
</wap-provisioningdoc>

Tento xml soubor je pak nutné převést nějakým vhodným prostředkem libwbxml http://libwbxml.aymerick.com/ z xml na binární xml (pozor, debianí balíček v Etchi neobsahuje zkompilované utility xml2wbxml a wbxml2xml Obsahuje jej jako libwbxml2-utils). Upozornění, pro symbiany S60r3 není pravděpodobně možné nastavit některé kombinace EAP ( např. PEAP s MSCHAPv2 , viz. [1]). Je tedy nutné vždy zkonzultovat stránky výrobce a stránky konkrétního modelu telefonu.

Linky

Závěr

Konfigurační sms jsou posílatelné skrze tento shellový skript. Nicméně z důvodu špatné implementace ze strany nokie, nelze nastavit eduroam one-touch. Sip a Voip jsou nastavitelné bez problému. Nicméně pro odeslání 1 konfigurační sms může být potřeba při kombinaci eduroam+sip+voip az 8 sms normálních (v případě nastavení emailu a dalších služeb ještě více).

Oma-sender.deb

Quick HowTo

Toto je rychlý návod jak nainstalovat a odeslat konfigurační SMS pro VoIP ZČU v čistě nainstalovaném systému Debian:

aptitude install openssl
aptitude install libwbxml2-utils
aptitude install gawk

Zapojíme Nokia mobil do USB a dáme příkaz dmesg, kde zjistíme aktuální rozhraní mobilu (v našem případě /dev/ttyACM0)

[   85.474904] usb 1-1: new full speed USB device using uhci_hcd and address 2
[   85.642978] usb 1-1: configuration #1 chosen from 1 choice
[   85.789528] usb 1-1: New USB device found, idVendor=0421, idProduct=0419
[   85.789532] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[   85.789534] usb 1-1: Product: Nokia E60
[   85.789535] usb 1-1: Manufacturer: Nokia
[   86.596527] cdc_acm 1-1:1.10: ttyACM0: USB ACM device
[   86.604566] usbcore: registered new interface driver cdc_acm
[   86.604570] cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters
[   86.619987] usbcore: registered new interface driver cdc_ether
[   86.621639] usb 1-1: bad CDC descriptors
[   86.621650] usbcore: registered new interface driver rndis_host
[   86.634504] usb 1-1: bad CDC descriptors
[   86.634514] usbcore: registered new interface driver rndis_wlan

Instalace oma-senderu

dpkg -i oma-sender-i386.deb 
Selecting previously deselected package oma-sender.
(Reading database ... 19838 files and directories currently installed.)
Unpacking oma-sender (from oma-sender-i386.deb) ...
Setting up oma-sender (1.0) ...
Zadejte zarizeni, ktere bude posilat konfiguracni zpravy: [/dev/ttyACM0]

Odeslání SMS:

oma-send.sh -d petrovic -d heslo 12345 +420606665154

Instalace

Stáhněte si Oma-sender-all.tar archiv, obsahuje debianí balíčky pro architektury i386 a amd64. Balíčky nainstalujte. Balíčky mají tyto prerekvizity:

openssl (>= 0.9.8h)
libwbxml2-utils
gawk

Ovládání

Ovládání je jednoduché, program se spouští z příkazové řádky.

oma-send.sh -d <1. parametr xml souboru> -d <2. parametr xml souboru> ... -d <n. parametr xml souboru> <ověřovací klíč> <tel. číslo ve formátu +420xxxxxxxxx>

Ovládaní při základním nastavení:

oma-send.sh -d <sip_username> -d <sip_heslo> <klic> <tel_cislo>

Klíč je numerické heslo, potřebné pro otevření sms v cílovém zařízení. Z technických důvodů není možné odesílat více sms zároveň, proto je program omezen na maximálně jednu současně běžící instanci. V případě, že je program přerušen uprostřed odesílání, je nutné odstranit zámek (/var/lock/oma-sender.LCK). Pravděpodobně také budete muset zabít proces oma-checker. PID procesu je v souboru /var/lock/oma-sender.LCK.

Konfigurační soubor

Konfigurační souboru obsahuje tyto parametry device=připojené zařízení, které je schopno odesílat sms zprávy xml_file=konfigurační soubor debug=ukecaný mód debug_nosend=mód, ve kterém nejsou sms odeslány m4mask viz. níže. Parametru m4mask souvisí s -d parametry a jejich pořadím při spouštění programu. Parametry -d umožňují měnit xml soubor bez nutnosti zásahu do skriptu. Jeho základní podoba je: m4mask='-DUSERNAME=A -DPASSWORD=B' USERNAME a PASSWORD jsou parametry v sip.xml, které jsou při běhu programu nahrazeny konkrétními hodnotami. Při spouštění programu musí být tyto zadány ve stejném pořadí, jako jsou uvedeny v konfigurační souboru:

oma-send.sh -d <uzivatelske_jmeno> -d <sip_heslo> <klic> <tel_cislo>

V případě změny parametrů v xml souboru může být někdy nutné změnit i parametr m4mask (např. při přidání některého z uživatelsky specifických údajů), potom jednoduše přidejte nové klíčové slovo do xml souboru a přidejte ho nakonec proměnné m4mask. Hodnota za rovnítkem musí být velké písmeno anglické abecedy, které je další na řadě. Např: m4mask='-DUSERNAME=A -dPASSWORD=B -dEMAIL=C' a program potom bude spouštěn takto

oma-send.sh -d <username> -d <password> -d <email> <klic> <cislo>

V případě změny pořadí u m4mask se změní i pořadí parametrů při spouštění. Např: m4mask='-dEMAIL=A -dPASSWORD=B -DUSERNAME=C' a program potom bude spouštěn takto

oma-send.sh -d <email> -d <username> -d <password> <klic> <cislo>
cs/swahw/autonokia.txt · Poslední úprava: 2010/06/28 14:08 autor: janru@cesnet.cz
Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0