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中使用md5sum检查目录中相同文件代码分享
Feb 02 Python
在Django的模型中添加自定义方法的示例
Jul 21 Python
Python实现各种排序算法的代码示例总结
Dec 11 Python
剖析Python的Twisted框架的核心特性
May 25 Python
详解python 字符串和日期之间转换 StringAndDate
May 04 Python
numpy中实现二维数组按照某列、某行排序的方法
Apr 04 Python
Python 通过调用接口获取公交信息的实例
Dec 17 Python
scrapy-redis的安装部署步骤讲解
Feb 27 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
Feb 29 Python
Python读写csv文件流程及异常解决
Oct 20 Python
用python对oracle进行简单性能测试
Dec 05 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中对用户身份认证实现两种方法
2011/06/04 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
PHP页面输出搜索后跳转下一页的处理方法
2016/09/30 PHP
Javascript this指针
2009/07/30 Javascript
JS跨域总结
2012/08/30 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
vue路由切换之淡入淡出的简单实现
2019/10/31 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
python中import reload __import__的区别详解
2017/10/16 Python
python tornado微信开发入门代码
2018/08/24 Python
python中的逆序遍历实例
2019/12/25 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
Python网页解析器使用实例详解
2020/05/30 Python
Python colormap库的安装和使用详情
2020/10/06 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
PyCharm+Miniconda3安装配置教程详解
2021/02/16 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
美国钻石商店:Zales
2016/11/20 全球购物
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
路政管理专业推荐信
2013/11/11 职场文书
自荐信怎么写呢?
2013/12/09 职场文书
政审证明材料
2015/06/19 职场文书
实用求职信模板范文
2019/05/13 职场文书
web前端之css水平居中代码解析
2021/05/20 HTML / CSS
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题
Win2008系统搭建DHCP服务器
2022/06/25 Servers