OOB短信参数设置参考
来源:互联网 发布:jquery 移除数组对象 编辑:程序博客网 时间:2024/04/30 00:39
OOB短信概述
OOB(Out-Of-Bound)短信,相对于移动应用的实际业务通道而言,也称为带外短信;OOB对于终端手机来讲是不可见的,终端应用可以截取该OOB短信,从而达到服务端向客户端推送数据的目的。
该OOB短信实际上是二进制短信(Android里的Data_SMS),Android系统收到该短信后并不会入库也不会发送系统广播事件,所以通过继承ContentObserver使用观察者模式并不能截取该OOB短信。
在Android系统中,截取二进制短信是采用Receiver方式,并配置指定的监听端口,收取该端口的二进制短信数据、解析以及后续业务处理。
SMPP发送端设置
该发送端在VVM中是指VVMGW中的短信发送模块,在发送该OOB短信时,需要设置以下几个字段replace_if_present_flag、esm_class、protocol_id、data_coding,此外还需要设置UDH,该UDH用于指定OOB短信需要发送到终端的哪个端口。具体参数设置参考如下:
submitsm.setReplaceIfPresentFlag((byte) 0x01);submitsm.setEsmClass((byte) 0x40);submitsm.setProtocolId((byte) 0x7d);submitsm.setDataCoding((byte) 0x04);// 设置消息内容,设置UDH字段ByteBuffer buffer = new ByteBuffer();buffer.appendByte((byte) 0x06);// UDHLbuffer.appendByte((byte) 0x05);// IEIbuffer.appendByte((byte) 0x04);// IELbuffer.appendByte((byte) 0x15);// IED 5499,改为同时兼容iPhone和Androidbuffer.appendByte((byte) 0x7b);// IEDbuffer.appendByte((byte) 0x15);// IED 5499,改为同时兼容iPhone和Androidbuffer.appendByte((byte) 0x7b);// IED
Android应用客户端设置
在Android客户端中如果需要截取二进制短信,需要在指定的端口上进行监听(正常情况下,接收到的二进制短信不会存到短信库中)。
即在AndroidManifest.xml中receiver中加入过滤器为android.intent.action.DATA_SMS_RECEIVED,并且指定监听端口等信息,如下:
<receiver android:name=".SMSReceiver"> <intent-filter android:priority="2147483647"> <action android:name="android.intent.action.DATA_SMS_RECEIVED"/> <data android:host="localhost" android:port="16001" android:scheme="sms"/> </intent-filter></receiver>
Blackberry应用客户端设置
在Blackberry客户端没有相关的配置文件,只能通过程序来指定监听端口(正常情况下,接收到的二进制短信不会存到短信库中)。
private static class ListeningThread extends Thread { private boolean _stop = false; private DatagramConnection _dc; public synchronized void stop() { _stop = true; try { _dc.close(); // Close the connection so the thread returns. } catch (IOException e) { System.err.println(e.toString()); } } public void run() { try { _dc = (DatagramConnection)Connector.open("sms://:5499"); for(;;) { if ( _stop ) { return; } Datagram d = _dc.newDatagram(_dc.getMaximumLength()); _dc.receive(d); String address = new String(d.getAddress()); String msg = new String(d.getData()); System.out.println("Message received: " + msg); System.out.println("From: " + address); System.exit(0); } } catch (IOException e) { System.err.println(e.toString()); } } }
注意:该端口需要与SMPP发送短信的UDH中两个BYTE字节的IED字段(3E81,即16001)的值相同。
截图
SMSC监控台-OOB短信
SMSC监控台-正常短信
Android应用接收OOB短信
- OOB短信参数设置参考
- svmtrain参数设置参考
- MySQL服务优化参数设置参考
- 短信 AT 命令参考
- android参考--发送短信
- MySQL服务优化参数设置参考1
- MySQL服务优化参数设置参考2
- 参数设置
- OOB攻击
- oob-case
- Silverlight OOB
- OOB (1)
- OOB (2)
- 蓝牙 OOB
- silverlight4 OOB
- 辽宁信息管理中心短信接入参数参考
- C#:PDU格式短信编解码(四)编码参数设置部分
- Out of blog(OOB)
- 设计模式学习--单件模式(Singleton Pattern)
- ffmpeg对amr格式编解码
- Android系统自带样式Android:theme
- vsftpd用户配置
- 重装系统后,恢复Oracle的.ORA文件
- OOB短信参数设置参考
- Thinkpad R400 2786k26系列在Debian Squeeze上解决无线网卡问题
- Android调用天气预报的webservice应用
- 关于jprofiler在SUSE配置远程监控
- Android getWindow().setFlags方法
- java.net.SocketException五大异常解决方案(转)
- javaweb 各种include标签
- c语言与shell脚本结合
- Oracle session连接数和inactive的问题记录(清除方法)