ORACLE数据库-TNS协议分析详解 联系客服

发布时间 : 星期六 文章ORACLE数据库-TNS协议分析详解更新完毕开始阅读

0x06 0x06 0x08 0x08 0x08 0x08 0x10 0x11 0x11 0x11

0x00 0x01 0x01 0x05 0x08 0x9c 0x19 0x69 0x6b 0x78

More Row Result Info First Row Result Info

Db version Field Info

SELEC返回

2.8.2 Data Format(length+data)

对于ORACLE的TNS协议结构中数据传输,其主要采用以下方式,即用一个标志? 如果开始的大数据标志为0xfe,则结构如下

Big Data Identify Data Length Data …

Data Length Data

Data Length Data Length Data

1 1

Data Length … 1

Data Length 1 1

Data Length

返回列数 … 如果 0 返回列数

和长度字符来传输数据。具体格式如下

? 如果开始的大数据标志不为0xfe,则结构如下:

2.8.2.1 字符串格式

(1) Char(n),nchar

Data Data1

注:数据和数据1总长度为n

可变 可变

实际数据 空格

(2) Varchar(n)

Data

可变(<=n)

实际数据

2.8.2.2 数字格式

(1) 正数

Id

1

Intlength=Id-c0

C0+整数部分长度

整数部分 小数部分 注:

? 数据的第一位标志整数部分长度

? 整数部分长度+小数部分长度=数据总长度-1

? 整数部分从后向前每两位(代表0到100)用一个字节(十六进制)表示,

且为十六进制值-1

? 小数部分从后向前每两位(代表0到100)用一个字节(十六进制)表示,

且为十六进制值-1

? 如果没有小数部分,Intlength+1〉length(为数字长度),则后面有

(Intlength+1-length)位(只传输位)值为0的数据没有传输

(2) 负数

Id

1

Intlength=3f-id 1

3f-整数部分长度 0x66

整数部分 小数部分 Magic

DecLength=length-intlength-1

DecLength=length-intlength-1

? 数据的第一位标志整数部分长度

? 整数部分长度+小数部分长度=数据总长度-2

? 整数部分从后向前每两位(代表0到100)用一个字节(十六进制)表示,

且为101-十六进制值

? 小数部分从后向前每两位(代表0到100)用一个字节(十六进制)表示,

且为101-十六进制值

? 如果没有小数部分,Intlength+2〉length(为数字长度),则后面有

(Intlength+2-length)位(只传输位)值为0的数据没有传输

2.8.2.3

日期格式

Year1 1 Year1-100

Year2 Month Day Hour Minute Second

注:

1 1 1 1 1 1

Year2-100 Month Day Hour-1 Minute-1 Second-1

? Year1为年前两位,值为year1-100 ? Year2为年后两位,值为year2-100 ? Month为月,值为month ? Day为月,值为Day ? Hour为月,值为Hour-1 ? Minute为月,值为Minute-1 ? Second为月,值为Second-1 ?

2.8.3 0x03 0x02 SQL_OPEN

发现当进行0x0303命令查询时

Request id Magic

1 8

2.8.4 0x03 0x03 QUERY

该命令也传输一些SQL查询请求,不能确定什么时候使用0x0303命令进行查询,在分析过程中,发现在登陆之后进行一些系统请求用到了该命令。

Request id Magic Data Format

1 12

可变 查询语句

2.8.5 0x03 0x04 QUERY SECOND

很少出现这个包,也没具体分析

Request id

1

Magic

12

2.8.6 0x03 0x05 FETCH MORE

用户查询是通过0x035e命令来请求数据的返回的结果不能一次传输完成,客户端会不断发送该命令向服务器请求数据,直到服务器告诉客户端数据传送完成。

Request id Magic

1 8

2.8.7 0x03 0x08 HANDSHAKE7

Request id Magic

1 4

2.8.8 0x03 0x09 DISCONNECT

当客户端断开连接时,客户端发送请求到服务器(用0x0309),服务器发送0x0901确认。

Request id

1

2.8.9 0x03 0x3B DB VERSION

请求ORACLE数据库版本信息,通过0x089c返回结果。

Request id Magic

1 16

2.8.10 0x03 0x47 FETCH

Request id

1