收集信息之censys

一.摘要

Censys提供了search、view、report、query、export以及data六种API接口。

search接口的请求地址是https://www.censys.io/api/v1/search/?,其中?的地方可以是ipv4、websites或者certificates,分别代表搜索ipv4主机、网站和证书。我们的POST请求应该是一组包含query、page、fields的json数据,其中query指的是相应的搜索语句;page代表返回的页码,Censys总是返回一页的数据;fields指的是你希望返回值中包含哪些字段,具体包含哪些字段你可以自己去看一下。

JSON有两种结构:
  对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构
  数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...]

二.利用代码

# -*- coding: UTF-8 -*-
#https://www.censys.io/api/v1/search/ipv4
#post:{"query": "cyberoam", "page": 1, "fields": ["ip", "protocols", "location.country"]}
#query指的是相应的搜索语句;page代表返回的页码;fields指的是你希望返回值中包含哪些字段
import sys
import json
import requests
import time

API_URL = "https://www.censys.io/api/v1"
UID = "85e64536-7534-4177-8c72-9a383bf01f12"
SECRET = "9hCyul4KXJKXieyXeGIFT0lr04rbN9yQ"
page=1
PAGES=2

def getIp(page):
    iplist=[]
    data = {
                "query":"cyberoam",
                "page":page,
                "fields":["ip","protocols","location.country"]
            }
    try:
        res = requests.post(API_URL + "/search/ipv4", data=json.dumps(data), auth=(UID, SECRET))
    except:
        pass
    try:
        results = res.json()
    except:
        pass
    if res.status_code != 200:
        print "error occurred: %s" % results["error"]
        sys.exit(1)
    #print "Total_count:%s" % (results["metadata"]["count"])
    iplist.append("Total_count:%s" % (results["metadata"]["count"]))
    for result in results["results"]:
        #print "%s in %s" % (result["ip"],result["location.country"][0])
        #iplist.append((result["ip"]+‘:‘+i+‘ in ‘+result["location.country"][0]))
        for i in result["protocols"]:
            iplist.append(result["ip"]+‘:‘+i+‘ in ‘+result["location.country"][0])
    return iplist

if __name__ == ‘__main__‘:
    print "start..."
    with open(‘censys.txt‘,‘a‘) as f:
        while page <= PAGES:
            iplist=(getIp(page))
            print ‘page is:‘+str(page)
            page += 1
            time.sleep(1)
            for i in iplist:
                f.write(i+‘\n‘)

首先request请求,post提交data和auth信息,返回json数据包,利用json数据结构找的所需信息,保存并返回一个列表。
主函数判断page大小,不够就调用getIp函数,最后循环写入结果。

时间: 2024-08-01 13:19:30

收集信息之censys的相关文章

常用又容易忘记的JS小功能合集 本贴收集信息为自用,如果能帮到您,实属荣幸

本贴收集信息为自用,如果能帮到您,实属荣幸 jquery ajax 异步 async为flase,同步为true或者不增加此参数 1 $.ajax({ 2 type: "GET", 3 async: false, 4 url: "", 5 data: "", 6 contentType: "application/x-www-form-urlencoded; charset=utf-8", 7 success: functio

13.4 从数据中收集信息

我们可以从互联网下载大量的数据,而困难在于如何从中收集到有用的信息.本章到目前为止,我们已经下载了地区列表,并把它转换为包含每个地区名字的序列:然后,下载一组包含所有地区和国家信息的 XML 文档.在本节,我们将把这些非类型化的 XML 数据转换为类型化的数据结构,包含的信息可以方便地显示给用户.

web安全学习笔记-手工收集信息

1.攻击目标:http://duwei19921019.vicp.cc:8881/ 信息收集的注意点: 网站是静态/动态 哪种脚本语言开发的 web服务器的类型 是否为cms,若是,cms的名称为? 是否开启了cdn 网站真实IP 是否有robots.txt文件 端口/服务器开放情况 2.随意点开一个图片链接,http://duwei19921019.vicp.cc:8881/affiche.php?ad_id=32&uri= 看到是php开发的动态网站. 3.随意输入一个不存在地址.http:

利用搜索引擎收集信息

一.主要收集目标 1. 敏感信息 2. 具备特殊url关键字的目标地址 3. 搜索已有的攻击结果 4. 指定格式文件 5. 其他与某个站点相关的信息 二.常见的GoogleHacking语法 1. intext 把网页中的正文内容中的某个字符作为搜索的条件 2. intitle 把网页标题中的某个字符作为搜索的条件 3. cache 搜索搜索引擎里关于某些内容的缓存,可能会在过期内容中发现有价值的信息 4. filetype 制定一个格式类型的文件作为搜索对象 5. inurl    搜索包含指

收集信息

linux /etc 目录下有大量的系统配置文件 /etc/resolv.conf DNS配置,看有没有机会做DNS篡改 /etc/passwd /etc/shadow 获取加密后的密码,可以通过暴力破解获取加密前的密码 .ssh .group 存放公私秘钥,通常隐藏在目录下,ls -la可以查看到 /tmp 存放临时数据 whoami 查看当前用户 who -a 查看所有用户 ipconfig -a iptables -L -n 防火墙,netstat -rn 查看网关,路由设置,查看是否有其

APP线上问题收集信息整理

常话说"软件是不能保证百分百没有bug的",因此当我们的APP上线之后,市场的使用人员会反馈一些我们测试人员可能在测试时遗漏的问题,包括也不防会有一些需求的反馈,这些问题均由售后人员反馈整理,以一种方式进行记录(当前我们用的是TAPD),及时给到对应的负责人,负责人来判定此问题的严重性,并决策是否及时处理. 定期的将线上的问题进行整理汇总,反馈给对应的领导进行查看,评估我们整体的质量与市场效果. 为了开发更准确的定位问题,那么在问题的收集上应该更全的给到对应的所需字段值,如:机型.系统

oracle 查询数据变慢 ;重新收集信息;

oracle11g查看自动收集统计信息是否开启select client_name,status from dba_autotask_client; ----------------------------------------------------------------------------------------------------------- SYSDBA登录exec dbms_scheduler.disable('SYS.GATHER_STATS_JOB');exec db

python写外网收集信息器

简单化,知道IP去扫描ip import socket from socket import * a=input('请输入域名:') try: ip=gethostbyname(a) print('[+]'+ip) print('开放的端口有:') def postscanner(host,port): try: s=socket(AF_INET,SOCK_STREAM) s.connect((host,port)) print('[+]%d open'%port) s.close() exce

HP 3Par F400存储收集信息脚本

showalert -dshowbatteryshowcageshowcage -dshowcage -eshowcage -sfp -ddmshowcage -sfp -dshowcpgshowcpg -rshowcpg -sagshowcpg -sdgshowdateshoweepromshoweventlog -sev Fatal -sev Critical -sev Major -onelineshowfirmwaredbshowhostshowhost -dshowiscsisessi