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获取本机外网ip的方法
Apr 15 Python
python用10行代码实现对黄色图片的检测功能
Aug 10 Python
python实现实时监控文件的方法
Aug 26 Python
Python利用operator模块实现对象的多级排序详解
May 09 Python
Python将多份excel表格整理成一份表格
Jan 03 Python
Django框架实现的简单分页功能示例
Dec 04 Python
python协程之动态添加任务的方法
Feb 19 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
Sep 11 Python
win10环境下配置vscode python开发环境的教程详解
Oct 16 Python
Python中itertools的用法详解
Feb 07 Python
python实现126邮箱发送邮件
May 20 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
Nov 25 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
织梦模板标记简介
2007/03/11 PHP
php相当简单的分页类
2008/10/02 PHP
php 多文件上传的实现实例
2016/10/23 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
PHP实现八皇后算法
2019/05/06 PHP
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
nodejs连接mongodb数据库实现增删改查
2016/12/01 NodeJs
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
js实现简单的倒计时
2021/01/28 Javascript
python中的列表推导浅析
2014/04/26 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
json跨域调用python的方法详解
2017/01/11 Python
python简易实现任意位数的水仙花实例
2018/11/13 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
Python检测数据类型的方法总结
2019/05/20 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
通过HTML5规范搞定i、em、b、strong元素的区别
2017/03/04 HTML / CSS
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
加拿大时装零售商:Influence U
2018/12/22 全球购物
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
小石潭记导游词
2015/02/03 职场文书
毕业设计致谢语
2015/05/14 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
恋恋笔记本观后感
2015/06/16 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
详细聊聊浏览器是如何看闭包的
2021/11/11 Javascript
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python