[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".

时间: 2024-10-23 20:04:00

[20171227]表的FULL_HASH_VALUE值的计算.txt的相关文章

获取input表签的值-在webbrowser控件中获取文本框的值

问题描述 在webbrowser控件中获取文本框的值 复制授权码 请问高手们怎么才能获取到input标签的值呢 相关文章 javaweb-value为空,如何获取文本框的值? javascript-在js中 如何用Jquery 获取一个文本框中的值 文本框中ID=A js文本框-js获取文本框的值,有默认值 javascript-如何获取HTML网页密码输入框的值? jquery怎么让循环的两个文本框的值相加 servlet-想通过href链接传递文本框的值,该怎么得到文本框的值 textbox

[20171113]修改表结构删除列相关问题3.txt

[20171113]修改表结构删除列相关问题3.txt --//维护表结构删除字段一般都是先 ALTER TABLE <table_name> SET UNUSED (<column_name>); --//然后等空闲时候删除列. ALTER TABLE <table_name> DROP UNUSED COLUMNS CHECKPOINT <n>; --//参考文档: https://docs.oracle.com/cd/E11882_01/server.

[20151228]小表全表扫描为何如此慢2.txt

[20151228]小表全表扫描为何如此慢2.txt --论坛上有人问的问题,小表全表扫描为何如此慢,200M的大小.链接如下. http://www.itpub.net/thread-2049088-1-1.html --我的猜测是可能含有lob字段,不过对方的恢复没有lob字段.仔细检查发现array使用缺省值,zergduan,bfc99观察都比我细致. --拿例子sh.sales测试看看. SCOTT@book> @ &r/ver1 PORT_STRING              

40-.net如何从数据库中的一个表中取值

问题描述 .net如何从数据库中的一个表中取值 假设这是我数据库里的一张表(数据库是oracle),我该如何取得这些数将他们传给jsonObj.Rows,求教各位大神,能给个具体的实现过程吗? 解决方案 sonObj.Rows是你自己组装的json对象吧,你首先要查询数据库,这个自己看msdn把,很简单,获取值后开始组织json就行了 解决方案二: 自己读取数据后,通过服务器端代码赋值给aspx上的script标签就行,注意<%%>这种代码不能放js文件里面,必须是在aspx页面里面才能解析运

ASP.NET中实现Form表单字段值自动填充到操作模型中

  这篇文章主要介绍了ASP.NET中实现Form表单字段值自动填充到操作模型中,本文模仿MVC模式中的自动映射表单了模型,使用泛型和反射实现,需要的朋友可以参考下 我们知道ASP.NET MVC有个强大的地方就是Form表单提交到action的时候,可以直接将Form的参数直接装配到action的参数实体对象中 比如 代码如下: action方法 Register(UserModel userModel) { ............................. } 在提交表单的时候,会

pinovke-关于C#通过MySQLDriverCS 连接mysql在向表内添加值的时候出现的问题请教

问题描述 关于C#通过MySQLDriverCS 连接mysql在向表内添加值的时候出现的问题请教 C# 连接Mysql 读表建表都没问题,但是在调用 MySQLInsertCommand 方法时 提示出错:" PInvoke 函数"MySQLDriverCS!MySQLDriverCS.CPrototypes::mysql_real_escape_string"的调用导致堆栈不对称.原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配.请检查 PInvoke 签名

jsp 网站开发-在 jsp中为什么用request.getParameter()的方法获取不到表单中的值?

问题描述 在 jsp中为什么用request.getParameter()的方法获取不到表单中的值? //新闻编号 int nid=Integer.parseInt(request.getParameter("nid")); //新闻主题编号 int ntid=1; String ntitle=request.getParameter("title"); String nauthor=request.getParameter("atuthor")

mybatis-Spring+Mybatis从两张表中取值并传值到页面 分页

问题描述 Spring+Mybatis从两张表中取值并传值到页面 分页 我写的Dao //根据登陆ID查询直属下属 (分页) List> findByid(String id,RowBounds rowBounds); 对应的mapper SELECT u.user_code,a.totasalar from c_user_info u JOIN c_attence_info aON u.id=a.relatedid where department=(SELECT department FRO

fckeditor-FCKeditor提交后台如何获取表单的值

问题描述 FCKeditor提交后台如何获取表单的值 <form action="sysAdmin.do?method=updateSysAdmin" method="post" name="beizhu" id="beizhu"> <script type="text/javascript"> var sBasePath = document.location.pathname.s