前言:
之前寫過一個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天...