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 相关文章推荐
在Python3中使用asyncio库进行快速数据抓取的教程
Apr 02 Python
用Python编写一个基于终端的实现翻译的脚本
Apr 24 Python
python中input()与raw_input()的区别分析
Feb 27 Python
Python编码类型转换方法详解
Jul 01 Python
python编码总结(编码类型、格式、转码)
Jul 01 Python
Python实现备份MySQL数据库的方法示例
Jan 11 Python
Python利用正则表达式实现计算器算法思路解析
Apr 25 Python
python docx 中文字体设置的操作方法
May 08 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
python3从网络摄像机解析mjpeg http流的示例
Nov 13 Python
Python读取pdf表格写入excel的方法
Jan 22 Python
手残删除python之后的补救方法
Jun 26 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后台多用户权限组思路与实现程序代码分享
2012/02/13 PHP
CI框架中cookie的操作方法分析
2014/12/12 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
可简单避免的三个JS发布错误的详细介绍
2013/08/02 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
JavaScrpt判断一个数是否是质数的实例代码
2017/06/11 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
2019/08/01 Javascript
关于layui 弹出层一闪而过就消失的解决方法
2019/09/09 Javascript
Vue.js watch监视属性知识点总结
2019/11/11 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
python生成随机密码或随机字符串的方法
2015/07/03 Python
Python多进程同步简单实现代码
2016/04/27 Python
Python模拟登陆实现代码
2017/06/14 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
python对常见数据类型的遍历解析
2019/08/27 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
《雨点儿》教学反思
2014/04/14 职场文书
就业协议书范本
2014/10/08 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
承兑汇票延期证明
2015/06/23 职场文书
运动会班级前导词
2015/07/20 职场文书