python基于socket函数实现端口扫描


Posted in Python onMay 28, 2020

本文实例为大家分享了python基于socket实现端口扫描的具体代码,供大家参考,具体内容如下

自学Python一段时间,写个端口扫描器练练手。有什么不足之处,请见谅
这是基于socket函数对端口进行端口扫描

所以,首先要导入socket模块

from socket import *

其次,通过正侧表达式来判断输入的是不是IP地址

compile_ip = re.compile(  
    '^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$')

这里是核心代码

# -*- coding: utf-8 -*-
from socket import *
import re
from pip._vendor.distlib.compat import raw_input

def portscaner(host,port):         
  try:
    s = socket(AF_INET, SOCK_STREAM) # 实例化socket
    s.connect((host,port))    #对对应主机的对应端口发起连接
    print('主机%s的%s端口处于打开状态'%(host,port))
    s.close()   #关闭连接
    Export_Data(port)   #调用Export_Date
  except Exception as e:
    pass   #利用异常处理,对无法建立连接的端口pass掉


def ChecK_Host(host): #利用正侧表达式匹配host,判断是否符合IP地址的格式  并且输入不为空 
  compile_ip = re.compile(  
    '^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$')
  if compile_ip.match(host) and len(host)!=0:  #host符合IP地址的格式且不为空值返回True,否则返回False
    return True
  else:
    return False
    

def Export_Data(port):   #导出数据
  port = str(port)     #将port转换为字符串类型
  date = open('Active_Port.txt', 'a') #在文件尾部写入数据,Active_Port.txt,若不存在就新建文件
  date.write(port+'\n')      #将port并行写入文件
  date.close()    #不要忘了关闭文件



def main(host):   #主模块
  if ChecK_Host(host):   #通过ChecK_Host()函数return 的布尔值进行判断输入的IP地址是否有误
    for port in range(1,65536):  #这里可以改成1024
      portscaner(host, port)
    print('\n')
    print('已将结果导出到 Active_Port.txt')
  else:
    print('IP地址无错误,请重新输入!!!')



if __name__ == '__main__':
  print('<' * 12 + '单线程端口扫描器' + '>' * 12)
  host = input('请输入有效的目标IPv4地址:')
  main(host)

raw_input('Press Enter to exit...')    #当脚本执行完后,等待键入Enter回车才退出程序(可有可无,主要是为了封装成exe可执行文件后,执行完程序dos界面不自动退出)

测试结果

可见目的主机的21端口处于开放状态

python基于socket函数实现端口扫描

扫描结束后,将存活的端口写入到Active_Port.txt

python基于socket函数实现端口扫描

这里没有用到多线程,通过循环,一个一个端口进行连接,扫描速度非常慢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python备份文件以及mysql数据库的脚本代码
Jun 10 Python
python实现带声音的摩斯码翻译实现方法
May 20 Python
CentOS7.3编译安装Python3.6.2的方法
Jan 22 Python
python实现列表中最大最小值输出的示例
Jul 09 Python
PowerBI和Python关于数据分析的对比
Jul 11 Python
使用虚拟环境打包python为exe 文件的方法
Aug 29 Python
Python通过socketserver处理多个链接
Mar 18 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
python利用faker库批量生成测试数据
Oct 15 Python
python中复数的共轭复数知识点总结
Dec 06 Python
两行代码解决Jupyter Notebook中文不能显示的问题
Apr 24 Python
Python中and和or如何使用
May 28 #Python
Python如何安装第三方模块
May 28 #Python
python使用多线程+socket实现端口扫描
May 28 #Python
Python如何实现定时器功能
May 28 #Python
python实点云分割k-means(sklearn)详解
May 28 #Python
Python脚本实现监听服务器的思路代码详解
May 28 #Python
python中Ansible模块的Playbook的具体使用
May 28 #Python
You might like
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
ThinkPHP分页实例
2014/10/15 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
js实现快速分享功能(你的文章分享工具)
2013/06/25 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
JQuery select(下拉框)操作方法汇总
2015/04/15 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
Python学习小技巧之列表项的拼接
2017/05/20 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
2018/04/08 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
python 魔法函数实例及解析
2019/09/25 Python
python入门教程之基本算术运算符
2020/11/13 Python
详解Scrapy Redis入门实战
2020/11/18 Python
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
HTML5 MiranaVideo播放器 (代码开源)
2010/06/11 HTML / CSS
2016国培研修心得体会
2016/01/08 职场文书
《风筝》教学反思
2016/02/23 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
mysql timestamp比较查询遇到的坑及解决
2021/11/27 MySQL
Java无向树分析 实现最小高度树
2022/04/09 Javascript
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS