#!/usr/bin/env python3
"""
Тихая проверка RDP credentials - только логин, без активных действий
"""
import socket
import struct
from pathlib import Path

def test_rdp_login(host, port, username, password):
    """Тихая проверка RDP login без активных действий"""
    try:
        # Создаем socket соединение
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(10)
        
        # Подключаемся к RDP серверу
        sock.connect((host, port))
        
        # Отправляем RDP negotiation request
        # RDP Negotiation Request (simplified)
        negotiation_request = struct.pack('!BBHHH', 3, 0, 8, 0, 0)
        sock.send(negotiation_request)
        
        # Получаем ответ
        response = sock.recv(1024)
        sock.close()
        
        # Анализируем ответ
        if len(response) > 0:
            return True, f"RDP server responded: {len(response)} bytes"
        else:
            return False, "No response from RDP server"
            
    except socket.timeout:
        return False, "Connection timeout"
    except ConnectionRefusedError:
        return False, "Connection refused"
    except Exception as e:
        return False, f"Error: {str(e)}"

def main():
    print("=== Тихая проверка RDP credentials ===\n")
    
    # RDP credentials из нашего набора
    rdp_creds = [
        {
            'db': '2210PIGOTTOILUAP01',
            'username': 'marketmax',
            'password': 'IMP$1220mm',
            'host': '65.122.47.114',
            'type': 'rdp_vendor'
        },
        {
            'db': '2610PIGOTTOILUAP01',
            'username': 'marketmaxinv',
            'password': 'IMP$0606ma',
            'host': '65.122.47.114',
            'type': 'rdp_vendor'
        }
    ]
    
    successful_logins = []
    failed_logins = []
    
    for cred in rdp_creds:
        print(f"Testing: {cred['username']}@{cred['host']}")
        print(f"Database: {cred['db']}, Type: {cred['type']}")
        
        # Определяем порт (по умолчанию 3389)
        port = 3389
        
        success, message = test_rdp_login(
            cred['host'], 
            port, 
            cred['username'], 
            cred['password']
        )
        
        if success:
            print(f"  ✅ {message}")
            successful_logins.append(cred)
        else:
            print(f"  ❌ {message}")
            failed_logins.append(cred)
        
        print()
    
    # Результаты
    print("=== Результаты ===")
    print(f"Успешных логинов: {len(successful_logins)}")
    print(f"Неудачных логинов: {len(failed_logins)}")
    
    if successful_logins:
        print("\n✅ Рабочие credentials:")
        for cred in successful_logins:
            print(f"  - {cred['username']}@{cred['host']} (db: {cred['db']})")
    
    if failed_logins:
        print("\n❌ Нерабочие credentials:")
        for cred in failed_logins:
            print(f"  - {cred['username']}@{cred['host']} (db: {cred['db']})")

if __name__ == '__main__':
    main()
