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中break语句的用法
May 14 Python
Python的Django框架中的数据过滤功能
Jul 17 Python
浅谈Pandas中map, applymap and apply的区别
Apr 10 Python
Django中更改默认数据库为mysql的方法示例
Dec 05 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
Aug 12 Python
tensorboard实现同时显示训练曲线和测试曲线
Jan 21 Python
Python安装与卸载流程详细步骤(图解)
Feb 20 Python
详解Python3中的 input() 函数
Mar 18 Python
Python 改变数组类型为uint8的实现
Apr 09 Python
Python sqlalchemy时间戳及密码管理实现代码详解
Aug 01 Python
PyTorch中的拷贝与就地操作详解
Dec 09 Python
python读取并查看npz/npy文件数据以及数据显示方法
Apr 14 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中安装Apache2和PHP4的权威指南
2006/10/09 PHP
mayfish 数据入库验证代码
2010/04/30 PHP
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
繁简字转换功能
2006/07/19 Javascript
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
vue选项卡切换登录方式小案例
2019/09/27 Javascript
Openlayers3实现车辆轨迹回放功能
2020/09/29 Javascript
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
python判断windows隐藏文件的方法
2014/03/21 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
python批量创建指定名称的文件夹
2019/03/21 Python
django 微信网页授权认证api的步骤详解
2019/07/30 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
python入门教程之基本算术运算符
2020/11/13 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
HTML5 weui使用笔记
2019/11/21 HTML / CSS
波兰家居饰品和厨房配件网上商店:Maleomi
2020/12/15 全球购物
车间主管岗位职责
2013/11/14 职场文书
大专毕业生自我鉴定
2013/11/21 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python
使用Nginx的访问日志统计PV与UV
2022/05/06 Servers