跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

Shodan API使用指南


cnhackteam7

推荐的帖子

0x00 前言

肖丹是一个针对网络设备的搜索引擎,通过肖丹应用程序接口进行搜索,不仅数据更加丰富,而且能够配合自己的程序实现自动化分析。

本文将要介绍肖丹应用程序接口在使用过程需要注意的问题,分享使用心得和脚本开发技巧。

0x01 本文将要介绍以下内容

肖丹应用程序接口的简单使用

利用大蟒调用肖丹应用程序接口获得搜索结果

对搜索结果作进一步处理

三种积分(学分)的区别

通过肖丹官网导出搜索结果和进一步处理

0x02 Shodan API的简单使用

1、注册账号,获得API Key

测试应用程序接口密钥为:sk vs 0 rabitqpzzesahahqnq 2 HV 6 swjufs 3

2、安装python包

点安装肖丹

3、通过Shodan CLI获得搜索结果

参考资料:

https://cli.shodan.io/

注:

未付费只能获得100个搜索结果

硬币指示器(硬币水平指示器的缩写)命令行界面(批处理脚本的命令行界面)全称为命令行界面,即肖丹的命令行模式

Windows操作系统操作系统系统下使用点安装在同级目录产生文件Shodan.exe

如下图

2-1.png

(1) 初始化

shodan init

实际命令为:

应该初始化skvs 0 rabitqpzzesahqnq 2 HV 6 swjufs 3

如下图

2-2.png

(2) 搜索指定内容(apache)的数量

肖丹伯爵阿帕奇

如下图

2-3.png

获得结果23803090

(3) 搜索指定内容(apache)的信息

肖丹搜索-字段ip_str,端口、组织、主机名街头流氓

搜索关键词:阿帕奇

输出:ip_str,端口,组织,主机名

(4) 下载指定内容(apache)的搜索结果

肖丹下载结果街头流氓

搜索关键词:阿帕奇

保存文件名:result.json.gz

如下图

2-4.png

(5) 解析文件,获得搜索结果

shodan parse -字段ip_str,端口,组织-分隔符,result.json.gz

如下图

2-5.png

(6) 搜索指定IP的信息

庄丹主持人189.201.128.250

如下图

2-6.png

0x03 三种积分(credits)的区别

肖丹共有三种积分(学分):

出口信贷

查询积分

扫描积分

官方文档:

https://help.shodan.io/the-basics/credit-types-explained

简单理解:

Export Credits

通过肖丹官网下载数据时使用

一个出口信用=10,000个结果

注:

导出一次结果消耗一个信用,无论获取到的结果有多少,最多为10000个结果

月初不会更新

Query Credits

调用肖丹应用程序接口时使用

一个查询信用=100个结果

月初更新,也就是说如果只买了一个月的会员,那么下一个月清零

Scan Credits

调用肖丹应用程序接口时使用

一次扫描积分=1个互联网协议(Internet Protocol)

月初更新

0x04 通过python调用Shodan API获得搜索结果

注:

未付费不仅无法使用搜索过滤条件,而且只能获得100个搜索结果

(1) 搜索指定内容(apache)的信息

大蟒代码如下:

进口肖丹

shod an _ API _ KEY=' skvs 0 rabitqpzzesahahqnq 2 HV 6 swjufs 3 '

api=shodan .Shodan(SHODAN_API_KEY)

尝试:

results=api.search('Apache ')

找到"打印"结果:% s"%结果['总数]

对于结果中的结果['匹配']:

打印(' %s:%s|%s|%s'%(结果['ip_str'],结果['端口'],结果['位置']['国家名称'],结果['主机名']))

除了肖丹APIError,e:

"打印"错误:% s"% e

如下图

3-1.png

如果未付费,无法使用搜索过滤条件,例如阿帕奇国家:"美国"

(2) 搜索指定内容,将获得的IP写入文件

大蟒代码如下:

进口肖丹

shod an _ API _ KEY=' skvs 0 rabitqpzzesahahqnq 2 HV 6 swjufs 3 '

api=shodan .Shodan(SHODAN_API_KEY)

file_object=open('ip.txt ',' w ')

尝试:

results=api.search('Apache ')

找到"打印"结果:% s"%结果['总数]

对于结果中的结果['匹配']:

#打印结果['ip_str']

file _ object.writelines(结果['ip_str'] '\n ')

除了肖丹APIError,e:

"打印"错误:% s"% e

file_object.close()

(3) 通过命令行参数指定搜索条件,将搜索到的IP写入文件

大蟒代码如下:

进口肖丹

导入系统

shod an _ API _ KEY=' skvs 0 rabitqpzzesahahqnq 2 HV 6 swjufs 3 '

api=shodan .Shodan(SHODAN_API_KEY)

if len(sys.argv)2:

打印'[!]错误的参数

sys.exit(0)

打印'[*]搜索字符串:% s“% sys . argv[1]

file_object=open('ip.txt ',' w ')

尝试:

results=api.search(sys.argv[1])

打印'[]个找到的结果:%s' %个结果['总数]

对于结果中的结果['匹配']:

#打印结果['ip_str']

file _ object.writelines(结果['ip_str'] '\n ')

除了肖丹APIError,e:

"打印"错误:% s"% e

file_object.close()

命令行参数:

search.py apache

注:

如果搜索多个关键词,需要用引号将搜索条件包含,例如:

' search.py '阿帕奇国家:美国'

(4) 读取文件中的IP列表,反查IP信息

大蟒代码如下:

进口肖丹

导入系统

重新加载(系统)

sys.setdefaultencoding('utf8 ')

shod an _ API _ KEY=' skvs 0 rabitqpzzesahahqnq 2 HV 6 swjufs 3 '

api=shodan .Shodan(SHODAN_API_KEY)

def searchip( str):

尝试:

host=api.host(str)

shodan.exception.APIError除外:

打印'[!]没有可用的信息

打印'-'

返回

否则:

#打印一般信息

尝试:

“打印”IP:% s \ r \ n组织:% s \ r \ n操作系统:%s' % (host['ip_str'],host.get('org ',' n/a '),host.get('os ',' n/a '))

除了UnicodeEncodeError错误:

打印'[!]UnicodeEncode错误\r\n '

否则:

#打印所有横幅

对于主机['数据']中的项目:

"打印"端口:% s \ r \打印机:% s"%(项目['端口'],项目['数据'])

打印'-'

返回

file_object=open('ip.txt ',' r ')

对于文件_对象中的行:

搜索(线路)

0x05 通过Shodan官网下载搜索结果

通过肖丹官网下载数据时使用出口信贷,如下图

4-1.png

查询一次消耗一个出口信贷,无论结果有多少个,最多为10000个

导出格式选择为json

(1) 从下载的json结果文件中提取IP

大蟒代码如下:

导入json

file _ object=open(' shod an _ data。JSON ',' r ')

对于文件_对象中的行:

data=json.loads(行)

打印(数据['ip_str'])

file_object.close()

(2) 从下载的json结果文件中提取指定国家的IP和端口

国家代号在二级元素中,对应结构:数据['位置']['国家代码]

大蟒代码如下:

导入json

导入系统

进口关于

定义搜索(国家):

file _ object=open(' shod an _ data。JSON ',' r ')

file_object2=open(国家)。txt ',' w ')

对于文件_对象中的行:

data=json.loads(行)

如果重新搜索(数据['位置']['国家代码'],国家,重新IGNORECASE):

str1='%s:%s' % (data['ip_str'],data['port'])

打印str1

文件_对象2。writelines(字符串1 ' \ n ')

file_object.close()

file_object2.close()

if __name__=='__main__ ':

if len(sys.argv)2:

打印('[!]错误的参数)

sys.exit(0)

否则:

打印('[*]搜索国家代码:% s“% sys . argv[1])

search(sys.argv[1])

打印('[]完成)

命令行参数:

search.py US

生成文件US.txt,保存互联网协议(互联网协议)和对应的端口

0x06 小结

本文介绍了肖丹应用程序接口的用法,分享使用心得和大蟒脚本开发技巧。选择付费购买时,记得区分好三种积分(学分)

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...