迭代与文件输入/输出

迭代

我们可以使用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
    

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值