扫描指定ip的指定端口,识别开放的端口所对应的服务

#!/usr/bin/env python
# -*- coding: utf-8 -*-from optparse import OptionParser
import time
import socket
import os
import reSIGNS = (# 协议 | 版本 | 关键字b'FTP|FTP|^220.*FTP',b'MySQL|MySQL|mysql_native_password',b'oracle-https|^220- ora',b'Telnet|Telnet|Telnet',b'Telnet|Telnet|^\r\n%connection closed by remote host!\x00$',b'VNC|VNC|^RFB',b'IMAP|IMAP|^\* OK.*?IMAP',b'POP|POP|^\+OK.*?',b'SMTP|SMTP|^220.*?SMTP',b'Kangle|Kangle|HTTP.*kangle',b'SMTP|SMTP|^554 SMTP',b'SSH|SSH|^SSH-',b'HTTPS|HTTPS|Location: https',b'HTTP|HTTP|HTTP/1.1',b'HTTP|HTTP|HTTP/1.0',
)#正则匹配方法,传入返回的banner信息,和端口号
def regex(response, port):text = ""if re.search(b'<title>502 Bad Gateway', response):proto = {"Service failed to access!!"}for pattern in SIGNS:pattern = pattern.split(b'|')if re.search(pattern[-1], response, re.IGNORECASE):proto = "[" + port + "]" + " open " + pattern[1].decode()breakelse:proto = "[" + port + "]" + " open " + "Unrecognized"print(proto)#发送请求
def request(ip, port):response = ''PROBE = 'GET / HTTP/1.0\r\n\r\n'sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.settimeout(10)result = sock.connect_ex((ip, int(port)))if result == 0:try:sock.sendall(PROBE.encode())response = sock.recv(256)if response:#带入到正则方法进行匹配,如果匹配到就打印regex(response, port)except ConnectionResetError:passelse:passsock.close()def main():parser = OptionParser("Usage:%prog -i <target host> ")  # 输出帮助信息parser.add_option('-i', type='string', dest='IP', help='specify target host')  # 获取ip地址参数parser.add_option('-p', type='string', dest='PORT', help='specify target host')  # 获取ip地址参数options, args = parser.parse_args()ip = options.IPport = options.PORTprint("Scan report for " + ip + "\n")for line in port.split(','):request(ip, line)time.sleep(0.2)print("\nScan finished!....\n")#219.150.184.218 104.21.27.222
if __name__ == "__main__":try:main()except KeyboardInterrupt:print("interrupted by user, killing all threads...")

执行结果:

扫描指定ip的指定端口,识别开放的端口所对应的服务相关推荐

  1. 简单的tcpdump抓包使用总结:抓取指定ip、指定网卡、指定端口的包

    1.今天由于需要抓包研究网络问题,所以研究了一下抓取指定ip.指定网卡.指定端口的包并且输入到文件中 2 tcpdump与Wireshark介绍 在网络问题的调试中,tcpdump应该说是一个必不可少 ...

  2. linux firawll防火墙设置白名单/指定ip访问指定端口

    ** linux firawll防火墙设置白名单/指定ip访问指定端口 firewall常用操作命令 1.查看防火墙状态 systemctl status firewalld 2.开启防火墙 syst ...

  3. 教你如何ping指定指定IP的指定端口

    教你如何ping指定指定IP的指定端口 https://www.imooc.com/article/15303  参考 2016.12.16 13:13 51389浏览 ping是简单的测试网络连接情 ...

  4. CentOS /Linux 开放80、8080端口或者开放某个端口

    CentOS /Linux 开放80.8080端口或者开放某个端口 方式一 开放端口 查看防火墙设置发现没开启80端口 iptables -L -n 修改端口配置文件 vim /etc/sysconf ...

  5. linux配置指定ip访问指定端口号,操作系统linux和dos linux下通过iptables只允许指定ip地址访问指定端...

    一篇 : linux下通过iptables只允许指定ip地址访问指定端口的设置方法 首先,清除所有预设置 iptables -F#清除预设表filter中的所有规则链的规则 iptables -X#清 ...

  6. linux 开放连续端口,CentOS/Linux 开放80、8080端口或者开放某个端口

    iptables是linux系统自带的防火墙,功能强大,学习起来需要一段时间,下面是一些习iptables的时候的记录.如果iptables不熟悉的话可以用apf,是一款基于iptables的防火墙, ...

  7. mysql数据开启远程登录,修改端口,开放防火墙端口

    开启远程登录: 方法I 登录mysql(我是用远程控制Linux服务器,相当于在服务器本机登录mysql了),然后输入: mysql>grant all privileges on *.* to ...

  8. 1521端口 mysql_Linux开放1521端口允许网络连接Oracle Listener

    症状: 1. TCP/IP连接是通的.可以用ping 命令测试. 2. 服务器上Oracle Listener已经启动.   lsnrctl status  查看listener状态   lsnrct ...

  9. 如何高效实现扫描局域网IP、主机名、MAC和端口

    近几年工作经常使用RFID识读器,智能家居网关,温湿度传感器.串口服务器.视频编码器等,一般是有串口和网口,由于现场原因一般较少使用串口,大多使用网口.连接方法是IP地址和端口,有的设备带搜索软件,有 ...

  10. linux端口扫描脚本ip段,shell脚本结合iptables防端口扫描的实现

    网上有现在的防端口工具,如psad.portsentry,但觉得配置有点麻烦,且服务器不想再装一个额外的软件.所以自己就写了个shell脚本实现这个功能.基本思路是:使用iptables的recent ...

最新文章

  1. 鍵盤彈出,頁面佈局被推上去了.....
  2. Java游戏地下城_地下城与勇士DNF-鬼剑士
  3. 使用 Dapr 缩短软件开发周期
  4. background图片不显示_一种解决Retina屏幕1px边框显示问题的方案
  5. 使用 angular directive 和 json 数据的 D3 带标签 donut chart示例
  6. 导弹如何自动追踪目标?这其实是个数学问题
  7. java restrictions_Restrictions----用法
  8. 手把手教你运用深度学习构建视频人脸识别模型(Python实现)
  9. 最大熵模的理解与最大熵模型逻辑回归相似转换条件
  10. [集训队作业2018]喂鸽子
  11. flash builder 找不到所需要的AdobeFlashPlayer调试器版本
  12. 第四周总结(css,bootstrap)
  13. 猫,路由器,宽带(光纤,ADSL),带宽的区别和联系
  14. 在Ansible中缓存事实
  15. 冰点还原精灵7.0密码忘记的解决方案
  16. 【C语言】冷知识——前置++和后置++
  17. c语言定义用户标识符32个,c语言用户标识符是什么
  18. BZOJ3677: [Apio2014]连珠线
  19. 使用 PhpStorm 来开发和 Debug Laravel Sail 项目
  20. 【JAVA多线程】如何解决一个生产者与消费者问题

热门文章

  1. 英语字帖电子版可打印_一年级英语字母专项练习:含26个英文字母书写教学 可下载电子版...
  2. php正则表达式小括號,php使用正則表達式提取字符串中尖括號、小括號、中括號、大括號中的字符串...
  3. 添加mysql.h头文件
  4. c++ 银行管理系统
  5. java手机翻译,使用JUniversal翻译Android项目
  6. qt控制程序打开记事本_Qt 记事本程序
  7. python打包不能在其他电脑打开_pyinstaller打包python+opencv 无法在别人电脑上正常运行 问题所在:opencv_ffmpeg341_64.dll...
  8. cefsharp winform 页面里的单击事件不触发_事件详解C 键盘事件及事件流
  9. 全国二级c语言公共基础知识,全国计算机二级C语言及公共基础知识复习资料
  10. 单片机C语言控制16*16LED显示屏,基于单片机的pwm控制16*16led点阵亮度调节怎么做啊,...