2017-10-28 69 views
0

我的目标 - 我有以下情况。当我用netcat/telnet连接到一个端口时,发生以下“对话”:从服务器接收第二个答案通过Python套接字

服务器:给我你的pincode。
客户:******
服务器:错误(或好)

出于安全测试目的我想脚本此任务。我已经通过Bash成功完成了这个任务,但我也会尝试用python来完成。

我的脚本

import socket 
for i in range(1000,9999): 
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    s.connect(('localhost',31337)) 
    s.send (i)    # send pincode to server 
    answerfromserver = s.recv(1024)  
    print answerfromserver 
    s.close 

我的问题&问题 我只收到第一个答案从服务器(“给我你的PIN码”),我不能接受第二个答案(如果PIN码是正确的/错误的)。谁能帮我完成这件事?

+0

因为你reveive它 –

+0

谢谢你之前关闭套接字。但是我怎样才能把它和for循环结合起来呢。我如何开发脚本以在接下来的循环迭代之前接收(recv())两次? – sahdjksajkd

+0

好的等待我正在写一个完整的答案 –

回答

0

试试这个,注意到了,当第二个答案是好的,我不关闭套接字,让你做你的东西:

import socket 

for i in range(1000, 9999): 
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    s.connect(('localhost', 31337)) 
    answerfromserver = None 
    while True: 
     answerfromserver = s.recv(1024) 
     if answerfromserver: 
      if answerfromserver == "give me your pincode": 
       print answerfromserver 
       s.send(i) 
      else: 
       print i, answerfromserver 
       break 
    if answerfromserver == 'Good': 
     # stuff 
     break 
    else: 
     s.close() 
+0

谢谢,它挂起了“answerfromserver = s.recv(1024)”这一段时间的第二次迭代,等待来自服务器的Good/Bad pincode答案。由于某些原因,我无法使用Python工作。这不是服务器问题,因为它适用于netcat和bash脚本 – sahdjksajkd

相关问题