Sms 在短消息中嵌入GSM手机
我正在使用WML功能“providelocalinfo”将位置信息放入通过GSM手机上的WIB菜单发送的短消息中 我正在使用SmartTrust的WIG WML v.4规范。相关章节为“9.4 providelocalinfo元素” 我使用示例中的代码,然后通过SMS传输变量,并使用Kannel从SMSC检索消息 以下是我正在使用的代码,除了[MyServiceCenter]是我的实际服务中心外:Sms 在短消息中嵌入GSM手机,sms,gsm,wml,kannel,Sms,Gsm,Wml,Kannel,我正在使用WML功能“providelocalinfo”将位置信息放入通过GSM手机上的WIB菜单发送的短消息中 我正在使用SmartTrust的WIG WML v.4规范。相关章节为“9.4 providelocalinfo元素” 我使用示例中的代码,然后通过SMS传输变量,并使用Kannel从SMSC检索消息 以下是我正在使用的代码,除了[MyServiceCenter]是我的实际服务中心外: <?xml version="1.0" encoding="UTF-8" ?> <
<?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>
$(X)$(LOC)
我在收到的消息中看到的是“loc=”后跟7字节(八位字节)或二进制数据。我试图找到解释如何解码这些数据的文档,但没有发现任何东西能清楚地解释这一点
在解码的7个八位组中,
前三个八位组总是一样的,
接下来的两个八位字节往往在三个唯一值之间变化,
最后两个八位组似乎是细胞
因此,我对接收器进行了编码,以提取最后两个八位字节并构造一个16位GSM蜂窝ID。大多数情况下,它与网络上已知的细胞相匹配。但通常情况下,该值不匹配
因此,我试图找到以下方面的信息:
任何对我可能做错的事情的洞察都将不胜感激 在这个问题上不要太多批评!我想总结一下我的发现,以防其他人发现它们有用:
免责声明:安全传输16位GSM手机ID需要处理一些设置,我理解这些设置只是因为它们不是默认配置的。我可能还依赖其他默认值,但我不知道它们可能会有所不同 要解码位置信息,您需要查看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]所示
根据个人经验,这里提到的第一个八位字节通常被省略,所以前三个不变的字节是长度和国家。接下来的两个是网络运营商代码。这对我很有帮助:天真地抓取最后两个八位字节会丢失相同或附近单元格的不同LAC值。不同WIB平台发送的信息似乎与本规范略有不同(至少SmartTrust是这样),但这是朝着正确方向迈出的一步,表明了我们所看到的一些问题的解决方案。