#! /usr/bin/python
-*-coding: UTF-8 -*-
import socket
import sys
判断端口是否开放
def is_open(ip, port):
s = socket.socket()
try:
s.connect(ip, port)
return True
except:
return False
默认扫描的函数
def scan(ip, portlist):
for x in portlist:
if is_open(ip, x):
print(“%s的主机 %s 端口 open”%(ip,x))
else:
print(“%s的主机 %s 端口 close”%(ip,x))
pass
#范围扫描
def rscan(ip,r,e):
for x in range(int®,int(e)):
if is_open(ip,x):
print(“%s的主机 %s 端口 open”%(ip,x))
else:
print(“%s的主机 %s 端口 close”%(ip,x))
pass
def main():
defaultport = [‘145’,‘139’,‘445’,‘1433’,‘3306’,‘3389’,‘6379’,‘80’,‘8080’,‘7001’,‘22’,‘21’,‘23’,‘25’]
#寻求帮助或者看版本
if len(sys.argv)==2:
if sys.argv[1]‘–help’ or sys.argv[1]‘-h’:
print(“python test1.py [ip] ----默认扫描”)
print(“python test1.py [ip] [port:80,81,82或者port:80-90] ----自定义端口扫描”)
elif sys.argv[1]‘–version’ or sys.argv[1]‘-v’:
print(“程序版本为1.0”)
sys.exit()
else:
#若使用默认扫描:python test1.py 127.0.0.1
scan(sys.argv[1],defaultport)
#参数有逗号的情况
elif len(sys.argv)==3:
if ‘,’ in sys.argv[2]:
port_1 = sys.argv[2]
port_1 = port_1.split(‘,’)
a = []
for x in port_1:
a.append(int(x))
scan(sys.argv[1],a)
#带‘-’范围扫描的情况
elif ‘-’ in sys.argv[2]:
rport = sys.argv[2]
rport = rport.split(‘-’)
r = rport[0]
e = rport[1]
rscan(sys.argv[1],r,e)
pass
if name == ‘__main__’:
main()
上述代码可以实现一些简易扫描器功能,但是比较麻烦和冗余
所以我们也可以考虑使用optparse
optparse是Python标准库中的一个模块,用于在命令行界面中解析命令行选项和参数。它提供了一种轻松创建符合Unix/Posix命令行界面标准的命令行选项。
optparse模块可以使命令行工具更加易用和灵活,同时还可以提高程序员的效率。
以下是一个简单的optparse的例子:
import optparse
parser = optparse.OptionParser()
parser.add_option(“-f”, “–file”, dest=“filename”,
help=“read data from FILENAME”)
parser.add_option(“-q”, “–quiet”,
action=“store_false”, dest=“verbose”, default=True,
help=“don’t print status messages to stdout”)
(options, args) = parser.parse_args()
if options.verbose:
print(“reading data from”, options.filename)
使用optparse模块,我们可以将命令行中的选项和参数解析为相应的Python变量,并在程序中进行使用。
对于扫描器的实现,我们可以将扫描器所需的选项和参数作为optparse模块中的选项和参数,然后在程序中进行相应的处理。例如,我们可以添加以下选项:
-h, --help 显示帮助信息
-t, --target 指定扫描目标IP地址或网段
-p, --port 指定扫描目标端口号
-s, --speed 指定扫描速度
然后在程序中通过optparse模块解析相应的选项和参数,并进行扫描操作。
测试实例
#! /usr/bin/python
-*-coding: UTF-8 -*-
from optparse import OptionParser
def main():
usage = “python xxx.py -f -i
” #帮助parse = OptionParser(usage=usage)#添加usage方法,xx.py -h 就会出现上面的帮助
parse.add_option(“-f”,“–file”,type=“string”,dest=“filename”,help=“your filename here”)
parse.add_option(“-i”,“–ipaddress”,type=“string”,dest=“ipadd”,help=“your ip address here”)
(option,args) = parse.parse_args()#获取选项和参数进行赋值
print(option.filename)
print(option.ipadd)
pass
if name==‘__main__’:
main()
运行结果简单测试:
实例
#! /usr/bin/python
-*-coding: UTF-8 -*-
import socket
from optparse import OptionParser
#判断端口是否开放
def is_open(ip,port):
s = socket.socket
try:
s.connect(ip,port)
return True
except:
return False
pass
#默认扫描函数
def scan(ip,portlist):
for x in portlist:
if is_open(ip,x):
print(“%s的主机 %s 端口 open”%(ip,x))
else:
print(“%s的主机 %s 端口 close”%(ip,x))
pass
#范围扫描函数
def rscan(ip,s,e):
for x in range(int(s),int(e)):
if is_open(ip,x):
print(“%s的主机 %s 端口 open”%(ip,x))
else:
print(“%s的主机 %s 端口 close” % (ip, x))
pass
def main():
usage = “python test2.py -i -p 或者 python test2.py -i -p all 或者 python test2.py -i -p defaultt “#帮助
parser = OptionParser(usage=usage)#添加usage方法,python -h 就会出现上面的帮助
parser.add_option(”-p”,“–port”,type=“string”,dest=“port”,help=“your target port here”)
parser.add_option(“-i”,“–ip”,type=“string”,dest=“ipaddress”,help=“your target ip here”)
(option,args) = parser.parse_args()
ip = option.ipaddress
port = option.port
defaultport = [‘135’,‘139’,‘445’,‘1433’,‘3306’,‘3389’,‘6379’,‘7001’]
if ‘,’ in port:#xxxx -i 127.0.0.1 -p 81,82
port = port.split(‘,’)
p1 = []
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算