oracle数据库传输协议,ORACLE数据库-TNS协议分析详解

unsigned char Offset[2]; unsigned char flag0; unsigned char flag1; //unsigned char unknown[8]; /*no following data*/ };

2.4 拒绝包结构(0x04)

typedef struct TNS_REFUSE_header{ UCHAR uUserRefuseReason; UCHAR uSysRefuseReason; unsigned short int data_length;

//拒绝字符串

}TNS_REFUSE_HEADER; 拒绝字符串:

REFUTE (DESCRIPTION= (TMP=) (VSNNUM=153092352) (ERR=12505) (ERROR_STACK= (ERROR= (CODE=12505) (EMFI=4) ) ))

2.5 重定向包结构(0x05)

typedef struct TNS_REDIRECT_header{

UCHAR data_length[2];

UCHAR data; //长度为data_length; //重定向数据

}TNS_REDIRECT_HEADER;

重定向数据:

REDIRECT (ADDRESS=(PROTOCOL=tcp) (HOST=140.211.116.176)(PORT=$port));

2.6 标记包结构(0x0c)

typedef struct TNS_MARKER_header{

UCHAR data_length[3]; }TNS_REDIRECT_HEADER; 注:

当请求命令出错时,服务器会返回三个标记包

2.7 控制包结构(0x0d)

暂时没有发现该结构

2.8 数据包结构(0x06)

数据包负责传输数据库客户端和服务端的各种操作。每个操作由一个或几个命令组

通用包头 状态

成,可以是在同一个数据包中有几个命令结构组合起来,也可以分开传输一些命令。

Common Header Data flag Command packet Command packet …

Command packet

具体各种操作命令的组成和转换现在还不能完全确定,但是对于一些基本的SQL查询我们是可以分析的,下面我们主要分析一些命令结构和相关ORACLE操作的命令组成序列。

有些有许多结构和它的具体字节不影响ORACLE基本命令的分析,所以只做了简单

8 2

可变 数据 可变 数据 …

可变 数据

的分析,对于SQL的一般查询语句TNS协议主要通过数据包的0x0303和0x035e命令来传输数据,返回结果主要是通过0x06和0x08命令传输数据,0x06主要传输数据,0x08主要传输系统配置相关数据。

2.8.1 数据包通用结构

数据包有一个2字节的状态包和多个命令包组成:

Data flag Command packet …

Command packet

注:

? Data_flag一般情况为零,分析发现退出时为0x0040

Send token

Request Confirmation Confirmation Reserved UNKNOWN More Data to Come End of File

Do Immediate Confirmation Request to send Request Nt Trailer

命令包(Command packet)结构如下:

Command Sub command Data

注:

1 1

命令 子命令

0x0001 0x0002 0x0004 0x0008 0x0010 0x0020 0x0040 0x0080 0x0100 0x0200

2 …

状态 …

可变 命令包 可变 命令包

可变 命令包数据

命令(Command)说明(以下命令为主命令的基本功能,但是还不能完全确认): 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b

Set Protocol

Set Data Type Representation User to Oracle Request Return Status

Access User Address Space Raw Transfer Header Raw Transfer Data

Return OPI(Oracle Program Interface) Parameter Oracle Function Complete N Error Return Definition

Sending I/o Vector only for fast UPI(User Program Interface)

0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12

Sending Long for Fast UPI Invoke User Callback Network Service Data Intergrity Supervisor

通过分析具体的包和一些其他相关软件,得到以下相关命令和子命令,许多命令还需要进一步确认 命令 0x01 0x01 0x01 0x02 0x02 0x02 0x03 0x03 0x03 0x03 0x03 0x03 0x03 0x03 0x03 0x03 0x03 0x03 0x03 0x03 0x03 0x03 0x03 0x03 0x03 0x04 0x04 0x04

子命令 0x05 0x06 0x2c 0x00 0x01 0x54 0x01 0x02 0x03 0x04 0x05 0x08 0x09 0x0E 0x27 0x2B 0x3B 0x47 0x51 0x52 0x54 0x5E 0x73 0x76 0x77 0x01 0x02 0x05

类型 请求

CLIENT TYPE Set Protocol IDENT RESET CHAR_MAP

SQL_OPEN QUERY

QUERY SECOND FETCH MORE

DISCONNECT

SET_LANG DESC_COLS DB VERSION FETCH Set password Set user HANDSHAKE4 SQL AUTH2 AUTH1 查询表结构信息 ACK ACK ACK

说明

DESC

使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值