利用Python脚本写端口扫描器socket,python-nmap


Posted in Python onJuly 23, 2022

前言:

一个用python写的简单的端口扫描器,python环境为 3.7.0,windows系统

Socket模块编写

扫描给定主机是否开放了指定的端口

TCP连接扫描是利用TCP的三次握手来确定主机的端口是否开放。确定主机端口开放之后,给端口发送消息,接收端口返回的消息,然后判断该端口运行的服务。

使用时,-H 参数可以提供主机的域名或者ip地址,-p/-P 写要扫描的端口,多个端口用逗号分隔

# -*- coding: utf-8 -*-
import optparse
from socket import *
import threading
threadLock=threading.Lock() #实例化threadLock对象
def connScan(Host,Port):
try:
conn=socket(AF_INET,SOCK_STREAM)
conn.connect((Host,Port))
conn.send('test message'.encode("utf-8")) #发送测试信息给端口
results=conn.recv(100) #接收主机返回的信息
threadLock.acquire() #加锁
print('[+]%d/tcp open'% Port)
print('[+] '+results.decode("utf-8"))
conn.close()
except Exception as e:
threadLock.acquire()
print(e)
print('[-]%d/tcp closed'% Port)
finally:
threadLock.release() #释放锁
conn.close()
def portScan(Host,Ports):
try:
IP=gethostbyname(Host) ##获得对应主机的ip地址
except:
print("[-] Cannot resolve '%s':Unknown host" %Host)
return
try:
Name=gethostbyaddr(Host) ##获得ip对应主机的信息
print ("\n[+] Scan Results for:"+Name[0])
except:
print ("\n[+] Scan Results for:"+IP)
setdefaulttimeout(1)
for Port in Ports:
print ("Scanning port "+Port)
connScan(Host,int(Port))
def main():
usage="usage %prog -H <target host> -p/-P <target ports>"
parser=optparse.OptionParser(usage) #创建对象实例
parser.add_option('-H',dest='Host',type='string',help='target host') ##需要的命令行参数
parser.add_option('-P','-p',dest='Ports',type='string',help='target ports')
(options,args)=parser.parse_args()
Host=options.Host
Ports=str(options.Ports).split(',')
if (Host==None)|(Ports==None): ##如果主机和端口都是空的话
print(parser.usage)
exit(0)
portScan(Host,Ports)
if __name__=='__main__':
main()

利用Python脚本写端口扫描器socket,python-nmap

python-nmap模块编写 

我们还可以通过调用nmap进行端口扫描。

扫描给定ip或给定网段内指定端口是否开放

-H 参数可以扫描一个ip地址也可以扫描一个网段,-p 只能指定一个端口

# -*- coding: utf-8 -*-
import nmap
import optparse

def Test(Hosts,port):
nm=nmap.PortScanner()
nm.scan(Hosts,port)
port_int=int(port) #将端口从字符串转化为int类型的
for t in nm.all_hosts():
if nm[t].has_tcp(port_int): #如果445端口提供了TCP协议
state=nm[t]['tcp'][port_int]['state'] #判断该TCP 445 端口的状态
if state=='open':
print ('[+]Found Target Host:'+t)
return
def main():
usage="usage %prog -H <target host> -p/-P <target port>"
parser=optparse.OptionParser(usage) #创建对象实例
parser.add_option('-H',dest='Host',type='string',help='target host') ##需要的命令行参数
parser.add_option('-P','-p',dest='Port',type='string',help='target ports')
(options,args)=parser.parse_args()
Hosts=options.Host
Port=options.Port
if (Hosts==None)|(Port==None): #如果主机和端口都是空的话
print(parser.usage)
exit(0) #退出
else:
Test(Hosts,Port)
if __name__=='__main__':
main()

利用Python脚本写端口扫描器socket,python-nmap

到此这篇关于利用Python脚本写端口扫描器socket,python-nmap的文章就介绍到这了,更多相关Python socket,python-nmap内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用python在校内发人人网状态(人人网看状态)
Feb 19 Python
用Python实现一个简单的线程池
Apr 07 Python
python使用wxpython开发简单记事本的方法
May 20 Python
Python实现分割文件及合并文件的方法
Jul 10 Python
Python实现获取磁盘剩余空间的2种方法
Jun 07 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
May 30 Python
在pycharm上mongodb配置及可视化设置方法
Nov 30 Python
python使用PIL模块获取图片像素点的方法
Jan 08 Python
PyQt5显示GIF图片的方法
Jun 17 Python
Python利用pandas处理Excel数据的应用详解
Jun 18 Python
详解10个可以快速用Python进行数据分析的小技巧
Jun 24 Python
Django model update的多种用法介绍
Mar 28 Python
Python+pyaudio实现音频控制示例详解
Jul 23 #Python
python高温预警数据获取实例
Jul 23 #Python
Python中的socket网络模块介绍
Jul 23 #Python
python解析照片拍摄时间进行图片整理
Jul 23 #Python
Python docx库删除复制paragraph及行高设置图片插入示例
Jul 23 #Python
Python 避免字典和元组的多重嵌套问题
Jul 15 #Python
Pytorch中expand()的使用(扩展某个维度)
Jul 15 #Python
You might like
我整理的PHP 7.0主要新特性
2016/01/07 PHP
验证坐标在某坐标区域内php代码
2016/10/08 PHP
javascript firefox兼容ie的dom方法脚本
2008/05/18 Javascript
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
js格式化时间小结
2014/11/03 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
2016/06/01 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
原生JS轮播图插件
2017/02/09 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
2019/11/07 Javascript
Python找出list中最常出现元素的方法
2016/06/14 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
Python模块的加载讲解
2019/01/15 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
Django中的AutoField字段使用
2020/05/18 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
荟萃全球保健品:维他购
2018/05/09 全球购物
秋季运动会加油稿200字
2014/01/11 职场文书
大学生全国两会报告感想
2014/03/17 职场文书
监护人证明
2015/06/19 职场文书
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript