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实现提取百度搜索结果的方法
May 19 Python
Python安装第三方库的3种方法
Jun 21 Python
Python入门_学会创建并调用函数的方法
May 16 Python
Python 模拟员工信息数据库操作的实例
Oct 23 Python
Django学习笔记之ORM基础教程
Mar 27 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
May 18 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
Python 新建文件夹与复制文件夹内所有内容的方法
Oct 27 Python
python调用其他文件函数或类的示例
Jul 16 Python
Django实现WebSSH操作物理机或虚拟机的方法
Nov 06 Python
Python中使用filter过滤列表的一个小技巧分享
May 02 Python
python ssh 执行shell命令的示例
Sep 29 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判断网页是否gzip压缩
2013/06/25 PHP
PHP实现的json类实例
2015/07/28 PHP
php自定义分页类完整实例
2015/12/25 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
PHP类的自动加载机制实现方法分析
2019/01/10 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
javascript concat数组累加 示例
2009/09/03 Javascript
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
2013/09/29 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
2014/11/28 Javascript
微信支付 JS API支付接口详解
2016/07/11 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
python 图片验证码代码
2008/12/07 Python
python实现随机密码字典生成器示例
2014/04/09 Python
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
Python中使用glob和rmtree删除目录子目录及所有文件的例子
2014/11/21 Python
python操作toml文件的示例代码
2020/11/27 Python
数据库专业英语
2012/11/30 面试题
焊接专业毕业生求职信
2013/10/01 职场文书
市三好学生主要事迹
2014/01/28 职场文书
留学推荐信范文
2014/05/10 职场文书
校园安全标语
2014/06/07 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
python中的被动信息搜集
2021/04/29 Python
Java SSM配置文件案例详解
2021/08/30 Java/Android
Java死锁的排查
2022/05/11 Java/Android