我正在写一篇关于拥有公共接入点名称的危险的博客文章。
所以我做了一些获取接入点名称列表的方法,并且我从Renderlab下载了1000个最常见的接入点名称列表(其中存在彩虹表)。
但是如何比较这两个文本文件,看看有多少收集的访问点名称可以接受来自彩虹表的攻击?
文本文件的构建如下:
collect.txt:
linksys
internet
hotspot
调用最常见的接入点名称 SSID.txt:
default
NETGEAR
Wireless
WLAN
Belkin54g
因此脚本应对行进行排序,比较它们并显示在SSID.txt中找到来自gather.txt的行的次数..
这有什么意义吗?任何帮助将不胜感激:))
答案 0 :(得分:2)
如果您不介意使用python脚本:
file1=open('collected.txt', 'r') # open file 1 for reading
with open('SSID.txt', 'r') as content_file: # ready file 2
SSID = content_file.read()
found={} # summary of found names
for line in file1:
if line in SSID:
if line not in found:
found[line]=1
else:
found[line]+=1
for i in found:
print found[i], i # print out list and no. of occurencies
...它可以在包含这些文件的目录中运行 - gather.txt和SSID.txt - 它将返回一个如下所示的列表:
5 NETGEAR
3 default
(...)
脚本逐行读取文件1并将其与整个文件进行比较2.可以轻松修改它以从命令提示符处获取文件名。
答案 1 :(得分:0)
首先,看一下关于sdiff命令的简单教程,比如How do I Compare two files under Linux or UNIX。此外,Notepad ++支持此功能。
答案 2 :(得分:0)
要查找文件A中每行显示在文件B中的次数,您可以执行以下操作:
awk 'FNR==NR{a[$0]=1; next} $0 in a { count[$0]++ }
END { for( i in a ) print i, count[i] }' A B
如果要对输出进行排序,请将输出传递给sort
,但不需要排序只是为了查找计数。请注意,可以省略$0 in a
子句,但代价是消耗更多内存,如果文件B非常大,则可能会出现问题。