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在hadoop上跑起来
Jan 27 Python
浅谈python import引入不同路径下的模块
Jul 11 Python
python文件拆分与重组实例
Dec 10 Python
在pycharm 中添加运行参数的操作方法
Jan 19 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
Python实现计算对象的内存大小示例
Jul 10 Python
python如何实现不可变字典inmutabledict
Jan 08 Python
python求前n个阶乘的和实例
Apr 02 Python
利用Python实现Excel的文件间的数据匹配功能
Jun 16 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
Python应用自动化部署工具Fabric原理及使用解析
Nov 30 Python
Python实现简单的猜单词
Jun 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判断数组元素中是否存在某个字符串的方法
2014/06/14 PHP
destoon二次开发入门示例
2014/06/20 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
面向对象的Javascript之三(封装和信息隐藏)
2012/01/27 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
js微信扫描二维码登录网站技术原理
2016/12/01 Javascript
详解Vue.js 2.0 如何使用axios
2017/04/21 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
jquery ztree实现右键收藏功能
2017/11/20 jQuery
Vue官网todoMVC示例代码
2018/01/29 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
vue中watch的用法汇总
2020/12/28 Vue.js
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
Python中用sleep()方法操作时间的教程
2015/05/22 Python
Python基于select实现的socket服务器
2016/04/13 Python
Python进阶之尾递归的用法实例
2018/01/31 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
女装和独特珠宝:Sundance Catalog
2018/09/19 全球购物
城市精细化管理实施方案
2014/03/04 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
心理健康教育培训研修感言
2015/11/18 职场文书
大学班干部竞选稿
2015/11/20 职场文书