我们每个人在使用计算机时都会用到各种各样的的密码。这些密码虽然给我们带来了安全,但是如果忘记了也会带来很大的麻烦。笔者写这篇文章的目的就在于减轻密码为我们所带来的的"麻烦"。
一、 开机密码
开机密码,也就是CMOS密码,根据用户设置的不同,开机密码一般分为两种不同情况,一种就是Setup密码(采用此方式时,系统可直接启动,而仅仅只在进入BIOS设置时要求输入密码);另一种就是System密码(采用此方式时,无论是直接启动还是进行BIOS设置都要求输入密码,没有密码将一事无成)。对于用户设置的这两种密码,我们的破解方法是有所区别的。
1.Setup密码
如果计算机能正常引导,只是不能进入BIOS设置(即设置了Setup密码),那么我们在遗忘密码之后只需在DOS状态下启动DEBUG,然后输入如下命令即可手工清除密码:
_ o 70 16
_ o 71 16
_ q
另外,不熟悉DEBUG的用户也可下载一个专门破解CMOS密码的工具软件Cmospwd。然后在DOS启动该程序,它就会将用户的CMOS密码显示出来(Cmospwd支持Acer、AMI、AWARD、COMPAQ、DELL、IBM、PACKARD BELL、PHOENIX、ZENITH AMI等多种BIOS),使用非常方便。
2.System密码
若没有密码根本不能启动计算机(即设置了System密码),那我们就无法通过软件来解决密码遗忘的问题了。此时惟一的方法就是打开机箱,给CMOS放电,清除CMOS中的所有内容(当然也就包括密码),然后重新开机进行设置。另外,有些主板设置了CMOS密码清除跳线,将该跳线短接也可达到同样的目的(详情参见主板说明书)。
二、Windows操作系统密码
1.Windows启动密码
遗忘Windows的启动密码虽然不会影响系统的启动,但它会导致用户无法进入自己的个人设置,因此破解Windows的启动密码以找回“丢失”的“个性”也是很有必要的。为此,我们可删除Windows安装目录下的*.PWL密码文件(或者把*.pwl改名)及Profiles子目录下的所有个人信息文件,然后重新启动Windows ,系统就会弹出一个不包含任何用户名的密码设置框,我们无需输入任何内容,直接点击“确定”按钮,Windows 密码即被删除。另外,运行“regedit.exe”,打开注册表数据库“HKEY_LOCAL_MACHINE”→“Network”→“Logon”分支下的“UserProfiles”修改为“0”,然后重新启动Windows 也可达到同样的目的。
2.电源管理密码
Windows的电源管理功能也可以设置密码,设置此功能后,系统在从节能状态返回时就会要求输入密码,从而在一定程度上实现保护系统的目的。不过由于电源管理功能的密码与Windows的启动密码完全一样,因此我们只要破解了Windows的启动密码,其电源管理密码也就不攻自破了。
从上面的介绍中可以看出,Windows的密码保护功能并不完善,无论是开机密码还是屏幕保护、电源管理密码都非常脆弱,我们必须辅之以其他控制措施才能达到防止他人入侵的目的。
3.IE浏览器分级审查的密码
有是我们忘记了我们设置的 windows 的IE 浏览器分级审查的密码,可以运行“regedit.exe”,打开注册表数据库把“HKEY_LOCAL_MACHINE”→“Software”→“Microsoft”→“Windows”→“CurrentVersion”→“Policies”→“Ratings” 下的 "key" 删除
4.建立一个普通新用户
在MS-DOS提示符中输入如下命令:“net user john 123 /add”,回车。即可新建一个名为“John”,密码为“123”的新用户。Add参数表示新建用户。
值得注意的是:用户名最多可有20个字符,密码最多可有127个字符。
建立一个登录时间受限制的用户
用以下方法可实现对电脑使用时间的控制。比如,需要建立一个John的用户账号,密码为“123”,登录权限从星期一到星期五的早上八点到晚上十点和双休日的晚上七点到晚上九点。
1. 12小时制可键入如下命令:“net user john 123 /add /times:monday-friday,8AM-10PM;saturday-sunday,7PM-9PM”,回车确定即可。
2. 24小时制可键入如下命令:“net user john 123 /add /times:M-F,8:00-22:00;Sa-Su,19:00-21:00”,回车确定即可。
值得注意的是:Time的增加值限制为1小时。对于Day值,可以用全称或缩写(即M、T、W、Th、F、Sa、Su)。可以使用12小时或24小时时间表示法。对于12小时表示法,请使用AM、PM或A.M.、P.M.。All值表示用户始终可以登录;空值(空白)意味着用户永远不能登录。用逗号分隔日期和时间,用分号分隔日期和时间单元(例如,M,4AM-5PM;T,1PM-3PM)。指定时间时不要使用空格。
另外,Passwordchg:{yes | no}参数可用来指定用户是否可以更改自己的密码,默认设置为Yes。
限定用户的使用时间
Net User命令还可以使用参数Expires:{{mm/dd/yyyy | dd/mm/yyyy | mmm,dd ,yyyy} | never}使用户账号根据指定的Date过期限定用户。过期日期可以是[mm/dd/yyyy]、[dd/mm/yyyy]或[mmm,dd,yyyy]格式。它取决于国家(地区)代码。用户账号在指定日期开始时到期。对于月份值,可以使用数字、全称或三个字母的缩写(即Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov、Dec)。对于年份值,可以使用两位数或四位数;使用逗号和斜杠分隔日期的各部分;不要使用空格。
例如:要限定用户账号John到2004年11月5日到期,可键入如下命令:“net user john /expires:Nov/5/2004”,回车确定即可。
查看用户信息、修改已有用户密码和删除用户
如果在没有参数的情况下使用,则Net User将显示计算机上用户的列表,如键入以下命令:“net user”,回车即可显示该系统的所有用户。
如果键入:“net user john”,回车则可显示用户John的信息。
若键入命令:“net user john 123456 /add”,回车确定,则强制将用户John(John为已有用户)的密码更改为123456。
若键入命令:“net user john /delete”,回车确定则可删除用户John。
NT系统都是基于REGISTRY的SAM管理用户帐号的。用启动盘启动进入DOS系统,将文件C:\WINNT\SYSTEM32\CONFIG\SAM去除,那么在进入登录界面的时候,密码就被清空了,此时就可以顺利进入操作系统中。当然如果有此密码管理文件的日志(C:\WINNT\SYSTEM32\CONFIG\SAM.LOG)的话,也必须要将它清除。
因为工程师在处理问题的时候,身边的条件是不一样的,因此解决此问题的方法也应随之变化。当然目标是很明确的,删除SAM文件或者恢复原先的SAM文件。
可以运用ReverseMe来二进制数字密码的破译,需要了解以下的内容:
1、寄存器:
寄存器就好比是CPU身上的口袋,方便CPU随时从里边拿出需要的东西来使用。常见涉及到的九个寄存器:
EAX:扩展累加寄存器;EBX:扩展基址寄存器;ECX:扩展计数寄存器;
EDX:扩展数据寄存器;ESI:扩展来源寄存器;EDI:扩展目标寄存器;
EBP:扩展基址指针寄存器;ESP:扩展堆栈指针寄存器;EIP:扩展的指令指针寄存器;
这些寄存器的大小是32位(4个字节),他们可以容纳数据从0-FFFFFFFF(无符号数),除了以下三个寄存器,其他我们都可以随意使用:
EBP:主要是用于栈和栈帧。ESP:指向当前进程的栈空间地址。EIP:总是指向下一条要被执行的指令。
2、栈:栈是在内存中的一部分,它有两个特殊的性质:
FILO(FisrtInLastOut,先进后出);地址反向增长(栈底为大地址,栈顶为小地址)。
3、CALL指令,call有以下几种方式:
call404000h;直接跳到函数或过程的地址;calleax;函数或过程地址存放在eax,calldwordptr[eax]。
4、系统API:Windows应用程序运行在Ring3级别,API函数,我们也称之为系统提供给我们的接口。因为系统只信任自己提供的函数,所以我们要通过API才能实现对内核的操作。
5、mov指令mov指令格式:movdest,src。
这是一个很容易理解的指令,mov指令将src的内容拷贝到dest,mov指令总共有以下几种扩展:movs/movsb/movsw/movsdedi,
esi:这些变体按串/字节/字/双字为单位将esi寄存器指向的数据复制到edi寄存器指向的空间。movsx符号位扩展,byte-word,word-dword (扩展后高位全用符号位填充)。
然后实现mov。movzx零扩展,byte-word,word-dword(扩展后高位全用0填充),然后实现mov。
6、cmp指令,cmp指令格式:cmpdest,src
cmp指令比较dest和src两个操作数,并通过比较结果设置C/O/Z标志位。
cmp指令大概有以下几种格式:
cmpeax,ebx;如果相等,Z标志位置1,否则0。cmpeax,[404000];将eax和404000地址处的dword型数据相比较并同上置位cmp[404000],eax;同上。
7、标志位:在破解中起到的作用是至关重要的。
在逆向中,你真正需要关心的标志位只有三个,也就是cmp指令能修改的那三个:Z/O/C。
Z标志位(0标志),这个标志位是最常用的,运算结果为0时候,Z标志位置1,否则置0。
O标志位(溢出标志),在运行过程中,如操作数超出了机器能表示的范围则称为溢出,此时OF位置1,否则置0。
C标志位(进位标志),记录运算时从最高有效位产生的进位值。例如执行加法指令时,最高有效位有进位时置1,否则置0。
掌握这些指令后就可以运用ReverseMe来二进制数字密码的破译。
扩展资料:
在数学和数字电路中,二进制(binary)数是指用二进制记数系统,即以2为基数的记数系统表示的数字。这一系统中,数通常用两个不同的符号0(代表零)和1(代表一)来表示。
以2为基数代表系统是二进位制的。数字电子电路中,逻辑门的实现直接应用了二进制,因此现代的计算机和依赖计算机的设备里都用到二进制。每个数字称为一个比特(二进制位)。
把二进制化为八进制也很容易,因为八进制以8为基数,8是2的幂(8=2),因此八进制的一位恰好需要三个二进制位来表示。八进制与二进制数之间的对应就是上面表格中十六进制的前八个数。二进制数000就是八进制数0,二进制数111就是八进制数7,以此类推。
参考资料:百度百科-二进制码
362880种
8位不重复的密码,可看成从1-9中先取一个充当第一位,有9种取法,然后在剩下的8个数字中取一个充当第二位,有8种取法……以此类推……当取第八位时,只剩2个数字可选,有2种取法。所以一共就是9x8x7x6x5x4x3x2=362880。
如果学过排列组合,就是 A9(下标)8(上标) 也等同于9的阶乘。
如果需要罗列出所有的结果,建议使用木头字典这个软件。
密码锁上都是0到9,有10个数字。三位数密码锁,每位都一样。这样排出的密码就是:000.001.002003.004...997.998.999.
一共1000个密码。
穷举法是一种针对于密码的破译方法。这种方法很像数学上的"完全归纳法"并在密码破译方面得到了广泛的应用。简单来说就是将密码进行逐个推算直到找出真正的密码为止。比如一个四位并且全部由数字组成其密码共有10000种组合,也就是说最多我们会尝试9999次才能找到真正的密码。利用这种方法我们可以运用计算机来进行逐个推算,也就是说用我们破解任何一个密码也都只是一个时间问题。
当然如果破译一个有8位而且有可能拥有大小写字母、数字、以及符号的密码用普通的家用电脑可能会用掉几个月甚至更多的时间去计算,其组合方法可能有几千万亿种组合。这样长的时间显然是不能接受的。其解决办法就是运用字典,所谓"字典"就是给密码锁定某个范围,比如英文单词以及生日的数字组合等,所有的英文单词不过10万个左右这样可以大大缩小密码范围,很大程度上缩短了破译时间。
在一些领域,为了提高密码的破译效率而专门为其制造的超级计算机也不在少数,例如IBM为美国军方制造的"飓风"就是很有代表性的一个。
用穷举法解题时,就是按照某种方式列举问题答案的过程。针对问题的数据类型而言,常用的列举方法一有如下三种:
(1)顺序列举 是指答案范围内的各种情况很容易与自然数对应甚至就是自然数,可以按自然数的变化顺序去列举。
(2)排列列举 有时答案的数据形式是一组数的排列,列举出所有答案所在范围内的排列,为排列列举。
(3)组合列举 当答案的数据形式为一些元素的组合时,往往需要用组合列举。组合是无序的。
现今稍具严密度的密码验证机制都会设下试误的可容许次数以应对使用密码穷举法的破解者。当试误次数达到可容许次数时,密码验证系统会自动拒绝继续验证,有的甚至还会自动启动入侵警报机制。