利用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网络编程学习笔记(10):webpy框架
Jun 09 Python
python批量同步web服务器代码核心程序
Sep 01 Python
python解析xml文件操作实例
Oct 05 Python
基于Python实现通过微信搜索功能查看谁把你删除了
Jan 27 Python
Python简单操作sqlite3的方法示例
Mar 22 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
浅谈pycharm下找不到sqlalchemy的问题
Dec 03 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
Jan 29 Python
Python基础之函数的定义与使用示例
Mar 23 Python
详解python解压压缩包的五种方法
Jul 05 Python
使用python切片实现二维数组复制示例
Nov 26 Python
Python数据可视化:饼状图的实例讲解
Dec 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
SONY SRF-M100的电路分析
2021/03/02 无线电
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
解析thinkphp的左右值无限分类
2013/06/20 PHP
php文件读取方法实例分析
2015/06/20 PHP
js文件Cookie存取值示例代码
2014/02/20 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
详解基于vue-cli3快速发布一个fullpage组件
2019/03/08 Javascript
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
详解Python的Django框架中的templates设置
2015/05/11 Python
python实现的文件同步服务器实例
2015/06/02 Python
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
TensorFlow实现模型评估
2018/09/07 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
2020/04/25 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
使用canvas压缩图片上传的方法示例
2020/02/07 HTML / CSS
安全生产检讨书
2014/01/21 职场文书
期末学生评语大全
2014/04/24 职场文书
金融专业毕业生自荐信
2014/06/26 职场文书
企业计划生育责任书
2015/05/09 职场文书
无保留意见审计报告
2015/06/05 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
2022年四月新番
2022/03/15 日漫
GoFrame基于性能测试得知grpool使用场景
2022/06/21 Golang
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS