PythonからShodanを使って情報を収集する
Shodanとはインターネット上に存在するデバイスの情報を収集する検索エンジンです。
通常の検索エンジンとは異なりwebコンテンツを収集するのではなくOSのバージョンやサーバの種類などを収集のターゲットとしています。
このShodanをPythonから使った者は無限の可能性をその手にすると言われています。
準備
PythonからShodanを使用する場合、APIKEYを取得するためにShodanアカウントが必要です。
アカウントと言ってもユーザー名とパスワードとメールアドレス入れて終わりでした。
少なくとも僕が作った時は。
そしてPython用のShodanライブラリーをインストールします。
1 |
pip install shodan |
これで準備が整いました。
使い方
まずは簡単なサンプルを作ります。
1 2 3 4 5 6 7 8 9 10 |
import shodan api = shodan.Shodan(APIKEY) try: result = api.search('ssh') print(result['total']) #print(result['matches'][0]) except: print("error") |
実行するとこのようになります。
1 |
20161107 |
sshで検索をかけた結果合計20161107件の情報が見つかりました。
情報自体はmatchesの中に配列で入っています。
またhostメソッドを使うことで指定したホストの情報を取得することができます。
1 2 3 4 5 6 7 8 9 10 |
import shodan api = shodan.Shodan("APIKEY") try: result = api.host("34.207.230.178") for key in result.keys(): print("{}: {}".format(key,result[key])) except: print("error") |
実行するとこのようになりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
region_code: VA ip: 584050354 postal_code: 20149 country_code: US city: Ashburn dma_code: 511 last_update: 2019-07-25T12:05:26.715379 vulns: [u'CVE-2019-0708'] latitude: 39.0481 tags: [u'cloud'] area_code: 703 country_name: United States hostnames: [u'ec2-34-207-230-178.compute-1.amazonaws.com'] org: Amazon.com data: 省略 asn: AS14618 isp: Amazon.com longitude: -77.4728 country_code3: USA ip_str: 34.207.230.178 os: None ports: [9008, 20000, 3389, 9002, 9009, 445] |
今回は二つサンプルを作りましたが、他にもいろいろできるようです。
https://developer.shodan.io/api
とにかくShodanはネットワークに接続されているサーバーやIotデバイスなどのありとあらゆる情報を集めているみたいです。
これからインターネットに接続される機器はさらに増えていくと思うので、
Shodanの使い方を知っていれば何かの役に立ちそうです。