利用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 20 Python
编写简单的Python程序来判断文本的语种
Apr 07 Python
实例解析Python的Twisted框架中Deferred对象的用法
May 25 Python
python之PyMongo使用总结
May 26 Python
Python字符串格式化的方法(两种)
Sep 19 Python
详解python实现线程安全的单例模式
Mar 05 Python
python Opencv将图片转为字符画
Feb 19 Python
Python facenet进行人脸识别测试过程解析
Aug 16 Python
python3.6编写的单元测试示例
Aug 17 Python
python生成随机红包的实例写法
Sep 02 Python
python绘制雪景图
Dec 16 Python
Python OpenCV读取显示视频的方法示例
Feb 20 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
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
浅谈vue-cli 3.0.x 初体验
2018/04/11 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
详解在vue-test-utils中mock全局对象
2018/11/07 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
python检测远程端口是否打开的方法
2015/03/14 Python
Python中一般处理中文的几种方法
2019/03/06 Python
如何使用Python实现自动化水军评论
2019/06/26 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
Currentbody美国/加拿大:美容仪专家
2020/03/09 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
合作协议书
2014/04/23 职场文书
公司证明怎么写
2014/09/22 职场文书
秋季运动会开幕词
2015/01/28 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
离婚财产分割协议书
2015/08/11 职场文书
2016年父亲节寄语
2015/12/04 职场文书
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
详解SQL的窗口函数
2022/04/21 Oracle