迭代与文件输入/输出

迭代

我们可以使用for循环来遍历多个元素。如下,我们可以遍历IP地址从192.168.0.1到192。168.0.254的整个/24子网,使用for循环可以打印出整个子网。

for x in range(1,255):
    print("192.168.1"+str(x))

在这里插入图片描述
同样,如果我们想通过已知端口列表的方式来检查漏洞,只需遍历某个list中的所有元素即可,无需遍历范围内所有数字。

portList = [21,22,25,80,110]
for port in portList:
    print (port)

在这里插入图片描述
通过循环嵌套,我们可以打印出每个IP地址上的每个端口。

portList = [21,22,25,80,110]       
for x in range(1,255):
    for port in portList:
        print("[+] Checking 192.168.95."+str(x)+":"+str(port))

在这里插入图片描述
有了迭代的能力,我们可以对上篇的脚本进行更新。

  
import socket
def retBanner(ip,port):
    try:
        socket.setdefaulttimeout(2)
        s = socket.socket()
        s.connect((ip,port))
        banner = str(s.recv(1024))
        return str(banner)
    except:
        return
def checkVulns(banner):
    if "FTP" in banner:
        print("[+]The target prot OPEN")
    else:
        print("[-]The target prot not open")
    return
def main():
    portList = [21,25]
    for x in range(218,220):
        ip = '192.168.0.'+str(x)
        for port in portList:
            banner = retBanner(ip,port)		#通过循环嵌套来进行迭代
            if banner:
                print('[+]'+ip+':'+banner)
                checkVulns(banner)
if __name__ == '__main__':
        main()

在这里插入图片描述脚本执行还存在许多问题,但功能基本达到,能力加强后会优化。

文件输入/输出

在已知路径的文件夹下存在一个try.txt文档。可采用以下方法打开。

f=open("try.txt","r") 	#以只读模式打开
lines = f.readlines() 	#读取整篇,按行输出
for line in lines:
    print (line)			
f.close

在这里插入图片描述

f=open("try.txt","r") 
lines = f.read() 		#读取整篇,按行输出
for line in lines:
    print (line)	
f.close

在这里插入图片描述

f=open("try.txt","r") 
lines = f.readline() 		#读取首行,按字输出
for line in lines:
    print (line)
f.close
    

在这里插入图片描述

f=open("try.txt","r+")    #可读可写追加 
f.write("后海有树的院子夏代有工的玉此时此刻的云二十来岁的你")
lines = f.readlines()
for line in lines:
    print(line)
f.close
    

在这里插入图片描述

发布了37 篇原创文章 · 获赞 29 · 访问量 3704

猜你喜欢

转载自blog.csdn.net/weixin_44253823/article/details/103596321
今日推荐