利用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中类型关系和继承关系实例详解
May 25 Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 Python
python 格式化输出百分号的方法
Jan 20 Python
python批量下载抖音视频
Jun 17 Python
python并发编程多进程之守护进程原理解析
Aug 20 Python
python函数局部变量、全局变量、递归知识点总结
Nov 15 Python
利用OpenCV和Python实现查找图片差异
Dec 19 Python
Django 5种类型Session使用方法解析
Apr 29 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 Python
详解用 python-docx 创建浮动图片
Jan 24 Python
pytorch 中nn.Dropout的使用说明
May 20 Python
python数字图像处理之图像的批量处理
Jun 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可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
js charAt的使用示例
2014/02/18 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
使用javascript获取页面名称
2014/12/23 Javascript
JQuery和PHP结合实现动态进度条上传显示
2016/11/23 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
浅谈JavaScript 代码整洁之道
2018/10/23 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
微信小程序整个页面的自动适应布局的实现
2020/07/12 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
python使用matplotlib库生成随机漫步图
2018/08/27 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
python梯度下降算法的实现
2020/02/24 Python
Python restful框架接口开发实现
2020/04/13 Python
canvas使用注意点总结
2013/07/19 HTML / CSS
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
澳大利亚在线奢侈品时尚零售平台:Azura Runway
2021/01/13 全球购物
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
物业工作计划书
2014/01/10 职场文书
网上快餐厅创业计划书
2014/02/01 职场文书
阿德的梦教学反思
2014/02/06 职场文书
本科毕业生自荐信
2014/06/02 职场文书
公司介绍信范文
2015/01/31 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
MySQL基础快速入门知识总结(附思维导图)
2021/09/25 MySQL