Especificação de SMS

Esta seção é dividida em duas partes:

  1. Conteúdo: o conteúdo das mensagens da Pesquisa de registro de e-mail.
  2. Formatos - como essas mensagens são enviadas e como decodificá-las (se necessário).

Conteúdo

ELS V1

As mensagens da Pesquisa de registro de e-mail enviadas por SMS seguem a especificação AML do ETSI mais recente. Isso é conhecida como ELS V1 e é a abordagem mais comum escolhida pelos parceiros de ELS. A estas são as seções mais relevantes:

Nome da chave Valor Unidades Exemplo
A"ML Versão - 1
lt Latitude graus +37,42175
lg Longitude graus -122.08461
top Carimbo de data/hora do local aaaaMMddHHmmss na hora UTC 20150613010948
rd Precisão de local quadrados 20.0
lc Confiança do local Percentual de confiança 68
pm Método de posicionamento (Wi-Fi, GPS, celular, Nulo) "W", "G", "C" e "N" W
si IMSI (contém apenas os seis primeiros dígitos do IMSI original, os dígitos restantes são substituídos por 0) - 123456000000000
ei IMEI - 355458061005220
mcc MCC de rede - 310
mnc MNC de rede - 260
ml Tamanho da mensagem (incluindo o tamanho e o cabeçalho) - 123

Método de posicionamento

Local nulo

Exemplos

Nenhum local:

A"ML=1;lt=+00.00000;lg=+000.00000;rd=N;top=20220131173734;lc=0;pm=N;si=234159000000000;ei=123456789012345;mcc=234;mnc=15;ml=127

Localização calculada:

A"ML=1;lt=+51.53321;lg=-0.12601;rd=14;top=20220131171748;lc=68;pm=W;si=234159000000000;ei=123456789012345;mcc=234;mnc=15;ml=126

Pesquisa de registro de e-mail Beta

Um formato experimental usado por alguns parceiros é a Pesquisa de registro de e-mail Beta, nossa tecnologia conteúdo que dá aos parceiros a oportunidade de experimentar campos diferentes.

Estas são as seções mais relevantes:

Nome da chave Valor Unidades Exemplo
A"ML Versão - 2
en Número de emergência - 911
et Carimbo de data/hora da chamada de emergência Tempo de época do UNIX em segundos (número inteiro) 1593187189
lo Localização (latitude, longitude, precisão): a latitude e a longitude devem ser truncado para 5 pontos decimais, a precisão para 1 casa decimal; uma precisão de 0 representa desconhecido Graus (flutuante), graus (flutuação), metros (flutuação) 37.42175,-122.08461,20.1
lt Horário do local (relativo ao horário de emergência): este campo pode ser ignorado se nenhum campo de local ("lo") estiver presente ou se nenhum campo de carimbo de data/hora ("et") for presente Segundos (número inteiro) 5
lc Confiança do local Porcentagem de confiança (número inteiro) 68
lz Localização vertical (altitude, precisão vertical) - este campo pode ser Ignorado se nenhum campo de localização ("lo") estiver presente - todos os campos truncados para 1 ponto decimal - uma precisão de 0 representa desconhecido Metros (flutuantes), Metros (flutuantes) -10,1,10,1
ls Origem da localização (Wi-Fi, celular, GPS, combinada, desconhecida) - este campo pode ser ignorado se nenhum campo de localização ("lo") estiver presente "W", "G", "C", "F" e "U" W
ei IMEI - 355458061005220
nc MCC/MNC de rede - 310260
hc MNC/MNC doméstico - 310260
lg Tags de idioma IETF BCP 47 en-US

Nível de confiança

Elevação de altitude (eixo Z)

A Pesquisa de registro de e-mail informa a localização vertical e a precisão nas mensagens da versão Beta. Altitude: lz é apresentado em metros acima do elipsoide de referência WGS84 (WGS é a referência Sistema Geodésico Mundial utilizado pelo GPS) e precisão em metros (altitude, vertical precisão). Este campo pode ser ignorado se nenhum campo de local (lo) estiver presente. Todos campos truncados para 1 ponto decimal e uma precisão de 0.0 representa unknown. A precisão vertical é definida o mesmo que a precisão de local, e a e o percentual de confiança é definido pelo parceiro. O padrão é definido como 68%. confiança. Mais informações estão disponíveis na documentação do Android para getVerticalAccuracyMeters().

Exemplos

Caso de local ainda não calculado:

A"ML=2;en=911;et=1643816841;ei=123456789012345;nc=23415;hc=23415

Caso calculado com sucesso:

A"ML=2;en=911;et=1643816929;lo=51.53321,-0.12601,14.7;lt=6;lc=68;lz=77.6,1.0;ls=W;ei=123456789012345;nc=23415;hc=23415

Formatos

As mensagens da Pesquisa de registro de e-mail por SMS podem ser enviadas usando os seguintes formatos:

  • SMS de texto: SMS simples normal. Esse formato tem suporte a partir de O Android P.
  • Data SMS: o conteúdo da mensagem é exatamente igual ao SMS, mas ela é codificada (mais detalhes abaixo). Esse formato é compatível com qualquer Dispositivo Android compatível com ELS.

SMS

A leitura e análise de SMS de texto é relativamente simples. Muitos dispositivos móveis operadores oferecem esse serviço e podem fornecer APIs push ou pull para obter o conteúdo das mensagens enviadas para um número de telefone padrão.

SMS de dados

O formato SMS de texto normal é compatível a partir do Android P. Antigos dispositivos vão enviar mensagens ELS usando SMS de dados que precisam ser decodificadas. Dados da Pesquisa de registro de e-mail As mensagens SMS são codificadas com o conjunto de caracteres padrão de 7 bits GSM 03.38 e definido como a carga binária de um SMS de dados.

A definição exata de um SMS de dados em comparação com um SMS normal será abordada posteriormente. A definição exata da codificação GSM 03.38 de 7 bits pode ser encontrada em 3GPP 23.038 (consulte especificamente a seção 6.1.2.1.1).

Decodificar SMS para dados

Para que o Google use o SMS para a Pesquisa de registro de e-mail, a Pesquisa de registro de e-mail só se preocupa com SMS do aparelho para a central de serviço móvel (SMSC) - tipo SMS-SUBMIT e envio de mensagens. SMSCs devem ser capazes de receber essas mensagens sem problemas, pois mas fazem parte do padrão normal de SMS. No entanto, observamos na prática problemas com várias MNOs, desde configurações e políticas de infraestrutura até dificuldade em decodificar adequadamente o SMS). A seguir, a ELS considera SMS-ENVIAR mensagem do celular para o SMSC, que segue o SMS normal padrão (GSM 3.40). A Pesquisa de registro de e-mail define um SMS de dados como um subconjunto do SMS normal que:

  1. Tem o sinalizador User-Data-Header-Indicator definido no cabeçalho SMS (6o bit do o primeiro octeto de uma mensagem GSM 03.40 ou 3GPP 23.040)
  2. Contém um cabeçalho de dados do usuário dentro dos dados do usuário do SMS
  3. O cabeçalho de dados do usuário contém um endereço de porta do aplicativo Identificador do elemento de informação (IEI)

É necessário que a Pesquisa de registro de e-mail envie um SMS dessa forma em vez de um SMS normal para garantir que as mensagens SMS do ELS Data não apareçam nos app de mensagens. Um exemplo de SMS codificado é apresentado posteriormente para explicar melhor.

Observe que não especificamos um esquema de codificação de dados (DCS, na sigla em inglês) específico aqui. O DCS é usada para identificar a codificação no segmento de dados do usuário. No entanto, para o no futuro, o esquema de codificação de dados será sempre definido para dados de 8 bits para o máximo de flexibilidade, e os próprios dados serão codificados do alfabeto padrão de 7 bits GSM 03,38. Cada elemento codificado de 7 bits ocupam apenas 7 bits, e não 8 bits.

Considerando que o segmento de dados do usuário tem um máximo de 140 bytes e que o o tamanho mínimo do cabeçalho de dados do usuário que inclui informações da porta é 7 bytes; Isso deixa um máximo de 133 bytes (152 elementos codificados de 7 bits) para codificar o mensagem de emergência real. Esses bytes podem ser decodificados para revelar o SMS do ELS Data SMS que está sendo transmitida.

Exemplo

Assim, após decodificarmos este exemplo de SMS, temos os dados binários do usuário desta string hexadecimal:

415193D98BEDD8F4DEECE6A2C962B7DA8E7DEEB56232990B86A3D9623B39B92783EDE86F784F068BD560B6D80C1683E568B81D7BDCB3E176F076EFB89BA77B39DCCD56A3C966B15D39DD9BD570B2590E56CBC168B21A4DB66B8FC7BD590CB66BBBC73D990DB66BB37B31D94CC12CBBCF74B40E1493CD1A

Decodificar GSM 03,38

O exemplo a seguir decodifica os primeiros octetos, o restante é deixado como uma exercício ao leitor. Sugerimos referenciar 3GPP 23.038 e usar muitos dos ferramentas online úteis (por exemplo, http://smstools3.kekekasvi.com/topic.php?id=288). Na coluna Octetos, as seções destacadas em amarelo representam os bits que não são usados para o de setembro atual e são deixadas para a próxima. Dentro dos setetos as seções destacadas em amarelo representam os bits da atividade anterior octeto simples.

Hex Octetos Sete Personagem (hexadecimal)
41 01000001 1000001 A (41)
51 01010001 0100010 " (22)
93 10010011 1001101 M (4D)
D9 11011001 1001100 L (4C)
8B 10001011 0111101 = (3D)
ED 11101101 0110001 1 (31)
D8 11011000 0111011 ; (3B)
1101100 l (6C)
F4 11110100 1110100 t (74)
DE 11011110 0111101 = (3D)

O resultado final aqui é que a mensagem anterior pode ser decodificada no seguinte string:

A"ML=1;lt=37.42175;lg=-122.08461;rd=20;top=20150613010948;lc=68;pm=G;si=987654231;ei=358239059042542;mcc=310;mnc=260;ml=123

Esses SMSs devem poder ser decodificados com a maioria dos SMS disponíveis publicamente de software.