在短消息中嵌入GSM cellids

时间:2009-07-27 19:25:06

标签: sms gsm wml kannel

我正在使用WML功能“providelocalinfo”将位置信息放入通过GSM手机上的WIB菜单发送的短消息中。

我正在使用SmartTrust的WIG WML v.4规范。相关部分是“9.4 providelocalinfo Element”

我使用示例中的代码,然后通过SMS传输变量,并使用Kannel从SMSC中检索消息。

以下是我正在使用的代码,但[myservicecentre]除外是我的实际服务中心:

<?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>

我在收到的消息中看到的是“loc =”后跟7个字节(八位字节)或二进制数据。我试图找到解释如何解码这些数据的文档,但没有发现任何解释清楚。

在解码的7个八位字节中, 前3个八位字节总是一样的, 接下来的两个八位字节往往在三个唯一值之间变化, 最后2个八位字节似乎是细胞。

所以我编码接收器以拉出最后两个八位字节并构造一个16位GSM cellid。大多数情况下,它匹配来自网络的已知cellid。但很多时候,这个值并不匹配。

所以我试图找到以下信息:

  1. 如何以安全的方式(编码,演员表等)正确传输位置信息
  2. 如何正确解码信息
  3. 如何配置Kannel以兑现二进制位置数据
  4. 我在徒劳的搜索中检查过以下文件,但未找到相关数据: GSM 03.38,GSM 04.07,GSM 04.08,GSM 11.15,以及WIG WML Spec V.4。

    对于我可能做错的任何见解都将不胜感激!

2 个答案:

答案 0 :(得分:2)

要解码位置信息,您需要查看GSM 11.14第48页

1.19位置信息

          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

移动国家代码(MCC),移动网络代码(MNC),位置区域代码(LAC)和 小区ID按照TS GSM 04.08 [8]编码。

从个人经验来看,这里提到的第一个八位字节通常是不用的,所以前三个不变的字节是长度和国家。接下来的2个是网络运营商代码。

答案 1 :(得分:0)

在这个问题上没有太多的叮咬!我希望总结一下我的发现,以防其他人发现它们有用:

  1. 需要发送dcs设置不等于0的消息.dcs =“0”发送打包数据(尊重每个八位字节的低7位;当最大消息大小为0时,允许160个字符的SMS消息实际上是140个八位字节)

  2. 需要以二进制安全方式解析数据:当二进制数据本身可以是该值时,遇到0x0A时停止搜索的正则表达式将失败。

  3. 我发现无需更改Kannel的默认配置。

  4. 干杯

    免责声明:安全传输16​​位GSM Cell-Ids需要处理一些我理解的设置,因为它们默认情况下未配置。我可能还有其他默认值,但我不知道它们可能会有所不同。