Excelドキュメントからパスワードを削除する


11

私は内部サポートを提供しており、ユーザーの1人が誤ってExcelファイルにパスワードを設定しました。ユーザーがドキュメントにアクセスできることを確認するために適切なチェックを行いました。 Excelドキュメントからパスワードを削除するための推奨事項。

その価値のために、パスワードはExcelが開いた後、データがExcelで表示される前に表示されます。


ええと、あなたはちょっと詰まっています。複雑な暗号化処理を実行したくない場合を除きます(.xlsでこれを実行するためのプログラムについては知りません)。Excelでこれを行う通常の自動化された方法はありません-そもそも、パスワードを設定するという点を打ち負かすようなものです...そのようなファイルのための特別な暗号解読プログラムが唯一の希望です(これは難しいかもしれません)見つける)。多分グーグルdecrypt xlsか何か似ています。
Samuel Jaeschke、2009年

Excelの.xlsxファイルは、実際には単なるzipファイルです。解凍して、次のような指示に従ってください。ただし、ファイル全体がパスワードで保護されている場合に機能するかどうかは不明です。 nileshkumar83.blogspot.com/2012/05/...
ジョープ

1
@SamuelJaeschke stackoverflow.com/a/27508116/5757159のフックメソッドは常に機能します。割れは必要ありません。
ThunderFrame 2017

回答:


11

ElcomsoftはAdvanced Office Password Recoveryと呼ばれる非常に便利なプログラムを作成します。これは、私が使用した他のどのプログラムよりもうまく機能します。

これを試みる前に、回復しようとしているデータに価値を置くことはおそらく価値があります。ユーザーが最初からドキュメントを再作成できるようにすると、コストが安くなる場合があります(そして、貴重なレッスンを教えます;-))。AOPRは無料ではありません。パスワードは、非常に長い時間がかかる総当たり(文字の可能なすべての組み合わせを試行)でしか解決できない場合があります。


Elmcomsoftのプログラムは優れています。これまで、パスワードなしで送信されたExcelファイルを開くことができました。まともな単語リストを入手して、最初にそれを試してください(CainとAbelに含まれているものは、3MBの素晴らしいものです)。それが失敗した場合、ブルートフォースを試してみて、それは強力なパスワードだ場合、あなたはできませんしている。
Dentrasi

私はこのサイトで商用ソフトウェアを推奨するのが好きではありませんが、この場合は断然最良の選択です。オススメです。+1。
agtoever 2014年

1

このようなものです、Excel Password Remover XLAアドイン、あなたは何をしていますか?

編集:考えてみてください。そうではないかもしれません-これは、保護されたワークシート/ワークブックからパスワードを削除するために使用されます。


倫理的にこのツールを使用して解決できるかどうか
joe

1

パスワードがわかっている場合は、Excelドキュメントを開いてください。次に、[ファイル]> [名前を付けて保存]をクリックします。[保存]ボタンの左側には、[ツール]というラベルの付いた小さなドロップダウンがあります。それをクリックし、[全般オプション]をクリックします。そこでパスワードエントリを削除し、[OK]をクリックします。ドキュメントを保存します。

パスワードがわからない場合は、VBAを使用して検索できます。推測してみると、ユーザーはおそらく強力なパスワードを使用していないので、ブルートフォースタイプの方法を使用してそれを見つけることができます。以下のコードは大まかなものですが、いくつかのユーザーのドキュメントで、失われた弱いパスワードを見つけるのに役立ちました。1からzまでのASCII文字で任意の長さのパスワードをチェックします。イミディエイトウィンドウから呼び出し、次のように数分待ちます。

? GetPassword("D:\mywkbk.xlsx")

-

Public Function GetPassword(ByRef sFileName As String) As String
On Error Resume Next
    Dim pw As String
    pw = ""
    Do
        VBA.Err.Clear
        pw = GenerateNextPassword(pw)            
        Application.Workbooks.Open sFileName, False, True, , pw, pw
        VBA.DoEvents
    Loop While VBA.Err.Number = 5408
    GetPassword = pw
End Function

Public Function GenerateNextPassword(ByRef sCurrentPassword As String) As String
    Const MAX_CHAR = 122
    Const MIN_CHAR = 49

    Dim sCurrentPasswordMax As String
    Dim sNewPassword As String
    Dim i As Long

    sCurrentPasswordMax = String(Len(sCurrentPassword), Chr(MAX_CHAR))
    If sCurrentPassword = sCurrentPasswordMax Then
        'do an increment that changes the length
        sNewPassword = String(Len(sCurrentPassword) + 1, Chr(MIN_CHAR))
        Debug.Print Now(); ": "; sNewPassword
    ElseIf Asc(Right(sCurrentPassword, 1)) = MAX_CHAR Then
        'do an increment that changes multiple characters
        sNewPassword = Left(sCurrentPassword, Len(sCurrentPassword) - 1) & Chr(MIN_CHAR)
        For i = Len(sCurrentPassword) - 1 To 1 Step -1
            sNewPassword = Left(sNewPassword, i - 1) & Chr(Asc(Mid(sNewPassword, i, 1)) + 1) & Mid(sNewPassword, i + 1)
            If Asc(Mid(sCurrentPassword, i, 1)) <> MAX_CHAR Then
                Exit For
            End If
        Next i
    Else
        'do an increment on the rightmost character
        sNewPassword = Left(sCurrentPassword, Len(sCurrentPassword) - 1) & Chr(Asc(Right(sCurrentPassword, 1)) + 1)
    End If

    GenerateNextPassword = sNewPassword
End Function

パスワードが失われたり忘れられたりしたことが暗黙に含まれているため、最初の段落は関係ありません。不明なパスワードを削除するVBAルーチンを見つけた場合はお知らせください。しかし、それは不可能だと思います。
スコット

1
OPを再度読んだ後、パスワードが失われたことは明らかではないので、最初の段落はそのままにしておきます。パスワードがわからない場合に数分以内にパスワードを見つけるために使用できるいくつかのVBAコードで回答を更新しました。
Bobort 2017年

0

このSOの記事で説明されているフックアプローチは、常に機能します。

/programming//a/27508116/5757159

Hexエディター、ダウンロード、インストーラーはありません。純粋なVBAソリューションです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.