python重新利用shodan API


 前言:

 之前寫過一個shodan的API調用

感覺寫的不這么好。然后現在重新寫一個

 

shodan介紹:

 shodan是互聯網上最可怕的搜索引擎。
CNNMoney的一篇文章寫道,雖然目前人們都認為谷歌是最強勁的搜索引擎,但Shodan才是互聯網上最可怕的搜索引擎。
與谷歌不同的是,Shodan不是在網上搜索網址,而是直接進入互聯網的背后通道。Shodan可以說是一款“黑暗”谷歌,一刻不停的在尋找着所有和互聯網關聯的服務器、攝像頭、打印機、路由器等等。每個月Shodan都會在大約5億個服務器上日夜不停地搜集信息。
Shodan所搜集到的信息是極其驚人的。凡是鏈接到互聯網的紅綠燈、安全攝像頭、家庭自動化設備以及加熱系統等等都會被輕易的搜索到。Shodan的使用者曾發現過一個水上公園的控制系統,一個加油站,甚至一個酒店的葡萄酒冷卻器。而網站的研究者也曾使用Shodan定位到了核電站的指揮和控制系統及一個粒子回旋加速器。
Shodan真正值得注意的能力就是能找到幾乎所有和互聯網相關聯的東西。而Shodan真正的可怕之處就是這些設備幾乎都沒有安裝安全防御措施,其可以隨意進入。
Rapid 7 的首席安全官HD Moore,表示:你可以用一個默認密碼登陸幾乎一半的互聯網。就安全而言,這是一個巨大的失誤。
如果你搜索“默認密碼”的話,你會發現無數的打印機,服務器及系統的用戶名都是“admin”,密碼全都是“1234”。還有很多系統根本不需要認證,你所需要做的就是用瀏覽器進行鏈接。所以如果你在使用默認密碼的話,請現在就改換新的密碼。
如果Shodan落入壞人之手的話,那真是一個可怕的東西。
而更大的問題是很多設備根本不需要鏈接到互聯網。很多公司常常會買一些他們能夠控制的系統,比如說一個電腦控制的熱力系統。而他們又是如何把熱力系統鏈接到網上的呢?為什么不直接控制呢?很多IT部門就直接把這些系統插入到網絡服務器上,殊不知,這樣就和世界分享這些系統了。
Shodan的研發者Matherly表示,這些鏈接到網上的設備根本沒有安全防御措施,他們根本就不應該出現在互聯網上。
而好消息就是Shodan幾乎都是用在了好的方面。
Matherly對搜索數量也進行了限制。比如沒有賬戶的用戶最多提供10個搜索結果,而有賬戶的用戶則可以享受50個搜索結果。如果你想要Shodan提供的所有信息,那Matherly會就你所要搜索的內容,要求你提供更多的信息且付費。
同時,Matherly也承認壞蛋會使用Shodan,但到目前為止,大多數網絡攻擊都集中在竊取財物和知識產權上。壞蛋們還沒有試圖摧毀一棟大樓或毀壞市內的紅綠燈。
安全防御措施的專業人士們都不希望使用Shodan時搜索到這些沒有防御措施的設備及系統。但同時,互聯網上有太多可怕的東西,那些沒有防御措施的設備只能等着被攻擊。。。。

引用百度百科

 

 shodan文檔:http://shodan.readthedocs.io/en/latest/tutorial.html

shodan:https://www.shodan.io/

key的獲取方法:請自己上shodan官網進行注冊獲取key

代碼:

import optparse
import shodan
import requests
def main():
    usage='[usage: -j Type what you want]' \
          '        [-i IP to search]' \
          '        [-s Todays camera equipment]'
    parser=optparse.OptionParser(usage)
    parser.add_option('-j',dest='jost',help='Type what you want')
    parser.add_option('-i',dest='host',help='IP to search')
    parser.add_option('-s',action='store_true',dest='query',help='Todays camera equipment')
    (options,args)=parser.parse_args()
    if options.jost:
        jost=options.jost
        Jost(jost)
    elif options.host:
        host=options.host
        Host(host)
    elif options.query:
        query()
    else:
        parser.print_help()
        exit()

def Jost(jost):
    SHODAN_API_KEY='ZmgQ9FZf1rnRuR0MLhT5SXw0xBE8LDLc'
    api=shodan.Shodan(SHODAN_API_KEY)
    try:
        result=api.search('{}'.format(jost))
        print('[*]Results found:{}'.format(result['total']))
        for x in result['matches']:
            print('IP{}'.format(x['ip_str']))
            print(x['data'])
            with open('shodan.txt','a') as p:
                p.write(x['ip_str']+'\n')
                p.write(x['data']+'\n')
    except shodan.APIError as e:
        print('[-]Error:',e)

def Host(host):
    SHODAN_API_KEY='ZmgQ9FZf1rnRuR0MLhT5SXw0xBE8LDLc'
    try:
      api=shodan.Shodan(SHODAN_API_KEY)
      hx=api.host('{}'.format(host))
      print("IP:{}".format(hx['ip_str']))
      print('Organization:{}'.format(hx.get('org','n/a')))
      print('Operating System:{}'.format(hx.get('os','n/a')))
      for item in hx['data']:
          print("Port:{}".format(hx['port']))
          print('Banner:{}'.format(hx['data']))
    except shodan.APIError as g:
        print('[-]Error:',g)

def query():
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
    url = "https://api.shodan.io/shodan/query?key=ZmgQ9FZf1rnRuR0MLhT5SXw0xBE8LDLc"
    r = requests.get(url, headers=header)
    sd = r.json()
    sg = sd['matches'][0:]
    for b in sg:
        print("描述:", b['description'])
        print('標簽:', b['tags'])
        print('時間戳:', b['timestamp'])
        print('標題:', b['title'])
        print('服務:', b['query'])
        print('---------------------------------')

if __name__ == '__main__':
    main()

實現了3個 參數

-j shodan里面搜索

-i 搜索IP

-s 搜索弱口令攝像頭

-j 搜有ssh服務的主機,並寫入到shodan.txt

 

 

-i IP搜索 沒目標- -

-s 弱口令攝像頭查詢

距離上學還有2天...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM