2016-05-11 5 views
1

これらのSHODANドキュメントを見ると、なぜスクリプトを実行すると最初のポートの詳細しか返されないのか分かりません。私は、Webインターフェイスで見たとき、私は、デバイスのいくつかのために検出された複数のポート/サービスがある見ることができます...Python Shodan API - 複数のポート値を返す

http://shodan.readthedocs.io/en/latest/tutorial.html#connect-to-the-api

#!/usr/bin/python 
import shodan 
SHODAN_API_KEY = "xxxxxxx" 
api = shodan.Shodan(SHODAN_API_KEY) 

try: 
results = api.search('ics country:"US"') 
for item in results['matches']: 
    print """ 
Port: %s 
Banner: %s 
""" % (item['port'], item['data']) 

except shodan.APIError, e: 
    print 'Error: %s' % e 

答えて

1

スクリプトが含まれているサービスのバナーのための主要な初段データベースを検索されます文字列「ics」と、デバイスが米国内にある場所。しかし、検索の結果はバナーです。すなわちサービス - ホストではない!また、サービスバナーには1つのポートしか関連付けられていないため、これがすべて表示されます。ただし、ホストは複数のサービスを実行し、多数のオープンポートを持つことができます。あなたが実際に興味を持っているように思えます。ホストにあるポート/サービスの完全なリストを取得するには、 "api.host()"メソッドを使用する必要があります。

host = api.host('8.8.8.8') 

これは、特定のIPがインターネット上で公開しているすべてのポート/サービスのリストを返します。

また、バナーの「ics」を検索することは、工業用制御システムを検索することと同じではありません。クロールされている様々なICSプロトコルの概要を説明し、どのようにそれらを検索するための初段のセクションがあり

category:ics 

:あなたのような検索フィルタを使用する必要があります

https://www.shodan.io/explore/category/industrial-control-systems

+0

をしてくれてありがとう説明!私はそれを完全に欠いていた...物事は、api.host()メソッドで期待どおりに動作しています。 –