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的动态重新封装的教程
Apr 11 Python
python方向键控制上下左右代码
Jan 20 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
基于Python在MacOS上安装robotframework-ride
Dec 28 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
Feb 26 Python
python多进程并行代码实例
Sep 30 Python
Python龙贝格法求积分实例
Feb 29 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
Apr 16 Python
使用python采集Excel表中某一格数据
May 14 Python
Python基础之hashlib模块详解
May 06 Python
Python下opencv使用hough变换检测直线与圆
Jun 18 Python
pytorch实现加载保存查看checkpoint文件
Jul 15 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
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
php基于curl主动推送最新内容给百度收录的方法
2016/10/14 PHP
js调用flash的效果代码
2008/04/26 Javascript
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
Node.js编写组件的三种实现方式
2016/02/25 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
预防网页挂马的方法总结
2016/11/03 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
python 域名分析工具实现代码
2009/07/15 Python
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
基于python实现从尾到头打印链表
2019/11/02 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
物理力学求职信
2014/02/18 职场文书
培训班主持词
2014/03/28 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
飞屋环游记观后感
2015/06/08 职场文书
国庆节新闻稿
2015/07/17 职场文书
优质护理心得体会
2016/01/22 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书
python ansible自动化运维工具执行流程
2021/06/24 Python
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android
Python内置数据结构列表与元组示例详解
2021/08/04 Python
MySQL分布式恢复进阶
2022/07/23 MySQL