diff --git a/theHarvester/discovery/omnisint.py b/theHarvester/discovery/omnisint.py index 3805984d..3ee5ab69 100644 --- a/theHarvester/discovery/omnisint.py +++ b/theHarvester/discovery/omnisint.py @@ -3,26 +3,30 @@ import re class SearchOmnisint: - - def __init__(self, word, limit): + def __init__(self, word): self.word = word self.totalhosts = set() self.totalips = set() - self.limit = limit + self.limit = 10000 self.proxy = False async def do_search(self): base_url = f'https://sonar.omnisint.io/all/{self.word}?page=xx' - urls = [base_url.replace("xx", str(num)) for num in range(0, self.limit, 10) if num <= self.limit] - response = await AsyncFetcher.fetch_all([urls], json=True, headers={'User-Agent': Core.get_user_agent()}, - proxy=self.proxy) - for entry in response[0]: - if 'null' in entry: + urls = [base_url.replace('xx', str(num)) for num in range(0, self.limit, 10) if num <= self.limit] + responses = await AsyncFetcher.fetch_all(urls, json=True, headers={'User-Agent': Core.get_user_agent()}, proxy=self.proxy) + for response in responses: + try: + for entry in response: + for key, value in entry.items(): + if key == 'null' or value == 'null': + break + if key == 'name': + self.totalhosts.add(value) + if key == 'value' and re.match(r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$', value): + self.totalips.add(value) + except Exception: + # Break on 'NoneType' object is not iterable to allow data to be parsed break - else: - self.totalhosts.update({host['name'] for host in entry}) - self.totalips.update({ip['value'] for ip in entry - if re.match(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$", ip['value'])}) async def get_hostnames(self) -> set: return self.totalhosts