[20171227]表的FULL_HASH_VALUE值的计算.txt
[20171227]表的FULL_HASH_VALUE值的计算.txt
--//sql_id的计算是使用MD5算法进行哈希,生成一个128位的Hash Value,其中低32位作为HASH VALUE显示,SQL_ID则取了后64位。
--//实际上sql_id使用32进制表示,hash_value使用10进制表示。
--//我在链接提到http://blog.itpub.net/267265/viewspace-2142512/内容:
--//如果使用md5sum计算的结果,按照4位一组,大小头对调.就一致了.
--//实际上表的hash值是如何计算的呢?自己一直想知道oracle如何计算的,前一段时间探究一些crack password工具.做一些简单的探究.
1.环境:
SCOTT@book> @ &r/ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SCOTT@book> grant dba to a identified by a;
Grant succeeded.
A@book> create table b(c number);
Table created.
A@book> select owner,name,namespace,type,hash_value,full_hash_value from V$DB_OBJECT_CACHE where owner='A' and name='B';
OWNER NAME NAMESPACE TYPE HASH_VALUE FULL_HASH_VALUE
------ ---- --------------- ------ ---------- --------------------------------
A B TABLE/PROCEDURE TABLE 3720244077 b6bab9fa1d1610f90401e083ddbe6b6d
--//这样做的目的很好理解减少破解难度.
--//按照4位一组,大小头对调.
$ echo b6bab9fa1d1610f90401e083ddbe6b6d |xxd -r -p | od -t x4
0000000 fab9bab6 f910161d 83e00104 6d6bbedd
0000020
--//拼接 fab9bab6f910161d83e001046d6bbedd.我开始想使用john,不知道如何生成破解字典.先放弃,使用hashcat倒是比较灵活先尝试hashcat.
2.开始尝试破解:
R:\hashcat>hashcat --help
....
- [ Built-in Charsets ] -
? | Charset
===+=========
l | abcdefghijklmnopqrstuvwxyz
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ
d | 0123456789
s | !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
a | ?l?u?d?s
b | 0x00 - 0xff
--//我实际上以前也猜测开头应该是owner.table这样的模式,后面补0.根据这个规则生成破解码表.
--//这样规则前面4个字符应该是?u?s?u?b,然后开始不断尝试,终于破解:
R:\hashcat>cat hashcat.pot
fab9bab6f910161d83e001046d6bbedd:$HEX[422e4101000000]
--//422e4101000000,想都想不到这个使用7位来计算的.而且oracle计算表的hash值竟然是表的owner在前,表名在后.中间使用点分开.后面补01000000.
--//应该可以猜测到owner都是一样的,放在后面是有道理的.
R:\hashcat>hashcat64 -a 3 -m 0 fab9bab6f910161d83e001046d6bbedd ?u?s?u?b?b?b?b --force
hashcat (v3.00-1-g67a8d97) starting...
OpenCL Platform #1: Advanced Micro Devices, Inc.
================================================
- Device #1: Turks, 766/1024 MB allocatable, 6MCU
- Device #2: Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz, skipped
WARNING: ADL_Overdrive6_TargetTemperatureData_Get is missing from ADL shared library.
Hashes: 1 hashes; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Applicable Optimizers:
* Zero-Byte
* Precompute-Init
* Precompute-Merkle-Demgard
* Meet-In-The-Middle
* Early-Skip
* Not-Salted
* Not-Iterated
* Single-Hash
* Single-Salt
* Brute-Force
* Raw-Hash
Watchdog: Temperature abort trigger disabled
Watchdog: Temperature retain trigger disabled
fab9bab6f910161d83e001046d6bbedd:$HEX[422e4101000000]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Session.Name...: hashcat
Status.........: Cracked
Input.Mode.....: Mask (?u?s?u?b?b?b?b) [7]
Hash.Target....: fab9bab6f910161d83e001046d6bbedd
Hash.Type......: MD5
Time.Started...: 0 secs
Speed.Dev.#1...: 1238.5 MH/s (11.94ms)
Recovered......: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.......: 90869760/95812130439168 (0.00%)
Rejected.......: 0/90869760 (0.00%)
Restore.Point..: 0/4294967296 (0.00%)
Started: Wed Dec 27 10:22:40 2017
Stopped: Wed Dec 27 10:22:42 2017
--//反过来验证scott.dept表是否正确.应该是这样"DEPT.SCOTT\01\0\0\0".
--//注意01一定要使用\01,开始使用\1测试错误.
A@book> select owner,name,namespace,type,hash_value,full_hash_value from V$DB_OBJECT_CACHE where owner='SCOTT' and name='DEPT';
OWNER NAME NAMESPACE TYPE HASH_VALUE FULL_HASH_VALUE
------ -------------------- --------------- ----- ---------- --------------------------------
SCOTT DEPT TABLE/PROCEDURE TABLE 2152664343 1383925607dd84fd07c34017804f0d17
$ echo -e -n "DEPT.SCOTT\01\0\0\0" | md5sum |sed 's/ -//' | xxd -r -p | od -t x4
0000000 13839256 07dd84fd 07c34017 804f0d17
0000020
--//拼接起来13839256 07dd84fd 07c34017 804f0d17 变成 1383925607dd84fd07c34017804f0d17!!
--//^_^,正好是前面FULL_HASH_VALUE值对上了.
--//再拿一个最长字符串owner||name测试看看
A@book> select owner,name,namespace,type,hash_value,full_hash_value from V$DB_OBJECT_CACHE where owner||name='APEX_030200WWV_FLOW_CUSTOM_AUTH_SETUPS';
OWNER NAME NAMESPACE TYPE HASH_VALUE FULL_HASH_VALUE
------------ ------------------------------ --------------- ----- ---------- --------------------------------
APEX_030200 WWV_FLOW_CUSTOM_AUTH_SETUPS TABLE/PROCEDURE TABLE 2757059300 ae088e68645bfa46e406e327a45562e4
$ echo -e -n "WWV_FLOW_CUSTOM_AUTH_SETUPS.APEX_030200\01\0\0\0" | md5sum |sed 's/ -//' | xxd -r -p | od -t x4
0000000 ae088e68 645bfa46 e406e327 a45562e4
0000020
--//OK也是正确了.
--//总结:
--//表的FULL_HASH_VALUE计算就是table_name.owner加上"\01\0\0\0".
[20171227]表的FULL_HASH_VALUE值的计算.txt的更多相关文章
- [20191127]表 full Hash Value的计算.txt
[20191127]表 full Hash Value的计算.txt --//曾经做过表full Hash Value的计算,当时我是通过建立简单的schema以及表名的形式,使用hashcat破解o ...
- [20200211]使用DBMS_SHARED_POOL.MARKHOT与sql_id的计算.txt
[20200211]使用DBMS_SHARED_POOL.MARKHOT与sql_id的计算.txt --//以前写的,使用DBMS_SHARED_POOL.MARKHOT标记热的sql_id,这样相 ...
- 【Transact-SQL】计算整个表中所有值的出现的次数
原文:[Transact-SQL]计算整个表中所有值的出现的次数 一个表有3列,5行,那么一共有15个值,现在要计算整个表中所有值在表中出现的次数,不过这里表的列数是不确定的,上面的例子是3列,实际上 ...
- BERT模型在多类别文本分类时的precision, recall, f1值的计算
BERT预训练模型在诸多NLP任务中都取得最优的结果.在处理文本分类问题时,即可以直接用BERT模型作为文本分类的模型,也可以将BERT模型的最后层输出的结果作为word embedding导入到我们 ...
- [20171113]修改表结构删除列相关问题3.txt
[20171113]修改表结构删除列相关问题3.txt --//维护表结构删除字段一般都是先ALTER TABLE <table_name> SET UNUSED (<column_ ...
- SPSS详细教程:OR值的计算
SPSS详细教程:OR值的计算 一.问题与数据 研究者想要探索人群中不同性别者喜欢竞技类或娱乐性体育活动是否有差异.研究者从学习运动医学的学生中随机招募50名学生,记录性别并询问他们喜欢竞技类还是娱乐 ...
- CSS学习(7)继承、属性值的计算过程
子元素会继承父元素的某些css属性 通常跟字体相关的属性都能被继承,具体的可以在mdn里查询是否是可继承属性 属性值的计算过程(渲染过程) 按照页面文档的树形目录结构进行依次渲染 前提条件:渲染的元素 ...
- 数据可视化之DAX篇(三) 认识DAX中的表函数和值函数
https://zhuanlan.zhihu.com/p/64421003 学习 DAX 的过程中,会遇到各种坑,刚开始甚至无法写出一个正确的度量值,总是提示错误.其实很多原因都是不理解 DAX 函数 ...
- 用jQuery获取表单的值
在日常开发过程中,有许多用到表单的地方.比如登录,注册,比如支付,填写订单,比如后台管理等等. 使用jQuery来获取表单的值是比较常见的做法. 常见表单 单行文字域:<input type=' ...
随机推荐
- [源码]K8 Cscan模块 C#获取内网主机IP/机器名/Banner/网页标题源码
[原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器?其实也是插件化,但C ...
- 获取CPU ID--查看CPU数量/核数
Ubuntu 获取CPU序列号或者主板序列号 CPU ID 代码: sudo dmidecode -t 4 | grep ID ID: 54 06 05 00 FF FB 8B 0F 主板序列号 代码 ...
- 安装scrapy框架出错的解决
要安装scrapy 一般会出现 以下错误(要先安装twisted) 今天通过pip安装twisted遇到了“error: Microsoft Visual C++ 14.0 is required”错 ...
- Firefox37.0.1+selenium 2.53+python3.6打开浏览器时报错NameError: name 'basestring' is not defined
环境:Win7 Firefox浏览器版本37.0.1 Python36 Selenium2.53.0 在Pycharm里执行以下3行脚本: from selenium i ...
- 异步与并行~CancellationTokenSource对线程的作用
返回目录 说起CancellationTokenSource我们应该不会陌生,对于Thread,Task来说,我们启动一个线程去做一些事,如果希望它在某个阶段去被动的停止,可以使用这个Cancella ...
- 利用jquery操作隐藏table某一列
本文版权归 远方的风lyh和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. //隐藏表格第一列 $('tr').find('th:eq(0)').hide(); $('tr').f ...
- shiro教程1(HelloWorld)
shiro简介 官网 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从最小的移动 ...
- 【学习笔记】JS经典异步操作,从闭包到async/await
参考文献:王仕军——知乎专栏前端周刊 感谢作者的热心总结,本文在理解的基础上,根据自己能力水平作了一点小小的修改,在加深自己印象的同时也希望能和各位共同进步... 1. 异步与for循环 抛出一个问题 ...
- easyui的datagrid为何无法显示json数据
因为easyui的datagrid要求数据JSON必须是如下格式:{"total":0,"rows":[]}其中total表示总的数据行数,rows是当前页的数 ...
- [android] 手机卫士自定义滚动控件
TextView控件设置单行显示 android:singleLine=”true” 设置TextView开始的位置显示省略号,android:ellipsize=”start” 设置滚动属性,and ...