请在这里上传需使用RC4 40bit密匙(必须已知)解密的excel文档,仅支持的格式为(.xls):

点击下面的复选框,表示你已接受 服务和保密协议

excel文档最大不能超过: 10MB

在线EXCEL(xls)40bit RC4密匙解密工具

使用在线EXCEL(xls) 40bit RC4密匙解密工具须知

您上传的excel文档,你必须拥有该文件的完全使用权,或者该文件归属与你,否则禁止使用本工具

在线EXCEL(xls) 40bit RC4密匙解密工具使用说明

注意!注意!注意!使用本工具您必须已知rc4 40bit密匙

本工具仅支持支持40bit RC4+MD5加密的excel文档,而RC4+SHA1加密的excel,市面上没有相关的密匙找回工具,所以不再提供支持

对于小于等于2003的office文档,默认的加密方式为:RC4+MD5加密,如果你设置的密码足够复杂,而又忘记了密码,那么找回密码将会是一个相当漫长的过程,1天?1周?一个月?或者一年?

那么有没有在可接受的时间内,保证解密文档的方法呢?答案是有的,那就是直接攻击RC4+MD5加密的40bit密匙

无论你设置的密码有多复杂,九九归一,经过简单的几次md5,提取的前5bytes,如果能得到这个5bytes的密匙,虽然找不到密码,但是依然可以完整无损的解密您的excel

可喜的是40bit的密匙(5字节组合)空间仅为256的5次方,也就是最多进行1099511627776次(大约一万亿次)计算,一定会找到加密密匙,运气好的话(比如5byte的第一个byte为00,将会减少一个数量级的计算),仅需一半的时间或者更少,即可找回密匙

下面是用python 2.7 效验40bit密匙是否正确的完整代码,仅需简单的改造一下下面的代码,即可自己实现寻找40bit的功能

#! /usr/bin/env python 2.7.11
#coding=utf-8
#by tools.bugscaner.com
#效验 office rc4 密匙验证是否正确
from hashlib import md5

def rc4(rc4_40_bit,plain_text):
    cipherList = []
    keyLen = 16
    plainLen = len(plain_text)
    S = list(range(256))
    j = 0
    for i in range(256):
        #如果是python3,这里无须再使用ord
        j = (j + S[i] + ord(rc4_40_bit[i % keyLen]))  % 256
        S[i], S[j] = S[j], S[i]
    i = 0
    j = 0
    for m in range(plainLen):
        i = (i + 1) % 256
        j = (j + S[i]) % 256
        S[i], S[j] = S[j], S[i]
        k = S[(S[i] + S[j]) % 256]
        #如果是python3,这里无须再使用ord
        rc4_encrtpt_xor = hex(k ^ ord(plain_text[m]))
        new_rc4_encrtpt_xor  = rc4_encrtpt_xor[2:]
        if len(new_rc4_encrtpt_xor) == 1:
            new_rc4_encrtpt_xor = "0"+new_rc4_encrtpt_xor
        cipherList.append(new_rc4_encrtpt_xor)
    return "".join(cipherList)

def verifykey(hashcat_hash,bit_40_key):
    #hashcat_hash 该值可以从office2john 提取得到
    #bit_40_key 是预计算哈希表查询出的值,也可以从0000000000开始循环尝试
    #只要返回为True,即可解密office文档
    #$oldoffice$0*salt*encryptedVerifier*encryptedVerifierHash
    #$oldoffice$0*d379d4f9d0d4cdd60ede379dd1ea95dc*4a23b3488f87c464270765a240f638a3*a43d90c3d8bdd7356a915b6b1508ef4e
    hashcat_hashs = hashcat_hash.split("*")
    encryptedVerifier = hashcat_hashs[-2]
    encryptedVerifierHash = hashcat_hashs[-1]
    len_encryptedVerifierHash = len(encryptedVerifierHash)
    truncatedHash = bit_40_key.decode("hex")
    key = md5(truncatedHash + '00000000'.decode("hex")).digest()[:16]
    verifier = rc4(key,encryptedVerifier.decode("hex"))
    verfiferHash = rc4(key,(encryptedVerifier+encryptedVerifierHash).decode("hex"))[-len_encryptedVerifierHash:]
    hash = md5(verifier.decode("hex")).digest().encode("hex")
    #验证是否相等
    return hash == verfiferHash

if __name__ == '__main__':
    print verifykey("$oldoffice$1*fbdf3e0fd73f291567e7bb48a3985ce9*d5c33069bf17fb0fd95e91ded8a6ba14*32457ce1594e31b513ece6f4420bfaa7","07d267fe0d")

利用GPU碰撞密匙效率更高,比如:普通电脑2G显卡,最多仅需8个小时,即可找到密匙(无论密码有多复杂),按概率往往仅需一半的时间(如果有更好的GPU设备,最慢仅需5分钟即可找到密匙)

备注:本站拥有多样化预计算哈希对照表(94.2GB),完美预计算哈希表(14GB),搜索40bit密匙,使用普通电脑CPU计算,仅需要5秒钟,即可找到40bit加密密匙。点我快速体验

得到密匙该怎么办呢?您可以使用本工具进行excel文档解密(互联网上暂未见到有类似解密工具,估计找不到,也很难找到),您仅需要上传文件,填入密匙,就可以帮您无损的解密文档(由于是异或解密,所以文档的总字节大小保持不变)

40bit密匙为5个字节,您必须以十六进制表示,例如:637261636b

"crack".encode("hex")   ---> "637261636b" --- >  "637261636b".decode("hex") ---> "crack"

其他相关工具

在线WORD(doc)文档 40bit RC4密匙解密工具
在线幻灯片(ppt)文档 40bit RC4密匙解密工具
Top