Oracle10g、Oracle11g、Oracle12g的TNS协议,不对外公开,某些协议解析比较困难。经过艰苦卓绝的调研,部分协议包得到破解:
1)【0x06】-【0x1017】协议——Select返回的列头报文
2)其他协议,将继续
--------------------------------------------------------------------------------------------------------------------------------
(一)通用包头8个字节
Length | 2 | 包的长度,包括通用包头 |
Packet check sum | 2 | 包的校验和 |
Type | 1 | TNS类型 |
Flag | 1 | 状态 |
Header check sum | 2 | 通用头的校验和 |
注:
Length:包长度(包括包头)
Type: 数据包的类型
类型号 |
| 类型说明 |
1 | 0x01 | 连接(CONNECT) |
2 | 0x02 | 接受(ACCEPT) |
3 | 0x03 | 确认(ACK) |
4 | 0x04 | 拒绝(REFUTE) |
5 | 0x05 | 重定向(REDIRECT) |
6 | 0x06 | 数据(DATA) |
7 | 0x07 | NULL |
8 | 0x08 |
|
9 | 0x09 | 中止(ABORT) |
10 | 0x0a |
|
11 | 0x0b | 重新发送(RESEND) |
12 | 0x0c | 标记(MARKER) |
13 | 0x0d | ATTENTION |
14 | 0x0e | 控制(CONTROL) |
(二)数据包Data结构(0x06)——红色字体部分的某些协议解析,隐秘性很高,破解起来难度大
Common Header | 8 | 通用包头 |
Data flag | 2 | 状态 |
Command packet | 可变 | 数据 |
Command packet | 可变 | 数据 |
… | … | … |
Command packet | 可变 | 数据 |