利用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的Tornado框架对子域名和泛域名的支持
May 02 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
Jun 02 Python
使用Python操作excel文件的实例代码
Oct 15 Python
对python numpy数组中冒号的使用方法详解
Apr 17 Python
Python selenium抓取微博内容的示例代码
May 17 Python
在Python3 numpy中mean和average的区别详解
Aug 24 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
pytorch常见的Tensor类型详解
Jan 15 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
Feb 20 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
Mar 18 Python
Pytorch实验常用代码段汇总
Nov 19 Python
python实现自定义日志的具体方法
May 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中文汉字验证码
2007/04/08 PHP
php调用mysql数据 dbclass类
2011/05/07 PHP
50个PHP程序性能优化的方法
2014/06/02 PHP
简单实现PHP留言板功能
2016/12/21 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
js获取图片大小的函数代码
2011/09/20 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
python之wxPython应用实例
2014/09/28 Python
python实现SOM算法
2018/02/23 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
python实现人脸签到系统
2020/04/13 Python
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
绘画设计学生的个人自我评价
2013/09/20 职场文书
外贸采购员求职的自我评价
2013/11/26 职场文书
小学教师听课制度
2014/02/01 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
建材投资建议书
2014/05/16 职场文书
任命书怎么写
2015/03/02 职场文书
酒店温馨提示语
2015/07/14 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
村官2015年度工作总结
2015/10/14 职场文书
2016高三毕业赠言寄语
2015/12/04 职场文书
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL