文档章节

解析oracle 9i以前版本加密文件二

googlewell
 googlewell
发布于 2017/04/08 11:00
字数 799
阅读 49
收藏 0

对上一篇文章做一下补充

create or replace function get_rowid wrapped 
0
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
3
8
9200000	----------解密方式--------

一、加密方式9200000代表的是oracle的版本,也就是9.2,但是在数据库中存储的确实是9200000的十进制形式,上篇文章中的图片已证明。

二、版本上一行的8标识的是加密的数据类型:

7-Procedure
8-Function
9-Package
b-Package Body

解密样本有限,暂时只列出这么多。

三、每个代码块都有代码长度,后面有个未知标记,应该为size of byte,推测应该是每个数据的最大字节数,比如2标识,下面的每个数据最大值都不超过2个byte。还有6个代码段,只转换了4个,每个代码段的意义将在下面说,这里说一下转换规则。仔细研究的人可能发现了,所有代码段的开头数据都是0,这就相当于编程语言中大部分数组的索引都是0一样,所以转换的时候都进行了忽略,直接跳过,从下一个索引进行转换的。

四、上文提到过代码块中冒号开头的数据,只是说了如何处理,搜索了一下,比较正式的说法是: RLE全称(run-length encoding),翻译为游程编码,又译行程长度编码,又称变动长度编码法(run coding) ,还有叫做行程长度编码压缩算法 。

 

结束补充内容,说一下4个转换表的大致作用。下面tab1代表第一个转换表,一共4个转换表。

 

tab1存储了文件的组成结构,比如B5表示global block end。

tab2存储的是tab1中数据的索引。

tab3存储的就是数据。

tab4存储的是参数,比如一个函数或者存储过程的in和out参数。

 

大致流程:

tab1中取出结构类型,根据tab2的索引,去tab3中取出数据。如果解析到的类型是参数,就去tab4进行查找处理。

假设tab1中10000001为aa,然后查找对应tab2的20000001的数据(tab1和tab2的长度是相等的,也是一一对应的)。比如tab2取出的数据是4,则从tab3中30000004开始取数据,根据类型取相应个数数据。tab3的长度要比tab1和tab2长很多,30000000+tab2的数据=数据起始位置。

 

以上就是tab1查找对应数据的过程。明白过程之后,tab2和tab3可以隐藏掉,简化过程,便于理解:

tab1----------(中间过程隐藏)--------->数据

 

隐藏过程后就是递归解析流程了,比如tab1中的68,代表的结构意思为declare procedure/function,它取出的数据为1 3 E 12,这些作为id再去tab1取出结构解析,

ID对应结构,id计算好为10000001,10000003,10000014,10000018,对应为

1->9A 3->55 E->11 12->17

再将结构进行解析,如此递归。

 

继续进行研究,下一篇文章争取拿一个简单的例子进行说明完整过程。

 

© 著作权归作者所有

googlewell
粉丝 1
博文 27
码字总数 20336
作品 0
滨州
私信 提问
加载中

评论(1)

lanybass
lanybass
然后呢
oracle9i和oracle10g多版本共存,oracle9i不能连接问题总结

oracle9i用pl/slq developer报" ORA-12154: TNS:无法解析指定的连接标识符"错误解决方案总结:机器上先后安装了oracle9i和oracle10g,安装好后,10g能用pl/sql developer正常连接,但9i总是连不上...

Samir
2013/09/12
307
0
php_screw 1.5:php加密: 安装与使用

原文出处:http://archive.cnblogs.com/a/2227273/ php文件通常以文本格式存贮在服务器端, 很容易被别人读到源代码, 为了对源代码进行保护, 可以采用对源代码进行加密的方式.要实现该功能需要...

鉴客
2011/11/03
4.3K
3
ArcGIS SED10.2 + Oracle10g 空间数据连接方式

ArcGIS SED10.2 + Oracle10g 空间数据连接方式 主要有两种: 一、通过ArcSDE自带的方式连接Oracle; 二、通过ArcSDE直连的方式连接Oracle。 1、通过ArcSDE自带的方式连接Oracle时,会出现错误...

sinat_34719507
2016/12/17
0
0
细说websocket - php篇

下面我画了一个图演示 client 和 server 之间建立 websocket 连接时握手部分,这个部分在 node 中可以十分轻松的完成,因为 node 提供的 net 模块已经对 socket 套接字做了封装处理,开发者使...

james_laughing
2016/12/29
39
5
基于rman 全备+归档在线搭建DG

主从两台主机hosts配置192.168.1.197 oradb1(从)192.168.1.198 oradb2(主)二:搭建数据库主库的操作:1.确认主库参数SQL> select name,openmode,databaserole,logmode,forcelogging from ......

zgnzgn1990zgn
2017/12/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

医疗在线客服咨询系统有哪些特点?

随着中国互联网网站的的快速发展,至今医疗行业已经拥有了独立的的运营网站,其中最具特色的便属于医疗在线客服咨询系统,医疗在线客服咨询系统为每个访问网站的患者提供即时的网络在线客服服...

唯喏
今天
10
0
skywalking(容器部署)

skywalking(容器部署) 标签(空格分隔): APM [toc] 1. Elasticsearch SkywalkingElasticsearch 5.X(部分功能报错、拓扑图不显示) Skywalking需要Elasticsearch 6.X docker network create......

JUKE
今天
10
0
解决Unable to find a single main class from the following candidates [xxx,xxx]

一、问题描述 1.1 开发环境配置 pom.xml <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!--一定要对上springboot版本号,因......

TeddyIH
今天
7
0
玩转Spring Boot 注册Servlet、Filter、Listener

玩转Spring Boot 注册Servlet、Filter、Listener JAVA架构师Ya七月 2019-08-23 玩转Spring Boot 注册Servlet、Filter、Listener 在Servlet 3.0之前我们都是使用web.xml进行配置,需要增加Ser...

Java架构师ya七
今天
6
0
Dubbo服务限制大数据传输抛Data length too large: 13055248, max payload: 8388608解决方案

当dubbo服务提供者向消费层传输大数据容量数据时,会受到Dubbo的限制,报类似如下异常: 2019-08-23 11:04:31.711 [ DubboServerHandler-XX.XX.XX.XXX:20880-thread-87] - [ ERROR ] [com.al...

huangkejie
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部