利用Python 第三方模組Shodan實現資訊收集
阿新 • • 發佈:2022-05-28
1 import shodan 2 import optparse 3 import requests 4 import sys 5 6 class ShodanSearch: 7 def __init__(self) -> None: 8 self.domain = self.get_params() 9 print(self.domain) 10 self.shodan_url = 'https://api.shodan.io/dns/resolve' 11 self.shodan_api ='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 12 13 def get_params(self): 14 parser = optparse.OptionParser("Usage: <Program> -d domain name") 15 parser.add_option('-d', '--domain', dest='domain', type='string', help='Specify domain name to search') 16 options, args = parser.parse_args() 17 if options.domain isNone: 18 print(parser.usage) 19 sys.exit(0) 20 return options.domain 21 22 23 def get_ip(self): 24 try: 25 headers = { 26 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0' 27 } 28 params = {29 'hostnames': self.domain, 30 'key': self.shodan_api 31 } 32 33 response = requests.get(url=self.shodan_url, params=params).json() 34 return response[self.domain] 35 except Exception as e: 36 print(e) 37 sys.exit() 38 39 def host_info(self): 40 try: 41 api = shodan.Shodan(self.shodan_api) 42 res = api.host(self.get_ip()) 43 print(res) 44 45 except Exception as e: 46 print(e) 47 sys.exit() 48 49 50 if __name__ == "__main__": 51 shodanobj = ShodanSearch() 52 shodanobj.host_info()