ImageVerifierCode 换一换
格式:DOC , 页数:23 ,大小:1.44MB ,
资源ID:664318      下载积分:5 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-664318.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ORACLETNS协议分析.doc)为本站会员(h****)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

ORACLETNS协议分析.doc

1、ORACLE 协议分析1 TNS 介绍TNS 协议是 ORACLE 服务端和客户端通讯的协议。TNS 协议传输可以使用 TCP/IP 协议、使用 SSL 的 TCP/IP 协议、命名管道和 IPC 协议传输,其中 TCP/IP 协议传输是使用明文传送。这里我们只分析基于 TCP/IP 协议上的 TNS 数据。ORACLE 网络通讯协议 TNS 有许多版本,并且大部分向下兼容,我们主要 oracle 9.2.0.1.0 客户和服务间的传输协议,他的协议版本号为 312,其兼容到 300。TNS 协议有一个通用的头,通用头包含一个请求数据类型。不同的服务请求和数据传输使用不同的请求数据类型。对于通

2、常意义的查询操作一般使用数据类型,当出现错误或其他情况时可能使用其他类型。在分析过程中发现以下类型数据: 查询语句出错会用标记(marker)类型 客户端向服务器请求失败(如不存在的服务 ID) ,服务器会发送拒绝( refuse)类型 客户机登陆会发送连接类型,而服务器返回一个重定向类型数据 当重定向端口连接完成后客户端重现发送连接类型数据,服务器返回接受类型数据,然后能够正常通讯。2 TNS 数据格式TNS 数据包含一个通用的包头,这个包头包含包校验,包长度和包类型等信息。不同的类型的数据实现不同功能的数据传输。Common Packet Header 8 通用包头Data 可变 数据2.

3、1 通用包头格式每个 TNS 完整数据都包含一个通用包头,他说明接受数据的长度及其相关校验和解析的信息。Length 2 包的长度,包括通用包头Packet check sum 2 包的校验和Type 1 TNS 类型Flag 1 状态Header check sum 2 通用头的校验和注:Length:包长度(包括包头)Type: 数据包的类型类型号 类型说明1 连接(CONNECT)2 接受(ACCEPT)3 确认(ACK)4 拒绝(REFUTE)5 重定向(REDIRECT)6 数据(DATA )7 NULL89 中止(ABORT)1011 重新发送(RESEND)12 标记(MARKE

4、R)13 ATTENTION14 控制(CONTROL)2.2 连接包结构(0x01)在客户端和 ORACLE 要建立连接时,客户端首先发送一个连接结构,然后服务器返回重定向包(参见 2.5) 。typedef struct TNS_CONNECT_headerUCHAR NS_ver2;UCHAR Compatible_ver2;UCHAR ser_opt1;UCHAR ser_opt2;UCHAR SDU_size2;UCHAR TDU_size2;UCHAR NT_protocol_ch1;UCHAR NT_protocol_ch2;UCHAR Max_packets2;UCHAR Ha

5、rdware_12;UCHAR data_length2;UCHAR Offset2;UCHAR Max_data4;UCHAR flag0;UCHAR flag1;/*java thin interface has no items and id,if it is not jdbc thin, use offset to override these有些版本 TNS 协议中没有下面几项*/UCHAR item14;UCHAR item24;UCHAR ID8;UCHAR unknown8;/*followed by decode_des_conn_data */连接字符串TNS_CONNEC

6、T_HEADER;连接字符串格式:连接功能 连接字符串PING (CONNECT_DATA=(COMMAND=ping);SHOW (CONNECT_DATA=(COMMAND=SHOW LOGFILE);VERSION (CONNECT_DATA=(COMMAND=version);STATUS (CONNECT_DATA=(COMMAND=STATUS);ESTABLISH (CONNECT_DATA=(SID=OBJ_SRVR)(CID=(PROGRAM=)(HOST=140.211.111.111)(USER=SOME_USER);ESTABLISH_REAL_DB (CONNECT_

7、DATA=(SID=wouprd)(CID=(PROGRAM=)(HOST=spruce.ous.edu)(USER=some_user);SERVICE_REGISTER (CONNECT_DATA=(COMMAND=service_register)(LOAD=0)(MAXLOAD=1)(INSTANCE_LOAD=0)(INSTANCE_MAXLOAD=0)(SHUTDOWN_NOTIFY=ON)(FLAGS=0)(SERVICE=obj_srvr)(INFO=PID$COLON$pid)(DISPLAY=PRESPAWNED SERVER)(SERVICE_ID=BBB99B99999

8、B-99BB-B999-B99BB9999B99)(CLASS=ORACLE)(VERSION=81500)(ADDRESS=(PROTOCOL=tcp)(HOST=spruce.ous.edu)(PORT=$port);REDIRECT (ADDRESS=(PROTOCOL=tcp)(HOST=140.211.116.176)(PORT=$port);如:数据库一般的连接,即 ESTABLISH 的连接字符串为:(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=topsec-syangjp)(PORT=1521)(CONNECT_DATA=(SID=test

9、)(SERVER=DEDICATED)(CID=(PROGRAM=D:oracleora92binsqlplusw.exe)(HOST=TOPSEC-MYANGJP)(USER=myangjp)2.3 接受包结构(0x02)用户重定向之后,需要用重定向端口向服务器发送连接,客户端发送连接包,服务器连接成功则返回接受包,否则返回 refuse 包struct TNS_ACCEPT_headerunsigned char NS_ver2;unsigned char ser_opt1;unsigned char ser_opt2;unsigned char SDU_size2;unsigned ch

10、ar TDU_size2;unsigned char Hardware_12;unsigned char data_length2;unsigned char Offset2;unsigned char flag0;unsigned char flag1;/unsigned char unknown8;/*no following data*/;2.4 拒绝包结构(0x04)typedef struct TNS_REFUSE_headerUCHAR uUserRefuseReason;UCHAR uSysRefuseReason;unsigned short int data_length;/

11、拒绝字符串TNS_REFUSE_HEADER;拒绝字符串:REFUTE (DESCRIPTION=(TMP=)(VSNNUM=153092352)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)2.5 重定向包结构(0x05)typedef struct TNS_REDIRECT_headerUCHAR data_length2;UCHAR data; /长度为 data_length;/重定向数据TNS_REDIRECT_HEADER;重定向数据:REDIRECT (ADDRESS=(PROTOCOL=tcp)(HOST=140.211.

12、116.176)(PORT=$port);2.6 标记包结构(0x0c)typedef struct TNS_MARKER_headerUCHAR data_length3;TNS_REDIRECT_HEADER;注:当请求命令出错时,服务器会返回三个标记包2.7 控制包结构(0x0d)暂时没有发现该结构2.8 数据包结构(0x06)数据包负责传输数据库客户端和服务端的各种操作。每个操作由一个或几个命令组成,可以是在同一个数据包中有几个命令结构组合起来,也可以分开传输一些命令。Common Header 8 通用包头Data flag 2 状态Command packet 可变 数据Comma

13、nd packet 可变 数据 Command packet 可变 数据具体各种操作命令的组成和转换现在还不能完全确定,但是对于一些基本的 SQL 查询我们是可以分析的,下面我们主要分析一些命令结构和相关 ORACLE 操作的命令组成序列。有些有许多结构和它的具体字节不影响 ORACLE 基本命令的分析,所以只做了简单的分析,对于 SQL 的一般查询语句 TNS 协议主要通过数据包的 0x0303 和 0x035e 命令来传输数据,返回结果主要是通过 0x06 和 0x08 命令传输数据,0x06 主要传输数据,0x08 主要传输系统配置相关数据。2.8.1 数据包通用结构数据包有一个 2 字

14、节的状态包和多个命令包组成:Data flag 2 状态Command packet 可变 命令包 Command packet 可变 命令包注: Data_flag 一般情况为零,分析发现退出时为 0x0040Send token 0x0001Request Confirmation 0x0002Confirmation 0x0004Reserved 0x0008UNKNOWN 0x0010More Data to Come 0x0020End of File 0x0040Do Immediate Confirmation 0x0080Request to send 0x0100Reques

15、t Nt Trailer 0x0200命令包(Command packet)结构如下:Command 1 命令Sub command 1 子命令Data 可变 命令包数据注: 命令(Command)说明(以下命令为主命令的基本功能,但是还不能完全确认):0x01 Set Protocol0x02 Set Data Type Representation0x03 User to Oracle Request0x04 Return Status0x05 Access User Address Space0x06 Raw Transfer Header0x07 Raw Transfer Data0x

16、08 Return OPI(Oracle Program Interface) Parameter0x09 Oracle Function Complete0x0a N Error Return Definition0x0b Sending I/o Vector only for fast UPI(User Program Interface)0x0c Sending Long for Fast UPI0x0d Invoke User Callback0x0e Network Service0x0f Data Intergrity0x10 Supervisor0x110x12通过分析具体的包和

17、一些其他相关软件,得到以下相关命令和子命令,许多命令还需要进一步确认命令 子命令 类型 说明 使用0x01 0x05 请求 CLIENT TYPE0x01 0x06 Set Protocol0x01 0x2c IDENT0x02 0x00 RESET0x02 0x01 CHAR_MAP0x02 0x540x03 0x010x03 0x02 SQL_OPEN0x03 0x03 QUERY0x03 0x04 QUERY SECOND0x03 0x05 FETCH MORE0x03 0x080x03 0x09 DISCONNECT0x03 0x0E0x03 0x27 SET_LANG0x03 0x2

18、B DESC_COLS0x03 0x3B DB VERSION0x03 0x47 FETCH0x03 0x51 Set password0x03 0x52 Set user0x03 0x54 HANDSHAKE40x03 0x5E SQL0x03 0x73 AUTH20x03 0x76 AUTH10x03 0x77 查询表结构信息 DESC0x04 0x01 ACK0x04 0x02 ACK0x04 0x05 ACK0x06 0x00 More Row Result Info0x06 0x01 First Row Result Info0x08 0x010x08 0x050x08 0x080x

19、08 0x9c Db version0x10 0x19 Field Info SELEC 返回0x11 0x690x11 0x6b0x11 0x782.8.2 Data Format(length+data)对于 ORACLE 的 TNS 协议结构中数据传输,其主要采用以下方式,即用一个标志和长度字符来传输数据。具体格式如下 如果开始的大数据标志为 0xfe,则结构如下Big Data Identify 1Data Length 1 返回列数Data Data Length Data Length 1 如果Data Data LengthData Length 1 0 如果开始的大数据标志不为 0xfe,则结构如下:Data Length 1 返回列数Data Data Length2.8.2.1字符串格式(1) Char(n) ,ncharData 可变 实际数据Data1 可变 空格注:数据和数据 1 总长度为 n(2) Varchar(n)Data 可变(=n ) 实际数据

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。