使用Python编写简单的端口扫描程序
文章目录
- 实现功能
- 具体用法
- 运用的模块
- 最终代码
- 结果展示
实现功能
端口扫描
具体用法
我们这里是模仿nmap扫描工具那种用法,在执行程序的时候要加入参数来调用,如图所示:
运用的模块
sys(用来接收追加的参数)、socket(用来判断端口是否开放)、re(使用正则来提取端口列表)
最终代码
import socket
import sys
import report_list = [22, 80, 3389, 21, 3306, 1521, 1433] # 常用端口def open_test(ip, port):# 用socket连接探测端口是否开放s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)try:s.connect((ip, port))return Trueexcept:return Falsedef scan_port(ip):# 调用上面的方法来返回是否开放if len(port_list) > 2:for i in port_list:if open_test(ip, int(i)):print('%s host %s is open' % (ip, i))else:print('%s host %s is close' % (ip, i))else:if open_test(ip, port_list):print('%s host %s is open' % (ip, port_list))else:print('%s host %s is close' % (ip, port_list))try:# 捕获异常,CTRL+C 时打印 程序终止 而不是报错if len(sys.argv) == 1:# 打印使用帮助print('''This program prints files to the standard output.Any number of files can be specified.Options include: python scanport.py ip portspython scanport.py 127.0.0.1 扫描默认端口python scanport.py 127.0.0.1 22,80,21,23... python scanport.py 127.0.0.1 80-89 python scanport.py 127.0.0.1 21,23,80-89 python scanport.py 127.0.0.1 21,23,80-89,135 python scanport.py 127.0.0.1 80-89,135 python scanport.py 127.0.0.1 all ''')elif len(sys.argv) == 2:# 扫描默认端口scan_port(sys.argv[1])elif len(sys.argv) == 3:if ',' in sys.argv[2]:if '-' in sys.argv[2]:# 如果同时包含,和- 用以下方法筛选出端口port_list = sys.argv[2].split(',')# print(port_list)length = len(port_list)for i in range(0, length):if '-' in port_list[i]:p = re.findall('\\d\\d', port_list[i]) # 使用正则将开始和末尾的元素拿出来# print(p)port_list.remove(port_list[i])# print(port_list)for j in range(int(p[0]), int(p[1])+1):port_list.append(str(j)) # 转换成字符串加入进列表中# print(port_list)scan_port(sys.argv[1])else:# 第二种方式port_list = sys.argv[2].split(',')scan_port(sys.argv[1])elif '-' in sys.argv[2]:# 第三种方式temp = sys.argv[2].split('-')port_list = range(int(temp[0]), int(temp[1])+1)scan_port(sys.argv[1])elif sys.argv[2] == 'all':# 第四种方式port_list = range(1, 65535)scan_port(sys.argv[1])else:port_list = sys.argv[2]scan_port(sys.argv[1])
except KeyboardInterrupt:print('Program end!')
结果展示
扫描默认端口:
扫描自定义端口:
扫描固定范围端口:
也可以混合一起使用:
扫描所有端口(1-65535):
这样简单的端口扫描程序就写好了,欢迎各位师傅们一起交流~
使用Python编写简单的端口扫描程序相关推荐
- python调用扫描仪_使用Python编写简单的端口扫描器的实例分享
单线程实现单线程实现道理比较简单,这里尝试Soket连接3389,连接成功说明端口开放,否则说明没有开远程服务.随便修改了一下就ok了,代码如下,最终得到自己的IP地址. #!/usr/bin/env ...
- linux编写一个简单的端口扫描程序,小弟我在linux下写了个简单的多线程端口扫描程序,运行时出现有关问题,请问一下(2)...
当前位置:我的异常网» Linux/Unix » 小弟我在linux下写了个简单的多线程端口扫描程序, 小弟我在linux下写了个简单的多线程端口扫描程序,运行时出现有关问题,请问一下(2) www. ...
- python写端口扫描器_使用Python编写简单的端口扫描器的实例分享
#!/usr/bin/env python import socket if __name__=='__main__': port=3389 s=socket.socket() for cnt in ...
- 简单python代码讲解-使用Python编写简单的画图板程序的示例教程
从这次开始,我会由简单到困难(其实也不会困难到哪里去)讲几个例程,每一个例程都是我自己写(或者修改,那样的话我会提供原始出处)的,都具有一定的操作性和娱乐性.例程中汇尽量覆盖到以前所讲的pygame中 ...
- Python编写简单的剪刀石头布小程序
一.程序要求 (1)提示用户选择石头剪刀布 (2)计算机随机选择石头剪刀布 (3)判断用户输赢 (4)打印结果 二.代码实现 import random# 电脑人随机出拳 computer = ran ...
- TCP/IP网络程序编程——端口扫描程序(TCP)
端口扫描介绍 端口扫描可以收集目的主机的提供服务端口的信息,可以对于目的主机的信息进行收集. 端口扫描的程序每次会向目的主机特定端口发送一条请求,如果请求得到回应则可以判断是否本端口在对外开放,通过这 ...
- python做好的程序如何变成小程序-使用python编写简单的小程序编译成exe跑在win10上...
每天的工作其实很无聊,早知道应该去IT公司闯荡的.最近的工作内容是每逢一个整点,从早7点到晚11点,去查一次客流数据,整理到表格中,上交给素未蒙面的上线,由他呈交领导查阅. 人的精力毕竟是有限的,所以 ...
- python程序-30分钟学会用Python编写简单程序
原标题:30分钟学会用Python编写简单程序 参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方 ...
- python识别ppt文件格式 ——(专栏:基于python编写简单office阅卷程序③)
● 研二在读学生,非工科非计算机专业,故代码简陋初级勿喷,本文仅为记录和快乐分享. ○ 感谢肯定,感谢点赞收藏分享,转载请注明本页出处即可. ____Ⓙ即刻@王昭没有君 本文仅为笔者摸索总结-欢迎订正 ...
- python写软件实例-30分钟学会用Python编写简单程序
原标题:30分钟学会用Python编写简单程序 参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤. 了解遵循输入.处理.输出(IPO)模式的程序,并能够以简单的方 ...
最新文章
- 复习计算机网络day2
- QIIME 2用户文档. 13训练特征分类器Training feature classifiers(2019.7)
- 当了十年 IT 程序员,我转型做自动驾驶开发的这五年”_《新程序员》编辑部的博客-CSDN博客
- 机器学习博士自曝:实验室「阉割」我的创造力,劝你别读
- 最简单的基于FFmpeg的AVDevice例子(屏幕录制)
- 成功,要“借力”,不要“尽力”(深刻!)
- Windows7+VS2012下OpenGL 4的环境配置
- python中级水平_python 初级/中级/高级/核心
- Keba常用硬件模块
- python挖矿脚本_利用公共WiFi挖矿的Python脚本(注:仅作研究使用)
- 自己做的小游戏希望大家能喜欢
- oracle 简版客户端instantclient使用 oledb ODAC组件使用
- 工具推荐——Snipaste
- 51驱动DS1302制作电子时钟1602显示
- 【涂鸦物联网足迹】涂鸦云平台接口列表—万能红外遥控器
- jquery中e.target是什么意思
- lincx Shell脚本编程之字符串的截取,替换,按条件掐头去尾
- IDea 工具debug模式详细说明
- 订单中心探索业务系统数据预置助力快交付之路
- 《LaneAF:Robust Multi-Lane Detection with Affinity Fields》论文笔记