Domanda

Sto usando la funzione WML "ProvidelocalInfo" per inserire le informazioni sulla posizione in brevi messaggi Invia tramite un menu WiB su un telefono GSM.

Sto usando le specifiche Wig WML V.4 da SmartTrust. La sezione pertinente è "Elemento 9.4 ProvidelocalInfo"

Uso il codice come nell'esempio, quindi trasmetto la variabile tramite SMS e utilizzo Kannel per recuperare il messaggio dall'SMSC.

Ecco il codice che sto usando, ad eccezione di [MyServiceCentre] che è il mio vero centro di assistenza:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE wml PUBLIC "-//SmartTrust//DTD WIG-WML 4.0//EN"
  "http://www.smarttrust.com/DTD/WIG-WML4.0.dtd">
<wml wibletenc="UCS2">  

  <card id="s">
    <p>
      <providelocalinfo cmdqualifier="location" destvar="LOC"/>
      <setvar name="X" value="loc=" class="binary"/>
      <sendsm>
          <destaddress value="367"/>
          <userdata docudenc="hex-binary" dcs="245">
              $(X)$(LOC)
          </userdata>
          <servicecentreaddress value="[myservicecentre]"/>
      </sendsm>
    </p>
  </card>
</wml>

Quello che vedo nei miei messaggi ricevuti è "loc =" seguito da 7 byte (ottetti) o dati binari. Ho cercato di trovare la documentazione che spiega come decodificare questi dati, ma non ho trovato nulla che lo spieghi chiaramente.

Dei 7 ottetti decodificati, i primi 3 ottetti sono sempre gli stessi, i successivi 2 ottetti tendono a variare tra tre valori unici, gli ultimi 2 ottetti sembrano essere il cellulare.

Quindi ho codificato il ricevitore per tirare gli ultimi due ottetti e costruire un cellulare GSM a 16 bit. Il più delle volte corrisponde a cellulari noti della rete. Ma abbastanza spesso, il valore non corrisponde.

Quindi sto cercando di trovare informazioni su quanto segue:

  1. Come trasmettere correttamente le informazioni sulla posizione in modo sicuro (codifica, cast, ecc.)
  2. Come decodificare le informazioni correttamente
  3. Come configurare Kannel per onorare i dati sulla posizione binaria

Ho esaminato i seguenti documenti nella mia vana ricerca, ma non ho trovato i dati pertinenti: GSM 03.38, GSM 04.07, GSM 04.08, GSM 11.15, nonché la Wig WML Spec v .4

Qualsiasi intuizione su ciò che potrei fare di sbagliato sarebbe apprezzata!

È stato utile?

Soluzione

Per decodificare le informazioni sulla posizione, è necessario guardare in GSM 11.14 Page 48

1.19 Informazioni sulla posizione

          Byte(s)    Description                                           Length
            1         Location Information tag                               1
            2         Length (X) of bytes following                          1
           3-5        Mobile Country & Network Codes (MCC & MNC)             3
           6-7        Location Area Code (LAC)                               2
           8-9        Cell Identity Value (Cell ID)                          2

Il codice del paese mobile (MCC), il codice di rete mobile (MNC), il codice dell'area di posizione (LAC) e l'ID cella sono codificati come in TS GSM 04.08 [8].

Dall'esperienza personale, il primo ottetto menzionato qui è di solito lasciato fuori, quindi i tuoi primi tre byte immutabili sono la lunghezza e il paese. I prossimi 2 sono il codice dell'operatore di rete.

Altri suggerimenti

Non troppi morsi su questa domanda! Volevo riassumere i miei risultati nel caso in cui gli altri possano trovarli utili:

  1. È necessario inviare messaggi con un'impostazione DCS non uguale a 0. DCS = "0" invia i dati imballati (onorando i 7 bit inferiori di ciascun ottetto; ciò consente a 160 caratteri SMS quando la dimensione massima del messaggio è effettivamente 140 ottetti)

  2. È necessario analizzare i dati in modo sicuro: le espressioni di regex che interrompono la ricerca quando si incontrano 0x0a falliranno quando i dati binari stessi possono essere quel valore.

  3. Non ho trovato bisogno di modificare la configurazione predefinita di Kannel.

Saluti

Disclaimer: la trasmissione sicura di ID cellulari GSM a 16 bit richiede di trattare alcune impostazioni che ho capito solo perché non sono state configurate per impostazione predefinita. Probabilmente ci sono altri predefiniti da cui dipendevo, ma non sono a conoscenza del fatto che possano variare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top