CeWL:自定义密码字典生成利器,高效爬取目标网站词汇

CeWL是一款基于Ruby开发的定制化单词列表生成工具,能够通过爬取目标网站提取独特词汇,支持深度爬取、元数据提取及代理认证等功能,广泛用于密码破解和网络安全测试场景。

CeWL - 自定义单词列表生成器

基于PaulDotCom第129集关于通过爬取目标网站收集独特词汇生成自定义单词列表的讨论,我开发了CeWL(自定义单词列表生成器)。CeWL是一款Ruby应用程序,能够爬取指定URL到特定深度(可选是否跟踪外部链接),并返回可用于密码破解工具(如John the Ripper)的单词列表。

CeWL还附带一个关联命令行工具FAB(Files Already Bagged),使用相同的元数据提取技术从已下载文件中创建作者/创建者列表。

更新日志

版本5.2

  • 由@g0tmi1k进行的代码重构
  • 国际化支持 - 现在能更好地处理非ASCII网站
  • 发现更多从JavaScript内容和其他非标准HTML区域提取单词的方法
  • 大量小错误修复

版本5.1

  • 添加GPL-3+许可证以支持Debian包含
  • 添加Gemfile简化gem安装

版本5.0

添加命令行代理支持以及基本和摘要认证的凭据传递功能。使用简单,查看帮助(–help)获取完整信息。 同时包含其他一些小错误修复。

版本4.3

CeWL现在按计数对找到的单词进行排序,并可选择(新–count参数)在输出中包含单词计数。保留单词在页面中的原始大小写,“Product"与"product"被视为不同,因为如果用于密码生成,大小写可能很重要,用户可自行选择是否去除。此版本还进一步提高了爬虫稳定性。

默认情况下,CeWL仅爬取指定站点,深度为2个链接,此行为可通过传递参数更改。如果设置较大深度并允许爬取站外链接,需谨慎操作,可能会爬取到大量其他域。所有三个字符及以上的单词输出到stdout。可增加此长度并将单词写入文件而非屏幕,以便自动化运行。

版本4.2

版本4.2修复了在为@yorikv修复小错误时发现的一个重大bug。该bug与因爬虫问题而实施的一个hack有关,在调查过程中发现了爬虫用于在下载页面中查找新链接的这行代码:

1
web_page.scan(/href="(.*?)"/i).flatten.map do |link|

如果所有链接都像这样:<a href="test.php">link</a>,则没问题。但如果链接像这两种形式:<a href='test.php'>link</a><a href=test.php>link</a>,正则表达式将失败,链接将被忽略。

为修复此问题,不得不重写解析页面查找所有链接的函数,改用Nokogiri而非正则表达式,Nokogiri专为解析页面查找链接设计,而非使用自定义正则表达式遍历。这引入了新的依赖,但认为值得以修复功能。还修复了另一个bug,类似<a href='#name'>local</a>的链接本应被忽略(因为它仅链接到内部名称),但实际上被转换为’/#name’,可能意外引用索引页。经过大量调试找到最佳解决方案后也修复了此问题。

最后添加了允许用户指定深度为0的功能,使CeWL能爬取单个页面。

此版本仅作为点发布,计划在下一个主要版本中重写爬虫使用更好的爬虫。

版本4.1

版本4.1主要是错误修复,但一个重要功能更改是添加了两个新参数meta_file和email_file。之前,电子邮件和元数据输出的文件名作为电子邮件和元参数的可选字段指定,但发现如果以特定顺序使用参数,可能遇到:./cewl.rb --email http://www.digininja.org,这将把URL作为电子邮件参数的输出文件名,不符合预期,因此从电子邮件参数中移除可选文件名,改为添加email_file参数。

版本4的主要更改是升级以在Ruby 1.9.x上运行,已在多台机器和BT5上测试(因为BT5是运行它的流行平台),运行良好。另一个小更改是:在版本4之前,所有HTML标签在页面解析单词前被剥离,这意味着alt和title标签中的文本被遗漏。现在在剥离HTML前从这些标签抓取文本,以提供这些额外的单词。

版本3.0

版本3解决了Josh Wright发现的问题。Spider gem不处理JavaScript重定向URL,例如仅包含以下内容的索引页面:

1
2
3
<script language="JavaScript">
self.location.href = 'http://www.FOO.com/FOO/connect/FOONet/Top+Navigator/Home';
</script>

由于未检测到重定向,未被爬取。现在扫描页面查找包含"location.href=“的任何行,然后将给定URL添加到要爬取的页面列表。

版本2.0

版本2还能创建两个新列表:在mailto链接中找到的电子邮件地址列表,以及从站点文档元数据中收集的作者/创建者名称列表。目前可处理Office 2007前、Office 2007和PDF格式的文档。此用户数据然后可用于创建与密码列表关联的用户名列表。

发音

有人问起,CeWL发音为"cool”。

下载

最新版本现可在GitHub上获取。标记版本也可在各种发行版中获得,包括Kali。

安装

CeWL需要安装rubygems包以及以下gem:

  • nokogiri
  • mime-types
  • mini_exiftool
  • rubyzip
  • spider

可通过在cewl目录运行bundle install安装。mini_exiftool gem还需要安装exiftool应用程序。

在BT5上,默认安装的Ruby版本存在问题。解决方法是在全新BT5安装上运行:

1
2
gem source -c
gem install --user-install spider http_configuration mini_exiftool zip mime-types

要使用gem,可能还需要设置以下环境变量:RUBYOPT="rubygems"。然后将CeWL保存到目录并使其可执行。

使用

1
cewl [OPTION] ... URL

选项:

  • --help, -h:显示帮助
  • --depth x, -d x:爬取深度,默认2
  • --min_word_length, -m:最小单词长度,去除指定长度下的所有单词,默认3
  • --offsite, -o:默认情况下,爬虫仅访问指定站点。使用此选项还将访问外部站点
  • --write, -w file:将输出写入文件而非stdout
  • --ua, -u user-agent:更改用户代理
  • -v:详细模式,显示调试和额外输出
  • --no-words, -n:不输出单词列表
  • --meta, -a file:包含元数据,可选输出文件
  • --email, -e file:包含电子邮件地址,可选输出文件
  • --meta_file file:元数据输出文件名
  • --email_file file:电子邮件输出文件名
  • --meta-temp-dir directory:exiftool解析文件时使用的目录,默认/tmp
  • --count, -c:显示找到的每个单词的计数
  • --auth_type:摘要或基本认证
  • --auth_user:认证用户名
  • --auth_pass:认证密码
  • --proxy_host:代理主机
  • --proxy_port:代理端口,默认8080
  • --proxy_username:代理用户名(如果需要)
  • --proxy_password:代理密码(如果需要)
  • --verbose, -v:详细模式
  • URL:要爬取的站点

常见问题

以下是使用CeWL和FAB时常见的几个问题。

缺少exiftool

如果运行CeWL或FAB时看到此错误:

1
2
/usr/lib/ruby/gems/1.8/gems/mini_exiftool-1.0.1/lib/mini_exiftool.rb:246:in `exiftool_version': Command 'exiftool' not found (MiniExiftool::Error)
...

则应用程序无法访问exiftool。安装它或确保它在路径中。

HTTPS问题

据报道,如果看到此问题:

1
2
/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- net/https (LoadError)
...

则需要Ruby libopenssl包。在Debian中,包名为libopenssl-ruby。

爬虫遗漏页面

有人报告爬虫遗漏一些带有查询字符串的页面。在测试中无法复现此问题。如果有人遇到此问题并能复现,请告知,将进一步调查。

目录

  • 发音
  • 下载
  • 安装
  • 使用
  • 常见问题

类别

  • Wifi
  • 网络
  • Metasploit
  • 常规

支持本站

本站项目均无报酬,如果想支持我的工作,可通过以下联盟链接使用,我会获得账户积分或现金返还。通常只有几分钱,但积少成多。

给我买杯冰沙

所有内容由Robin Wood创建,除非另有说明。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计