Excel密码保护的解除方法与解除原理.docx
- 文档编号:967986
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:16
- 大小:255.85KB
Excel密码保护的解除方法与解除原理.docx
《Excel密码保护的解除方法与解除原理.docx》由会员分享,可在线阅读,更多相关《Excel密码保护的解除方法与解除原理.docx(16页珍藏版)》请在冰点文库上搜索。
Excel密码保护的解除方法与解除原理
Excel密码保护的解除方法与解除原理
2010-06-2220:
21
Excel弹出“您试图更改的单元格或图表受保护,因而是只读的。
若要修改受保护单元格或图表,请先使用‘撤消工作表保护’命令(在‘审阅’选项卡的‘更改’组中)来取消保护。
可能会提示您输入密码。
”窗口,如图1。
出现这种情况,应该怎么解决呢?
经过研究,找到了两种破解Excel工作表保护码的方法。
一、VBA宏代码破解法:
第一步:
打开该文件,先解除默认的“宏禁用”状态,方法是点击工具栏下的“选项”状态按钮,打开“MicrosoftOffice安全选项”窗口,选择其中的“启用此内容”,“确定”退出(图2);
再切换到“视图”选项卡,点击“宏”→“录制宏”,出现“录制新宏”窗口,在“宏名”定义一个名称为:
PasswordBreaker(图3),点击“确定”退出;
第二步:
再点击“宏”→“查看宏”,选择“宏名”下的“PasswordBreaker”并点击“编辑”,打开“MicrosoftVisualBasic”编辑器,用如下内容替换右侧窗口中的所有代码:
SubPasswordBreaker()
DimiAsInteger,jAsInteger,kAsInteger
DimlAsInteger,mAsInteger,nAsInteger
Dimi1AsInteger,i2AsInteger,i3AsInteger
Dimi4AsInteger,i5AsInteger,i6AsInteger
OnErrorResumeNext
Fori=65To66:
Forj=65To66:
Fork=65To66
Forl=65To66:
Form=65To66:
Fori1=65To66
Fori2=65To66:
Fori3=65To66:
Fori4=65To66
Fori5=65To66:
Fori6=65To66:
Forn=32To126
ActiveSheet.UnprotectChr(i)&Chr(j)&Chr(k)&_
Chr(l)&Chr(m)&Chr(i1)&Chr(i2)&Chr(i3)&_
Chr(i4)&Chr(i5)&Chr(i6)&Chr(n)
IfActiveSheet.ProtectContents=FalseThen
MsgBox"Oneusablepasswordis"&Chr(i)&Chr(j)&_
Chr(k)&Chr(l)&Chr(m)&Chr(i1)&Chr(i2)&_
Chr(i3)&Chr(i4)&Chr(i5)&Chr(i6)&Chr(n)
ActiveWorkbook.Sheets
(1).Select
Range("a1").FormulaR1C1=Chr(i)&Chr(j)&_
Chr(k)&Chr(l)&Chr(m)&Chr(i1)&Chr(i2)&_
Chr(i3)&Chr(i4)&Chr(i5)&Chr(i6)&Chr(n)
ExitSub
EndIf
Next:
Next:
Next:
Next:
Next:
Next
Next:
Next:
Next:
Next:
Next:
Next
EndSub
第三步:
再点击“宏”→“查看宏”,选择“宏名”下的“PasswordBreaker”并点击“执行”,密码就现形了(图4)。
第四步:
切换“审阅”选项卡,点击“撤消工作表保护”,然后输入密码即可解除锁定。
二、软件破解法
有许多专门为破解Excel各种密码而制作的软件,ExcelKey与AdvancedOfficePasswordRecovery就是其中的佼佼者。
它们的使用方法简单且破解速度极快。
1.ExcelKey
下载(下载地址:
2.AdvancedOfficePasswordRecovery
下载(下载地址:
可以看出,用以上方法读出的密码完全不同,但它们确实均可以解除该工作表的密码保护,这实在是个有趣的问题。
在网上查找了许久,终于找到比较圆满的解释答案:
当Excel工作表采用密码保护时,就会生成一个16位(双字节)长hash值。
当输入密码进行验证时,真正进行比较的就是这个hash值。
事实上,有很多不同的密码都可以生成同样的hash值。
大家可以试试:
当你用“test”(不含双引号)作为Excel工作表保护密码,你同样可以用“zzyw”(同样不含双引号)这个密码进行解锁。
怎么样,神奇吧?
Excel对数据有很强的保护功能,可以对整个或部分数据隐藏、禁止复制和修改等,但有时候,由于忘记了密码,或者记不起以前自己到底做了哪些改动,这种保护反而会为难自己。
针对这种情况,我总结了几种解除保护的方法,供大家参考,并希望能够以此抛砖引玉。
一、解除单元格的保护
1.取消隐藏的行或列
被隐藏的行或列有一个明显的标志,那就是在行标题栏或列标题栏上有一条粗的黑线。
取消隐藏的行或列的方法有两种,一种是直接拖动隐藏处的行或列标题使之变宽,也可以选中包含隐藏区域的行或列,通过“格式”菜单中的行列项目输入非0数值调整行高或列宽,使数据有足够的空间显示出来;另一种方法是选中包含隐藏内容的行或列区域,再通过“格式”菜单行列选项中的“取消隐藏”命令来恢复全部行列区域。
2.取消隐藏单元格或区域中的数据
为了不让他人直接看到单元格的内容,一种简单的方法就是把数据颜色设置成与背景色相同,这时我们只要拖选整个工作表即可让数据原形毕露;如果用图片、矩形框之类的非字符内容将重要数据遮盖,需要先用拖选方式找出工作表中的图片位置,再将其移开,激活被遮住的单元格,一般在公式编辑栏中就会显示其内容。
若在单元格格式中使用了三个分号或空格之类的自定义格式,一般只要选中此单元格,在公式编辑栏中即可显示其内容,要想取消这种隐藏,可重新设置此单元格格式,在“数字”选项卡中选择“常规”即可。
如果选中怀疑有数据的单元格后并没有在公式编辑栏中显示数据,不一定它就真的没有数据,我们只要看一下单元格的格式能否设置,若不能的话说明工作表被保护,如果不用密码可以取消工作表保护的话,再在单元格格式设置中先查看数据格式是否为自定义,然后查看“保护”选项卡,看看是否已勾选了“隐藏”项,将这些都取消就可以知道单元格是否真的没有内容。
当然,如果在撤消工作表保护时需要密码的话,我们将无可奈何,除非用户设置的密码很简单,那我就告诉你一个秘密,当密码的形式是“*123*”或“*abc*”时,我们可以分别用“*333*”或“*ccc*”来破解,星号表示任意字符,到底是什么只有靠猜了,这种方法对工作表和工作簿保护的密码也适应。
3.取消单元格数据的只读属性
有时单元格中的数据虽然可见,但是我们既不能修改,也不能在当前工作表中复制,对于这种保护措施,取消的方法跟上面的第2点基本相同,只要取消单元格格式设置对话框中“保护”选项卡中的“锁定”一项即可。
当然还需要通过密码取消工作表的保护才行。
如果我们无法通过密码取消怎么办?
你可以将其复制粘贴到其他工作表中,再在新的工作表中进行修改。
二、解除工作表的保护
查看是否有被隐藏的工作表,若菜单中有“格式→工作表→取消隐藏”项,则可通过此项取消隐藏的工作表。
如果在菜单中也没有有效的“取消隐藏”项,仍然可能有被隐藏的工作表,这时我们可以任选一工作表右击,在弹出菜单中选择“查看代码”,然后在左窗格中的“MicrosoftExcel对象”列表中选择被隐藏的工作表,将其“Visible”属性值取“-1”退出即可,如图所示。
如果工作表被密码保护,则可复制当前表全部内容到另一张未保护的工作表中编辑。
三、VBA宏代码破解法:
第一步:
打开该文件,先解除默认的“宏禁用”状态,方法是点击工具栏下的“选项”状态按钮,打开“MicrosoftOffice安全选项”窗口,选择其中的“启用此内容”,“确定”退出(图2);
再切换到“视图”选项卡,点击“宏”→“录制宏”,出现“录制新宏”窗口,在“宏名”定义一个名称为:
PasswordBreaker(图3),点击“确定”退出;
第二步:
再点击“宏”→“查看宏”,选择“宏名”下的“PasswordBreaker”并点击“编辑”,打开“MicrosoftVisualBasic”编辑器,用如下内容替换右侧窗口中的所有代码:
SubPasswordBreaker()
DimiAsInteger,jAsInteger,kAsInteger
DimlAsInteger,mAsInteger,nAsInteger
Dimi1AsInteger,i2AsInteger,i3AsInteger
Dimi4AsInteger,i5AsInteger,i6AsInteger
OnErrorResumeNext
Fori=65To66:
Forj=65To66:
Fork=65To66
Forl=65To66:
Form=65To66:
Fori1=65To66
Fori2=65To66:
Fori3=65To66:
Fori4=65To66
Fori5=65To66:
Fori6=65To66:
Forn=32To126
ActiveSheet.UnprotectChr(i)&Chr(j)&Chr(k)&_
Chr(l)&Chr(m)&Chr(i1)&Chr(i2)&Chr(i3)&_
Chr(i4)&Chr(i5)&Chr(i6)&Chr(n)
IfActiveSheet.ProtectContents=FalseThen
MsgBox"Oneusablepasswordis"&Chr(i)&Chr(j)&_
Chr(k)&Chr(l)&Chr(m)&Chr(i1)&Chr(i2)&_
Chr(i3)&Chr(i4)&Chr(i5)&Chr(i6)&Chr(n)
ActiveWorkbook.Sheets
(1).Select
Range("a1").FormulaR1C1=Chr(i)&Chr(j)&_
Chr(k)&Chr(l)&Chr(m)&Chr(i1)&Chr(i2)&_
Chr(i3)&Chr(i4)&Chr(i5)&Chr(i6)&Chr(n)
ExitSub
EndIf
Next:
Next:
Next:
Next:
Next:
Next
Next:
Next:
Next:
Next:
Next:
Next
EndSub
第三步:
再点击“宏”→“查看宏”,选择“宏名”下的“PasswordBreaker”并点击“执行”,密码就现形了(图4)。
第四步:
切换“审阅”选项卡,点击“撤消工作表保护”,然后输入密码即可解除锁定。
另一个能解除Excel工作表保护的VBA脚本
OptionExplicit
PublicSubAllInternalPasswords()
'Breaksworksheetandworkbookstructurepasswords.BobMcCormick
'probablyoriginatorofbasecodealgorithmmodifiedforcoverage
'ofworkbookstructure/windowspasswordsandformultiplepasswords
'
'NormanHarkerandJEMcGimpsey27-Dec-2002(Version1.1)
'Modified2003-Apr-04byJEM:
Allmsgstoconstants,and
'eliminateoneExitSub(Version1.1.1)
'RevealshashedpasswordsNOToriginalpasswords
ConstDBLSPACEAsString=vbNewLine&vbNewLine
ConstAUTHORSAsString=DBLSPACE&vbNewLine&_
"AdaptedfromBobMcCormickbasecodeby"&_
"NormanHarkerandJEMcGimpsey"
ConstHEADERAsString="AllInternalPasswordsUserMessage"
ConstVERSIONAsString=DBLSPACE&"Version1.1.12003-Apr-04"
ConstREPBACKAsString=DBLSPACE&"Pleasereportfailure"&_
"tothemicrosoft.public.excel.programmingnewsgroup."
ConstALLCLEARAsString=DBLSPACE&"Theworkbookshould"&_
"nowbefreeofallpasswordprotection,somakesureyou:
"&_
DBLSPACE&"SAVEITNOW!
"&DBLSPACE&"andalso"&_
DBLSPACE&"BACKUP!
BACKUP!
!
BACKUP!
!
!
"&_
DBLSPACE&"Also,rememberthatthepasswordwas"&_
"putthereforareason.Don'tstuffupcrucialformulas"&_
"ordata."&DBLSPACE&"Accessanduseofsomedata"&_
"maybeanoffense.Ifindoubt,don't."
ConstMSGNOPWORDS1AsString="Therewerenopasswordson"&_
"sheets,orworkbookstructureorwindows."&AUTHORS&VERSION
ConstMSGNOPWORDS2AsString="Therewasnoprotectionto"&_
"workbookstructureorwindows."&DBLSPACE&_
"Proceedingtounprotectsheets."&AUTHORS&VERSION
ConstMSGTAKETIMEAsString="AfterpressingOKbuttonthis"&_
"willtakesometime."&DBLSPACE&"Amountoftime"&_
"dependsonhowmanydifferentpasswords,the"&_
"passwords,andyourcomputer'sspecification."&DBLSPACE&_
"Justbepatient!
Makemeacoffee!
"&AUTHORS&VERSION
ConstMSGPWORDFOUND1AsString="YouhadaWorksheet"&_
"StructureorWindowsPasswordset."&DBLSPACE&_
"Thepasswordfoundwas:
"&DBLSPACE&"$$"&DBLSPACE&_
"Noteitdownforpotentialfutureuseinotherworkbooksby"&_
"thesamepersonwhosetthispassword."&DBLSPACE&_
"Nowtocheckandclearotherpasswords."&AUTHORS&VERSION
ConstMSGPWORDFOUND2AsString="YouhadaWorksheet"&_
"passwordset."&DBLSPACE&"Thepasswordfoundwas:
"&_
DBLSPACE&"$$"&DBLSPACE&"Noteitdownforpotential"&_
"futureuseinotherworkbooksbysamepersonwho"&_
"setthispassword."&DBLSPACE&"Nowtocheckandclear"&_
"otherpasswords."&AUTHORS&VERSION
ConstMSGONLYONEAsString="Onlystructure/windows"&_
"protectedwiththepasswordthatwasjustfound."&_
ALLCLEAR&AUTHORS&VERSION&REPBACK
Dimw1AsWorksheet,w2AsWorksheet
DimiAsInteger,jAsInteger,kAsInteger,lAsInteger
DimmAsInteger,nAsInteger,i1AsInteger,i2AsInteger
Dimi3AsInteger,i4AsInteger,i5AsInteger,i6AsInteger
DimPWord1AsString
DimShTagAsBoolean,WinTagAsBoolean
Application.ScreenUpdating=False
WithActiveWorkbook
WinTag=.ProtectStructureOr.ProtectWindows
EndWith
ShTag=False
ForEachw1InWorksheets
ShTag=ShTagOrw1.ProtectContents
Nextw1
IfNotShTagAndNotWinTagThen
MsgBoxMSGNOPWORDS1,vbInformation,HEADER
ExitSub
EndIf
MsgBoxMSGTAKETIME,vbInformation,HEADER
IfNotWinTagThen
MsgBoxMSGNOPWORDS2,vbInformation,HEADER
Else
OnErrorResumeNext
Do'dummydoloop
Fori=65To66:
Forj=65To66:
Fork=65To66
Forl=65To66:
Form=65To66:
Fori1=65To66
Fori2=65To66:
Fori3=65To66:
Fori4=65To66
Fori5=65To66:
Fori6=65To66:
Forn=32To126
WithActiveWorkbook
.UnprotectChr(i)&Chr(j)&Chr(k)&_
Chr(l)&Chr(m)&Chr(i1)&Chr(i2)&_
Chr(i3)&Chr(i4)&Chr(i5)&Chr(i6)&Chr(n)
If.ProtectStructure=FalseAnd_
.ProtectWindows=FalseThen
PWord1=Chr(i)&Chr(j)&Chr(k)&Chr(l)&_
Chr(m)&Chr(i1)&Chr(i2)&Chr(i3)&_
Chr(i4)&Chr(i5)&Chr(i6)&Chr(n)
MsgBoxApplication.Substitute(MSGPWORDFOUND1,_
"$$",PWord1),vbInformation,HEADER
ExitDo'Bypassallfor...nexts
EndIf
EndWith
Next:
Next:
Next:
Next:
Next:
Next
Next:
Next:
Next:
Next:
Next:
Next
LoopUntilTrue
OnErrorGoTo0
EndIf
IfWinTagAndNotShTagThen
MsgBoxMSGONLYONE,vbInformation,HEADER
ExitSub
EndIf
OnErrorResumeNext
ForEachw1InWorksheets
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Excel 密码保护 解除 方法 原理