在Shodan搜索中有一个关于网站icon图标的搜索语法,http.favicon.hash,我们可以使用这个语法来搜索出使用了同一icon图标的网站,不知道怎么用的朋友请参考我上一篇文章。

  通过上一篇文章我们了解到,由于hash为一个未知的随机数,所以是无法通过输入一个确定的hash值来搜索带有指定图标的网站的,只能够通过查看一个已经被Shodan收录的网站的hash值,来进一步获取到所有带有某icon的网站。那么这里的用法就非常的有局限性,你只能是碰运气的来找到你所需要查找的网站,因为Shodan不一定收录了你想要搜索的网站。接着上一篇讲,那么如果Shodan收录了某个ip,这个服务器带有某个icon图标,我能不能搜索所有带有此icon的服务器ip?答案是可以的。

  这里拿百度举例,这里有一个ip为180.97.34.35的服务器,截图如下,

  如果我想搜索带有这个icon的所有ip地址的话,可以先在Shodan搜索这个ip,这里要用到一个之前没注意到的东西,就是Shodan的原始数据(Raw Data)功能,

  点击详情里的View Raw Data,打开可以看到Shodan所存储的关于这个ip所有信息的原始数据,由于东西篇幅太多,就不一一截图,

  这里我们需要用到关于icon hash的字段是这个,data.0.http.favicon.hash,如图所示可以看到结果为-1507567067,这个数值就是http.favicon.hash中所需要的搜索值,

  根据上面我们得到的hash值来尝试使用http.favicon.hash语法进行搜索,可以看到我们成功得到了所有的带有这个icon的网站,

  Shodan的原始数据中还有其他很多东西,这里看一下data.0.http.favicon.data字段,从字面意思上来看应该是和favicon有关的,是他的数据,而这个格式看起来有没有很像我们熟悉的base64?没错了,其实这个字段就是图标base64之后的结果,

  这里我们可以使用python脚本简单的进行下检验,脚本如下,可以看到结果与网站中数据大致是一样的,后来询问了Shodan的工程师,确认了这个字段中存储的就是图标结果的base64格式。

import requests

response = requests.get('https://www.baidu.com/favicon.ico')
data = response.content.encode('base64')
print data

  至此我们已经对Shodan的一些细节有了更进一步的了解,现在出现了一种新的状况:假如你有一个网站,打开只有一个登陆界面,没有其他任何信息,但是此时你发现他有一个icon图标,所以猜想他可能是使用了某个不知名的cms之类,这里想到可以使用Shodan来搜索出带有同样icon的网站,从其他使用了相同模板的网站来寻找突破口。根据我们上面讲的,去Shodan中搜索这个ip,然而当你在Shodan中搜索时,却发现Shodan并没有收录这个ip地址,没有搜到任何结果,这个时候该怎么办?

  这里就要讲到今天的重点,如何通过一个网站icon逆推出Shodan搜索所需要的hash值。其实也非常简单,结合我上面说到的脚本就可以实现,通过一些渠道了解到,Shodan在处理这个结果时,使用了一个名为mmh3的python库,用的是MurmurHash3函数,一般用来进行哈希检索操作,关于mmh3库的具体用法可以看这里——>传送门点我。所以Shodan这里对于icon图标hash值的产生就清楚了,首先获取网站的icon,网站图标进行base64编码,并使用mmh3进行hash计算。mmh3模块可以通过pip安装,安装时可能会报错,我这里遇到需要安装C++ Compiler Package for Python 2.7,有其他报错的话根据报错安装即可,使用的为python2.7,不需要添加seed,脚本如下:

import mmh3
import requests response = requests.get('https://www.baidu.com/favicon.ico')
favicon = response.content.encode('base64')
hash = mmh3.hash(favicon)
print hash

  通过计算会得出一串数字,结果为-1507567067,再结合Shodan语法http.favicon.hash即可搜索出刚才的结果。

  这里进行测试,拿博客园举例,f12查看图标的地址,为http://common.cnblogs.com/favicon.ico,看一下没有问题,是icon。

  之后将脚本中的地址改为这个,进行计算,得出一个值-395680774。

  之后在Shodan中进行搜索,可以看到成功搜到了我想要的结果,虽然数量比较少。

  

  

Shodan的http.favicon.hash语法详解与使用技巧的更多相关文章

  1. Thymeleaf3语法详解和实战

    Thymeleaf3语法详解 Thymeleaf是Spring boot推荐使用的模版引擎,除此之外常见的还有Freemarker和Jsp.Jsp应该是我们最早接触的模版引擎.而Freemarker工 ...

  2. Velocity魔法堂系列二:VTL语法详解

    一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...

  3. Hive笔记--sql语法详解及JavaAPI

    Hive SQL 语法详解:http://blog.csdn.net/hguisu/article/details/7256833Hive SQL 学习笔记(常用):http://blog.sina. ...

  4. Hadoop Hive sql语法详解

    Hadoop Hive sql语法详解 Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件 ...

  5. Xpath语法详解

    1.简介 XPath是一门在XML和HTML文档中查找信息的语言,可以用来在XML和HTML文档中对元素和属性进行遍历 XPath的安装 Chrome插件XPath Helper 点Chrome浏览器 ...

  6. mysql用户授权、数据库权限管理、sql语法详解

    mysql用户授权.数据库权限管理.sql语法详解 —— NiceCui 某个数据库所有的权限 ALL 后面+ PRIVILEGES SQL 某个数据库 特定的权限SQL mysql 授权语法 SQL ...

  7. Java8的Stream语法详解(转载)

    1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...

  8. [持续交付实践] pipeline使用:语法详解

    一.引言 jenkins pipeline语法的发展如此之快用日新月异来形容也不为过,而目前国内对jenkins pipeline关注的人还非常少,相关的文章更是稀少,唯一看到w3c有篇相关的估计是直 ...

  9. Java 8系列之Stream的基本语法详解

    本文转至:https://blog.csdn.net/io_field/article/details/54971761 Stream系列: Java 8系列之Stream的基本语法详解 Java 8 ...

随机推荐

  1. XSS 绕过技术

    XSS Cross-Site Scripting(XSS)是一类出现在 web 应用程序上的安全弱点,攻击者可以通过 XSS 插入一 些代码,使得访问页面的其他用户都可以看到,XSS 通常是可以被看作 ...

  2. java 并发多线程显式锁概念简介 什么是显式锁 多线程下篇(一)

    目前对于同步,仅仅介绍了一个关键字synchronized,可以用于保证线程同步的原子性.可见性.有序性 对于synchronized关键字,对于静态方法默认是以该类的class对象作为锁,对于实例方 ...

  3. (二)surging 微服务框架使用系列之surging 的准备工作consul安装

    suging 的注册中心支持consul跟zookeeper.因为consul跟zookeeper的配置都差不多,所以只是consul的配置 consul下载地址:https://www.consul ...

  4. 浅析Servlet执行原理

    在JavaWeb学习研究中,Servlet扮演重要的作用,学好它,是后续JavaWeb学习的良好基础.无论是SSH,还是SSM,微服务JavaWeb技术,都应先学好Servlet,从而达到事半功倍的效 ...

  5. [Linux] deepin与nginx

    deepin Linux Deepin 是一个基于 DEB 包管理的一个独立操作系统,和那些 Ubuntu(下个大版本是基于debian开发) 的衍生版仅仅只是换主题.调整ISO预置的软件包不同.Li ...

  6. 一次快速改寫 SQL Server 高效查詢的範例

    最近線上系統突然出現匯出資料超過 10 筆時,查詢逾時的狀況,在仔細查找之後. 發現了問題原因,透過應用端與數據端兩邊同時調整,將查詢的效率提昇了約數百倍以上 首先,原本應用端的商務邏輯為每一分頁筆數 ...

  7. [TCP/IP] 网络层-抓包分析IP数据包首部

    ip数据包的结构:首部+数据部分 1.版本(v4或者v6)+首部长度(固定的20字节,所以就没有)+区分服务优先级(我的例子是 assured forwarding 31 0x1a 26,保证转发) ...

  8. jsp内置对象-response对象

    一.概念 隐含对象response是javax.servlet.HttpServletResponse接口实现类的对象.response对象封装了JSP产生的响应,用于响应客户端的请求,向客户端输出信 ...

  9. Android破解学习之路(十五)—— 【Unity3D】洛菲斯的呼唤(Lophis roguelike)无限金币(道具)的实现 破解

    前言 之前玩月圆之夜玩的挺high的,最近又找到了个与月圆之夜类似的卡牌游戏,游戏名为Lophis roguelike,中文翻译名洛菲斯的呼唤. 但是这个与月圆之夜有所不同,如果失败了,只能从开头重新 ...

  10. JAVA 四舍五入Math.round方法

    今天由于测试场景,利息的计算中涉及小数点的保留.保留的规则是:两位小数+四舍五入方式 使用的语言是JAVA, 看了许多网上的方法.因为最后保留的小数还会进行计算.所以我考虑最好不要保留的结果是Stri ...