ewsa暴力破解给力字典

EWSA跑包的暴力速度,七成取决于你手里的破解字典。剩下三成才是字典显卡和CPU的事。我见过有人拿GTX 1080跑了一天一夜没出结果,暴力换了个针对性字典,破解二十分钟就弹出了密码。字典这事不玄乎,暴力就是破解字典里有没有那行字的问题。

网上流传的字典那些“万能字典”动辄几十个G,从123456到几十位随机字符全塞进去。暴力跑起来看着热闹,破解实际效率低得让人想砸键盘。字典EWSA是暴力按行读取字典的,每读一行就要做一次握手验证。破解字典越臃肿,字典无效行越多,GPU的算力全浪费在那些根本不可能的密码上。你拿一本包含所有英文单词的词典去撞一个纯数字密码,跟大海捞针没区别。

真正给力的字典,核心逻辑是“缩小范围,精准打击”。

先搞清楚目标是什么

拿到一个握手包,别急着开跑。先看SSID。SSID是“TP-LINK_5F2A”这种默认名的,密码大概率是8位纯数字或者手机号。SSID是“ChinaNet-XXXX”的,很多是电话号码后八位或者区号加号码。SSID里带人名拼音或者生日数字的,密码往往跟这些信息有关联。这一步花五分钟,比盲目跑三天管用。

我自己的习惯是:先建一个“小字典”,就几百行。里面放什么?12345678、88888888、66666666、00000000、123456789、987654321,再加上当地手机号段的前几位组合。别小看这几百行,实际测试中能命中将近两成的常见路由器。

数字字典的排列组合有讲究

纯数字字典不是从00000000排到99999999就完事。那样跑起来太慢,而且很多号段根本没人用。按手机号规则生成更聪明:前三位固定为运营商号段(比如138、139、150、186),后八位按顺序生成。这样字典体积缩小到原来的十分之一,命中率反而更高。因为大多数人设密码就是拿自己手机号改一改。

还有个细节:很多人喜欢用生日。年份从1950到2020,月份01到12,日期01到31,排列组合也就两万多种。加上19和20前缀,再拼上姓名拼音缩写,这个字典不超过五万行。跑起来几分钟的事。

字母字典要分层

纯字母密码分几种情况。全小写、全大写、首字母大写、大小写混合。EWSA支持规则变形,但规则太复杂会拖慢速度。我的做法是分三个字典:第一个是纯小写常用词,第二个是首字母大写加数字后缀,第三个才是全字符集混合。前两个字典跑完可能就出结果了,根本用不着第三个。

常用词从哪来?别去下什么“百万英文词典”。去搜“Top 10000 passwords”,再结合中文拼音常用词。比如woaini、wangyi、taobao、qq123456这些。中文用户设密码有个特点:喜欢用拼音加数字,而且数字往往是重复的或者顺序的。zhangsan888、lisi666这种,在字典里加进去,命中率不低。

混合字典别贪大

混合字典指的是字母加数字加符号。这种字典最容易失控。你随便生成一下就是几百G。EWSA读大字典的时候,硬盘IO会成为瓶颈。我试过用一个80G的混合字典,GPU占用率只有30%,全在等硬盘读数据。后来切成每块2G的小字典,按顺序跑,GPU直接跑满。

混合字典的生成原则:先固定一个模式,再穷举。比如“两个字母+四个数字+一个符号”,字母用常见组合,数字用年份或重复数字,符号只用!、@、.、_这四个。这样生成出来的字典大概几个G,跑起来效率高得多。

实际案例

上个月帮朋友跑一个包。SSID是Xiaomi_AB12。我先用几百行的小字典跑,没出。然后生成手机号字典,前三位用了所有运营商号段,后八位全排列,大概一亿行。EWSA显示速度是每秒12万次,算下来要跑将近一天。我停掉,改成只跑当地号段(朋友在杭州,用了138、139、150、159、186、188这六个),后八位不变。字典缩小到一千六百万行。四十分钟后密码出来了:13857123456。就是他的手机号。

字典的功夫在字典外面。你得知道目标大概是什么类型,然后针对性地生成。拿一本百科全书去砸锁,不如拿一把配好的钥匙。