Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

WAP_Binary_XML

WAP Binary XML (WBXML) 协议是 WapProtocolFamily 的一部分,它尝试将 XML 文档转换为紧凑表示。

为了使用 WBXML,必须存在给定的 XML 媒体类型(例如 WML、SI、SL、CO 或 EMN)与二进制 WBXML 表示之间的映射。此映射会将一组 XML 标签、属性名,甚至属性值的一部分(以及其他可能反复出现的文本字符串)转换为令牌;该令牌是在所谓代码空间中的 8 位二进制索引。

WBXML 文档由一个头部以及一串 WBXML 令牌和文本字符串组成。WBXML 协议甚至预见了字符串表,WBXML 编码器可以在其中存储反复出现的文本字符串;随后,当给定文本字符串出现时,WBXML 流会包含一个指向字符串表的引用。

WBXML 编码器和解码器有 2 种状态:'tag state' 和 'attribute state'。初始状态是 tag state。每当处理一个令牌时,都会根据当前状态对其进行处理。令牌可能触发状态切换。

WBXML 中存在 3 种令牌类型:

  • 在 WBXML 中具有特定含义的全局令牌。全局令牌在任一代码空间中含义相同。

  • 'tag code space' 中用于表示 XML 标签的令牌。

  • 'attribute code space' 中用于表示标签属性名称、其值或值的一部分,甚至用于表示标签属性名称后跟其属性值(开头部分)的令牌。

历史

最初的 WBXML 1.0 规范未被采纳。它与后续 WBXML 版本(1.1、1.2 和 1.3)有显著差异。后续这些版本几乎完全相同。

协议依赖

  • WSP:WAP 中使用的许多媒体类型都以 WBXML 格式编码,并通过 WSP 传送。

示例流量

下面给出了一个 WBXML 编码的 Client Provisioning 推送消息的示例解码:

Wireless Session Protocol, Method: Push (0x06), Content-Type: application/vnd.wap.connectivity-wbxml Transaction ID: 0x01 PDU Type: Push (0x06) Headers Length: 47 Content-Type: application/vnd.wap.connectivity-wbxml; SEC=USERPIN; MAC=0BB3BB551F0A93359EC29E6CEAC1440E4A617489 SEC: USERPIN (0x01) MAC: 0BB3BB551F0A93359EC29E6CEAC1440E4A617489WAP Binary XML, Version: 1.3, Public ID: "-//WAPFORUM//DTD PROV 1.0//EN (Provisioning 1.0)" Version: 1.3 (0x03) Public Identifier (known): -//WAPFORUM//DTD PROV 1.0//EN (Provisioning 1.0) (0x0000000b) Character Set: utf-8 (0x0000006a) String table: 5 bytes Start | Length | String 0 | 5 | 'NAP1' Data representation Level | State | Codepage | WBXML Token Description | Rendering 0 | Tag | T 0 | Known Tag 0x05 (AC) | <wap-provisioningdoc 0 | Attr | A 0 | Known attrStart 0x46 | version='1.0' 0 | Tag | T 0 | END (attribute list) | > 1 | Tag | T 0 | Known Tag 0x06 (AC) | <characteristic 1 | Attr | A 0 | Known attrStart 0x51 | type='PXLOGICAL' 1 | Tag | T 0 | END (attribute list) | > 2 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 2 | Attr | A 0 | Known attrStart 0x15 | name='PROXY-ID' 2 | Attr | A 0 | Known attrStart 0x06 | value= 2 | Attr | A 0 | STR_I (Inline string) | '170.187.51.4' 2 | Tag | T 0 | END (Known Tag) | /> 2 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 2 | Attr | A 0 | Known attrStart 0x07 | name='NAME' 2 | Attr | A 0 | Known attrStart 0x06 | value= 2 | Attr | A 0 | STR_I (Inline string) | 'BankMainProxy' 2 | Tag | T 0 | END (Known Tag) | /> 2 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 2 | Attr | A 0 | Known attrStart 0x1C | name='STARTPAGE' 2 | Attr | A 0 | Known attrStart 0x06 | value= 2 | Attr | A 0 | STR_I (Inline string) | 'http://www.bank.com/startpage.wml' 2 | Tag | T 0 | END (Known Tag) | /> 2 | Tag | T 0 | Known Tag 0x06 (AC) | <characteristic 2 | Attr | A 0 | Known attrStart 0x59 | type='PXAUTHINFO' 2 | Tag | T 0 | END (attribute list) | > 3 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 3 | Attr | A 0 | Known attrStart 0x19 | name='PXAUTH-TYPE' 3 | Attr | A 0 | Known attrStart 0x06 | value= 3 | Attr | A 0 | Known attrValue 0x1C | 'HTTP-BASIC' 3 | Tag | T 0 | END (Known Tag) | /> 3 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 3 | Attr | A 0 | Known attrStart 0x1A | name='PXAUTH-ID' 3 | Attr | A 0 | Known attrStart 0x06 | value= 3 | Attr | A 0 | STR_I (Inline string) | 'pxusername' 3 | Tag | T 0 | END (Known Tag) | /> 3 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 3 | Attr | A 0 | Known attrStart 0x1B | name='PXAUTH-PW' 3 | Attr | A 0 | Known attrStart 0x06 | value= 3 | Attr | A 0 | STR_I (Inline string) | 'pxuserpasswd' 3 | Tag | T 0 | END (Known Tag) | /> 2 | Tag | T 0 | END (Known Tag 0x06) | </characteristic> 2 | Tag | T 0 | Known Tag 0x06 (AC) | <characteristic 2 | Attr | A 0 | Known attrStart 0x52 | type='PXPHYSICAL' 2 | Tag | T 0 | END (attribute list) | > 3 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 3 | Attr | A 0 | Known attrStart 0x2F | name='PHYSICAL-PROXY-ID' 3 | Attr | A 0 | Known attrStart 0x06 | value= 3 | Attr | A 0 | STR_I (Inline string) | 'PROXY 1' 3 | Tag | T 0 | END (Known Tag) | /> 3 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 3 | Attr | A 0 | Known attrStart 0x17 | name='DOMAIN' 3 | Attr | A 0 | Known attrStart 0x06 | value= 3 | Attr | A 0 | STR_I (Inline string) | 'www.bank.com/' 3 | Tag | T 0 | END (Known Tag) | /> 3 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 3 | Attr | A 0 | Known attrStart 0x20 | name='PXADDR' 3 | Attr | A 0 | Known attrStart 0x06 | value= 3 | Attr | A 0 | STR_I (Inline string) | '170.187.51.3' 3 | Tag | T 0 | END (Known Tag) | /> 3 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 3 | Attr | A 0 | Known attrStart 0x21 | name='PXADDRTYPE' 3 | Attr | A 0 | Known attrStart 0x06 | value= 3 | Attr | A 0 | Known attrValue 0x05 | 'IPV4' 3 | Tag | T 0 | END (Known Tag) | /> 3 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 3 | Attr | A 0 | Known attrStart 0x22 | name='TO-NAPID' 3 | Attr | A 0 | Known attrStart 0x06 | value= 3 | Attr | A 0 | STR_I (Inline string) | 'INTERNET' 3 | Tag | T 0 | END (Known Tag) | /> 3 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 3 | Attr | A 0 | Known attrStart 0x22 | name='TO-NAPID' 3 | Attr | A 0 | Known attrStart 0x06 | value= 3 | Attr | A 0 | STR_T (Tableref string) | 'NAP1' 3 | Tag | T 0 | END (Known Tag) | /> 3 | Tag | T 0 | Known Tag 0x06 (AC) | <characteristic 3 | Attr | A 0 | Known attrStart 0x53 | type='PORT' 3 | Tag | T 0 | END (attribute list) | > 4 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 4 | Attr | A 0 | Known attrStart 0x23 | name='PORTNBR' 4 | Attr | A 0 | Known attrStart 0x06 | value= 4 | Attr | A 0 | STR_I (Inline string) | '9203' 4 | Tag | T 0 | END (Known Tag) | /> 3 | Tag | T 0 | END (Known Tag 0x06) | </characteristic> 2 | Tag | T 0 | END (Known Tag 0x06) | </characteristic> 1 | Tag | T 0 | END (Known Tag 0x06) | </characteristic> 1 | Tag | T 0 | Known Tag 0x06 (AC) | <characteristic 1 | Attr | A 0 | Known attrStart 0x55 | type='NAPDEF' 1 | Tag | T 0 | END (attribute list) | > 2 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 2 | Attr | A 0 | Known attrStart 0x11 | name='NAPID' 2 | Attr | A 0 | Known attrStart 0x06 | value= 2 | Attr | A 0 | STR_T (Tableref string) | 'NAP1' 2 | Tag | T 0 | END (Known Tag) | /> 2 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 2 | Attr | A 0 | Known attrStart 0x10 | name='BEARER' 2 | Attr | A 0 | Known attrStart 0x06 | value= 2 | Attr | A 0 | Known attrValue 0x2A | 'GSM-CSD' 2 | Tag | T 0 | END (Known Tag) | /> 2 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 2 | Attr | A 0 | Known attrStart 0x07 | name='NAME' 2 | Attr | A 0 | Known attrStart 0x06 | value= 2 | Attr | A 0 | STR_I (Inline string) | 'MY ISP CSD' 2 | Tag | T 0 | END (Known Tag) | /> 2 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 2 | Attr | A 0 | Known attrStart 0x08 | name='NAP-ADDRESS' 2 | Attr | A 0 | Known attrStart 0x06 | value= 2 | Attr | A 0 | STR_I (Inline string) | '+35808124002' 2 | Tag | T 0 | END (Known Tag) | /> 2 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 2 | Attr | A 0 | Known attrStart 0x09 | name='NAP-ADDRTYPE' 2 | Attr | A 0 | Known attrStart 0x06 | value= 2 | Attr | A 0 | Known attrValue 0x07 | 'E164' 2 | Tag | T 0 | END (Known Tag) | /> 2 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 2 | Attr | A 0 | Known attrStart 0x0A | name='CALLTYPE' 2 | Attr | A 0 | Known attrStart 0x06 | value= 2 | Attr | A 0 | Known attrValue 0x10 | 'ANALOG-MODEM' 2 | Tag | T 0 | END (Known Tag) | /> 2 | Tag | T 0 | Known Tag 0x06 (AC) | <characteristic 2 | Attr | A 0 | Known attrStart 0x5A | type='NAPAUTHINFO' 2 | Tag | T 0 | END (attribute list) | > 3 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 3 | Attr | A 0 | Known attrStart 0x0C | name='AUTHTYPE' 3 | Attr | A 0 | Known attrStart 0x06 | value= 3 | Attr | A 0 | Known attrValue 0x1A | 'PAP' 3 | Tag | T 0 | END (Known Tag) | /> 3 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 3 | Attr | A 0 | Known attrStart 0x0D | name='AUTHNAME' 3 | Attr | A 0 | Known attrStart 0x06 | value= 3 | Attr | A 0 | STR_I (Inline string) | 'wwwmmmuser' 3 | Tag | T 0 | END (Known Tag) | /> 3 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 3 | Attr | A 0 | Known attrStart 0x0E | name='AUTHSECRET' 3 | Attr | A 0 | Known attrStart 0x06 | value= 3 | Attr | A 0 | STR_I (Inline string) | 'wwwmmmsecret' 3 | Tag | T 0 | END (Known Tag) | /> 2 | Tag | T 0 | END (Known Tag 0x06) | </characteristic> 2 | Tag | T 0 | Known Tag 0x06 (AC) | <characteristic 2 | Attr | A 0 | Known attrStart 0x54 | type='VALIDITY' 2 | Tag | T 0 | END (attribute list) | > 3 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 3 | Attr | A 0 | Known attrStart 0x12 | name='COUNTRY' 3 | Attr | A 0 | Known attrStart 0x06 | value= 3 | Attr | A 0 | STR_I (Inline string) | '228' 3 | Tag | T 0 | END (Known Tag) | /> 3 | Tag | T 0 | Known Tag 0x07 (A.) | <parm 3 | Attr | A 0 | Known attrStart 0x13 | name='NETWORK' 3 | Attr | A 0 | Known attrStart 0x06 | value= 3 | Attr | A 0 | STR_I (Inline string) | '001' 3 | Tag | T 0 | END (Known Tag) | /> 2 | Tag | T 0 | END (Known Tag 0x06) | </characteristic> 1 | Tag | T 0 | END (Known Tag 0x06) | </characteristic> 0 | Tag | T 0 | END (Known Tag 0x05) | </wap-provisioningdoc>

另一个解码后的 XML 示例见 prov.wmbxl。

Wireshark

WBXML dissector 功能完整,并且包含针对以下 XML 媒体类型的令牌映射解析:

  • Wireless Markup Language (WML):版本 1.0、1.1、1.2 和 1.3

  • Service Indication (SI):版本 1.0

  • Service Loading (SL):版本 1.0

  • Cache Operation (CO):版本 1.0

  • WTA Channel (CHANNEL):版本 1.0

  • WAP Provisioning (PROV):版本 1.0

  • Wireless-Village Client-Server Protocol (WV-CSP):版本 1.0 和 1.1(1.2 将在修正后的规范发布后支持)

  • Nokia 和 Ericsson OTA Provisioning (OTAP):版本 7.0(向下兼容所有更早版本)

  • SyncML:版本 1.0 和 1.1

  • Profile-Diff 头部的 WSP User-Agent Profile (UAPROF) 头部值(仅 UAPROF 1.x;UAPROF 2.0 不再使用 WBXML)。

部分支持:

  • Phone.com WML+:版本 1.1 和 1.3(仅 WML 令牌)

其他 WBXML 媒体类型也可以作为 WBXML 进行解析,但没有令牌映射。

偏好设置

  • 跳过 WBXML 令牌到媒体类型令牌的映射。如果你想查看 WBXML 令牌而不显示其在某种媒体类型(例如 WML)中的表示,请启用此偏好设置。例如,令牌会显示为 Tag_0x12、attrStart_0x08 或 attrValue_0x0B。

  • 禁用 WBXML 令牌解析。如果你想跳过对构成 WBXML 文档正文的 WBXML 令牌的解析,请启用此偏好设置。这样只会解析(并可视化)WBXML 头部。

示例捕获文件

  • SampleCaptures/WAP_WBXML_Provisioning_Push.pcap 显示了一个包含以 WBXML 编码的 Client Provisioning 文档的 WAP Push。此示例来自 WAP Provisioning 规范。

显示过滤器

WBXML 显示过滤器字段的完整列表可以在显示过滤器参考中找到

仅显示基于 WBXML 的流量:

 wbxml

捕获过滤器

你不能在捕获时直接过滤 WBXML 协议。

外部链接

  • 添加指向 WBXML 规范以及在 Web 上查找更多 WBXML 相关信息位置的链接

讨论

导入自 https://wiki.wireshark.org/WAP_Binary_XML ,时间为 2020-08-11 23:27:20 UTC

相关 Wireshark Wiki 页面

网络分析技术档案