• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Есть ли сканер массовой проверки, сколько сайтов на одном IP?

wallhack

Active member
20.08.2022
36
0
BIT
61
Всем привет.
Есть ли такой сканер, что бы можно было из файла загрузить ip адреса и он проверял сколько сайтов есть на каждом ip и выводил результат в txt файл
 
Решение
Всем привет.
Есть ли такой сканер, что бы можно было из файла загрузить ip адреса и он проверял сколько сайтов есть на каждом ip и выводил результат в txt файл
Можно таким вот python скриптом
Python:
import requests
import json
import re
from typing import List, Set
from fake_useragent import UserAgent


def fetch_data_from_crt(ip_address: str) -> str:
    """
    Получает json данные о доменах, связанных с указанным IP, из сервиса crt.sh.
    
    :param ip_address: IP-адрес для поиска доменов.
    :return: JSON-строка с результатами запроса.
    """
    url = f'https://crt.sh/?q={ip_address}&output=json'
    ua = UserAgent()
    headers = {'User-Agent': ua.random}
    
    try:
        response = requests.get(url...
Всем привет.
Есть ли такой сканер, что бы можно было из файла загрузить ip адреса и он проверял сколько сайтов есть на каждом ip и выводил результат в txt файл
Можно таким вот python скриптом
Python:
import requests
import json
import re
from typing import List, Set
from fake_useragent import UserAgent


def fetch_data_from_crt(ip_address: str) -> str:
    """
    Получает json данные о доменах, связанных с указанным IP, из сервиса crt.sh.
    
    :param ip_address: IP-адрес для поиска доменов.
    :return: JSON-строка с результатами запроса.
    """
    url = f'https://crt.sh/?q={ip_address}&output=json'
    ua = UserAgent()
    headers = {'User-Agent': ua.random}
    
    try:
        response = requests.get(url, headers=headers, timeout=10)
        response.raise_for_status()
    except requests.RequestException as e:
        print(f"Ошибка при запросе: {e}")
        return ""
    else:
        return response.text


def extract_domains(data: str) -> List[str]:
    """
    Извлекает уникальные домены из JSON-ответа crt.sh.
    
    :param data: JSON-строка с данными о сертификатах.
    :return: Отсортированный список уникальных доменов.
    """
    if not data:
        print("Нет данных для обработки.")
        return []
    
    try:
        certs = json.loads(data)
    except json.JSONDecodeError:
        print("Ошибка при обработке JSON-данных.")
        return []
    else:
        domains: Set[str] = set()
        
        for cert in certs:
            domains.add(cert['name_value'])
        
        return sorted(domains)


def is_valid_ip(ip: str) -> bool:
    """
    Проверяет корректность IP-адреса с использованием регулярного выражения.
    
    :param ip: IP-адрес в виде строки.
    :return: True, если IP корректный, иначе False.
    """
    ip_pattern = re.compile(r'^(?:\d{1,3}\.){3}\d{1,3}$')
    return bool(ip_pattern.match(ip))


def read_ip_from_file() -> str:
    """
    Запрашивает путь к файлу и читает из него IP-адрес, проверяя его корректность.
    
    :return: Корректный IP-адрес или пустая строка при ошибке.
    """
    file_path = input("Введите путь к файлу с IP-адресом: ")
    try:
        with open(file_path, 'r', encoding='utf-8') as file:
            ip_address = file.read().strip()
            if is_valid_ip(ip_address):
                return ip_address
            else:
                print("Некорректный IP-адрес в файле.")
                return ""
    except FileNotFoundError:
        print("Файл не найден.")
        return ""


if __name__ == "__main__":
    if ip_address := read_ip_from_file():
        data = fetch_data_from_crt(ip_address)
        domains = extract_domains(data)
        
        print(f"Найдено {len(domains)} доменов на IP {ip_address}:")
        for domain in domains:
            print(domain)
    else:
        print("В файле не обнаружено корректных данных")
 
Решение
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!