Censysで調べる時のコツ

censysっていうタグ作ったのにcensys(1)(´;ω;`)
というのは置いておいてcensysとは?前回のを参照

censysは「field:value」の形式で調べることができる.
前回は「80.http.get.title:Start AND 80.http.get.status_code:200 AND japan」で調べましたね.
実は使えるタグの一覧がある.
ここからData Definitionsへ
Cut2016_0907_1616_01.jpg
こんな感じで多くある.

IoTを探せ!!

metaデータで取得できる値に「metadata.device_type」や「metadata.os_version」がある.

Raspberry Piの場合

metadata.os:Raspbian

でラズパイが検索できる.ただし,Apacheなどの設定によりシグネチャなどを隠している場合,これでは検索できず「metadata.os:Linux」となる.

プリンター他

プリンター
metadata.device_type:printer

NAS
metadata.device_type: NAS
metadata.product: NAS

ルーター
metadata.device_type: router

カメラ
metadata.device_type: camera

テレビ(失敗)
metadata.device_type: Television

etc...

metadata.device_type:の可能性が無限大!
コントロールシステムなどで検索すると...

metadata.device_type: industrial control system
metadata.device_type: control system
metadata.device_type: control panel

APIを使うとき

前回はプログラムが適当だったので少し解説
インストールしてないひとは何も考えずに

sudo pip install censys
version 0.0.6になったっぽい(2016/9/4)
なので過去に入れた方は
sudo pip install censys --upgrade

APIの取得

censysここからアカウントを作成できる.
Cut2016_0908_0443_40.jpg
適宜必要な情報を入力して登録
次にトップページから「Login」を選び先ほどの入力した名前とパスワードを入れログインする.
アカウントから「API ID」と「Secret」をメモる.
Cut2016_0908_0448_22.jpg
これで準備は完了.

検索

import censys
from censys import *
UID = ""#適宜
SECRET = ""#適宜

#検索方法はいろいろあるみたい

#ipv4
api = censys.ipv4.CensysIPv4(api_id=UID, api_secret=SECRET)
#api.search(query, fields, page, max_records)
#metadata.device_type:camera AND location.country: Japan
#fields=["field1", "field2", ...]
#fieldsの一覧はhttps://www.censys.io/ipv4/helpここを参照
#何も指定がない場合IPとプロトコルのみ返ってくる
#max_records=任意 指定がないとAPI Limitの限界まで結果を返す

#websites
api = censys.websites.CensysWebsites(api_id=UID, api_secret=SECRET)
#api.search(query, fields, page, max_records)
#alexa_rank: [1 TO 100]アレクサのランキング1位から100位を返す
#Qiitaのアレクサの順位は1850(2016/09/08 05:57)

Cut2016_0908_0558_58.jpg
こんな情報が返ってくる.

#Certificates
api = censys.certificates.CensysCertificates(api_id=UID, api_secret=SECRET)
#api.search(query, fields, page, max_records)
#証明書関係?で検索出来るっぽい
#qiita.com and current_valid_nss: true

Cut2016_0908_0607_43.jpg
こんな情報が返ってくる.

#SQLでも検索出来るらしい
api = censys.query.CensysQuery(api_id=UID, api_secret=SECRET)
res = api.new_job("SELECT location.country, count(ip) FROM ipv4.20151020 GROUP BY location.country;")
#一般アカウントは403 (unauthorized): Unauthorized. You do not have access to this service.と返るはず

SQL access is restricted to verified researchers and academic accounts
とあるように,SQLを使えるのは承認された研究者や学術関係者のみ.

間違いがありませんように

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.