29行的代码是什么意思,我按照书上的代码打出来之后它好像不会用每个端口连接


import socket
def retBanner(ip,port):
    try:
        socket.setdefaulttimeout(0.04)
        s=socket.socket()
        s.connect((ip,port))
        ans = s.recv(1024)
        return ans
    except:
        return 
 
def checkVulns(ans):
    if("FreeFloat FTP Server (Version 1.00)"in ans):
     print("[+] FreeFloat FTP Server,Vulnerable")
    elif("3Com 3CDaemon FTP Server (Version 2.00)"in ans):
     print("[+] 3Com 3CDaemon FTP Server,Vulnerable")
    elif("Ability Server 2.34"in ans):
     print("[+] Ability Server,Vulnerable")
    elif("Sami FTP Server 2.0.2"in ans):
     print("[+] 3Com 3CDaemon FTP Server,Vulnerable")
    else:
     print("[+] Server is not Vulnerable | "+ans)
    return
 
def main():
    portList=[21,22,25,80,110,443]
    for x in range(1,225):
        ip='192.168.95.'+str(x)
        for port in portList:
            ans = retBanner(ip,port)
            if ans:
                print('[+]'+ip+':'+ans)
                checkVulns(ans)
 
if __name__=='__main__':
    main()
 
 
 

ip='192.168.95.'+str(x)
就是拼接字符串, 上个一层是循环, x 从1 到 224

意思就是逐个生成 192.168.95.1 到 192.168.95.224 这些IP 地址