Advertisement
kofany

ilpx

Dec 28th, 2023
1,164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.71 KB | None | 0 0
  1. import requests
  2.  
  3. # Funkcja do wczytywania danych z wielu plików i wyodrębnienia unikalnych adresów IP z informacjami o pochodzeniu
  4. def load_data(filenames):
  5.     ip_data = {}
  6.     for filename in filenames:
  7.         file_type = filename.split('.')[0]
  8.         try:
  9.             with open(filename, 'r') as file:
  10.                 for line in file:
  11.                     parts = line.split('|')
  12.                     ip_port = parts[0]
  13.                     ip = ip_port.split(':')[0]
  14.                     port = ip_port.split(':')[1]
  15.                     if ip not in ip_data:
  16.                         ip_data[ip] = {'port': port, 'source': file_type}
  17.                     elif file_type == 'http' and ip_data[ip]['source'] != 'http':
  18.                         # Prefer HTTP data if available
  19.                         ip_data[ip] = {'port': port, 'source': file_type}
  20.             print(f"Plik '{filename}' został prawidłowo wczytany.")
  21.         except FileNotFoundError:
  22.             print(f"Błąd: Nie znaleziono pliku '{filename}'.")
  23.     print(f"Wyodrębniono {len(ip_data)} unikalnych adresów IP z plików.")
  24.     return ip_data
  25.  
  26. # Funkcja do wykonywania zapytań do API i przetwarzania odpowiedzi
  27. def query_and_process(ip_data):
  28.     valid_ips = {}
  29.     total_ips = len(ip_data)
  30.     for index, (ip, info) in enumerate(ip_data.items(), 1):
  31.         print(f"Wykonuję zapytanie dla IP: {ip} (Pozostało zapytań: {total_ips - index})")
  32.         response = requests.get(f'https://bot.ircnet.info/api/i-line?q={ip}')
  33.         if response.status_code == 200:
  34.             data = response.json()
  35.             servers = [srv['serverName'] for srv in data['response'] if not srv['sid'].startswith('0PN')]
  36.             if servers:
  37.                 valid_ips[ip] = {'port': info['port'], 'source': info['source'], 'servers': servers}
  38.     return valid_ips
  39.  
  40. # Funkcja do zapisywania wyników do pliku
  41. def save_results_to_file(valid_ips):
  42.     with open('output.txt', 'w') as file:
  43.         for ip, info in valid_ips.items():
  44.             # Usunięcie białych znaków z końca każdego serwera przed złączeniem
  45.             cleaned_servers = [srv.strip() for srv in info['servers']]
  46.             file.write(f"{info['source']} {ip} {info['port']} {' '.join(cleaned_servers)}\n")
  47.     print("Wyniki zostały zapisane do pliku 'output.txt'.")
  48.  
  49. # Główny przepływ programu
  50. def main():
  51.     print("Uruchomiono program.")
  52.     filenames = ['http.txt', 'socks4.txt', 'socks5.txt']  # Nazwy plików z danymi
  53.     ip_data = load_data(filenames)
  54.     if ip_data:
  55.         valid_ips = query_and_process(ip_data)
  56.         save_results_to_file(valid_ips)
  57.     else:
  58.         print("Przerwano działanie programu z powodu błędu.")
  59.  
  60. if __name__ == "__main__":
  61.     main()
  62.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement