利用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中的类与对象之描述符详解
Mar 27 Python
在Python中利用Pandas库处理大数据的简单介绍
Apr 07 Python
Python中使用hashlib模块处理算法的教程
Apr 28 Python
python爬虫框架talonspider简单介绍
Jun 09 Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 Python
Python叠加两幅栅格图像的实现方法
Jul 05 Python
Django 开发环境配置过程详解
Jul 18 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 Python
mac使用python识别图形验证码功能
Jan 10 Python
python 按钮点击关闭窗口的实现
Mar 04 Python
jupyter notebook中美观显示矩阵实例
Apr 17 Python
Python中json.load()和json.loads()有哪些区别
Jun 07 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编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
两款万能的php分页类
2015/11/12 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
2016/12/07 PHP
事件模型在各浏览器中存在差异
2010/10/20 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
webpack4.x CommonJS模块化浅析
2018/11/09 Javascript
关于layui 下拉列表的change事件详解
2019/09/20 Javascript
Python深入学习之对象的属性
2014/08/31 Python
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
python中argparse模块用法实例详解
2015/06/03 Python
简单谈谈python的反射机制
2016/06/28 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
基于Django框架利用Ajax实现点赞功能实例代码
2018/08/19 Python
python实现简单加密解密机制
2019/03/19 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
2020/01/04 Python
通过实例学习Python Excel操作
2020/01/06 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
aden + anais英国官网:美国婴儿贴身用品品牌
2019/09/08 全球购物
简历里的自我评价
2014/01/31 职场文书
大学校庆策划书
2014/01/31 职场文书
中式结婚主持词
2014/03/14 职场文书
公司投资建议书
2014/05/16 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
解决golang post文件时Content-Type出现的问题
2021/05/02 Golang
Python 如何解决稀疏矩阵运算
2021/05/26 Python
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
动画「进击的巨人」第86话播出感谢绘公开
2022/03/21 日漫