import socket
def ret_banner(ip,port):
socket.setdefaulttimeout(2)//设置超时时间
s=socket.socket()
s.connect((ip,port))
banner=s.recv(1024)//接受返回后的1024个字节
return banner
def check_value(banner):
if b'FreeFloat Ftp Server' in banner:
print('[+] FreeFloat FTP Server is vulnerable')
elif b'ProFTPD 1.3.3c Server' in banner:
print('[+] ProFTPD 1.3.3c Server is vulnerable')
else:
print('[-] FTP Server is not vulnerable')
def main():
ipp='192.168.0.114'//为当前的开启FTP主机的ip地址
banner=ret_banner(ipp,21)
print('[-]' + ipp + ': '+ str(banner))
check_value(banner)
if __name__=='__main__':
main()
以上python代码用于对当前的开启FTP的主机的具体FTP服务的判断
Sys模块:访问由python解释器使用或维护的对象,其中包括标志、版本、整型数的最大尺寸、可用的模块、hook路径、标准错误/输入/输出的位置,以及调用解释器的命令行参数。
Os模块:允许程序独立的与操作系统环境、文件系统、用户数据库以及权限进行交互。
os.path.sys.args[0]表示当前函数输入的第一个参数
Zipfile的模块学习
、
AllowZip64:作为bool类型,如果为ture,允许使用zip64,使用不同的压缩格式,如bzip2、LZMA等。即使是压缩格式也可能根据要压缩的数据以不同的方式进行压缩。
关于optparse.OptionParser模块的官方文档
官方文档对该函数的解释是:将基于该类的所有实例的参数规范化【我自己会类比于makefile】
也就是将自己输入的参数按照设定好的命(add_option())令顺利进行执行。
以下是常出现的实例属性(instance attributes)
prog:{string}当前的程序名称(默认情况是os.path.bashname(sys.argv[0]))
Description:{string}关于当前程序的简短描述,主要用于帮助理解程序各参数的作用。【类似于使用手册】
rargs:{string}当前被解析的实际参数列表,只有parse_args()是activa状态才会被设置,当运行实参时就会被trimmed down。有利于callback options。
Largs:{string}执行参数解析时,如果有多余的参数就跳过,.如果allow_interparsed_args=false,这个列表就为空。values:{values}:the set od option values currently being accumulated.only set when parse_args() is active .also mainly for callbacks.
由于“rargs,largs ,values”使得optionparse多进程可能出现问题。
以下时加了optparse这个类方法进行自定义主机端口扫描
import optparse
import socket
def conn_scan(tHost,tPort):
try:
connSkt=socket.socket()
connSkt