1

Shodan でネットワーク用に開いているすべてのポートを取得したい (使用できることはわかっているnmapが、これを Shodan で実行したい)。

問題は、ウェブサイトに「TOP サービス」しか表示されないことです。すべてのサービスを受けたいのですが。

たとえば、このネットの場合: 195.53.102.0/24 次のポートが与えられます。

TOP SERVICES
HTTP 15
HTTPS 2
DNS 2
FTP 2
IKE-NAT-T 1

しかし、このネット 195.53.0.0/16 をスキャンすると、次のポートが与えられます。

TOP SERVICES
HTTP 1,012
HTTPS 794
179 290
IKE 238
IKE-NAT-T 227

だから私はのようなサービスがdnsありませんftp

私はpythonからAPIを試しています:

import shodan

SHODAN_API_KEY = "XXXXXXXXXXXXXXXXXXXXXXx"

api = shodan.Shodan(SHODAN_API_KEY)

# Wrap the request in a try/ except block to catch errors
try:

    # Search Shodan


    results = api.search('net:195.53.102.0/24')
    for service in results['matches']:
        print service['ip_str']
        print service['port']

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

そして、これは私が得る結果です:

195.53.102.193
80
195.53.102.138
80
195.53.102.148
80
195.53.102.136
80
195.53.102.157
80
195.53.102.226
443
195.53.102.66
500
195.53.102.133
80
195.53.102.142
80
195.53.102.66
4500
195.53.102.141
80
195.53.102.131
21
195.53.102.152
53
195.53.102.153
21
195.53.102.209
80
195.53.102.132
53
195.53.102.226
80
195.53.102.147
80
195.53.102.142
443
195.53.102.178
80
195.53.102.135
143
195.53.102.146
80
195.53.102.143
80
195.53.102.144
80

IP ごとに 1 つのポートだけです。たとえば、この IP: 195.53.102.131 にはポート 21、80、および 443 が開いています。私の結果は次のように述べています。

195.53.102.131
21

それ以外の:

195.53.102.131
21
80
443

したがって、ウェブサイトから、単にではなくすべてのポート/サービスを提供するTOP SERVICESか、APIから、1つだけでなく、IPごとにすべてのポートを取得できるようにするか、または誰かがより良い解決策を持っている場合、私はそれも聞きたいです。

おっしゃる通り、nmapではなくShodanで行いたいと思います。前もって感謝します。

4

2 に答える 2

1

ネットワークで開いているポートの内訳を取得したいだけの場合は、count()メソッドを使用してポートファセットを要求できます。また、ファセットをタプルとして指定すると、上位 5 つのポートよりも多くを返すように API に要求できます。

import shodan

api = shodan.Shodan(YOUR API KEY)
result = api.count('net:195.53.102.0/24', facets=[['port', 20]])

上位 20 個のポート (利用可能な場合) は、result['facets']['port']プロパティで利用できます。また、count()メソッドを使用しても API クレジットは使用されないため、使用制限に食い込むことはありません。

于 2016-11-14T04:50:16.563 に答える