socket无法与netcat bash通信

时间:2016-03-07 18:30:33

标签: python sockets netcat

在vm上我使用了命令:nc -l -p 8221 -e / bin / bash并制作了一个python3脚本:

def netcat():
    print ("starting connection")    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(("192.168.1.60", 8221))
    while True:
        user = input("what to send?: ")
        s.sendall(bytes(user, "utf-8"))
        time.sleep(5)
        word = "bob"
        data = s.recv(4096)
        if data == b"":
            pass
        else:
            data = data.decode("utf-8")
            print ("Received:", repr(data))
    print ("Connection closed.")
    s.shutdown(socket.SHUT_WR)
    s.close()
netcat()

这个脚本不起作用。通过不工作我的意思是当我用我的python脚本运行命令时,让我们说" pwd",它只是加载但从不运行。 当,而不是运行python脚本我将运行nc 192.168.1.60 8221,它会工作正常。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

来自input()的{​​{3}}:

  

然后该函数从输入中读取一行,将其转换为字符串   (剥离尾随换行符),然后返回。

但是Bash在规范模式下运行,并且在新线路到达之前不会处理输入。这不会发生,导致recv永远阻止。

+ '\n'之后添加user = input("what to send?: ")来修复它。