利用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 相关文章推荐
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 Python
Python中的迭代器漫谈
Feb 03 Python
由Python运算π的值深入Python中科学计算的实现
Apr 17 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
Oct 30 Python
基于Python的PIL库学习详解
May 10 Python
Python函数装饰器原理与用法详解
Aug 16 Python
Python 函数绘图及函数图像微分与积分
Nov 20 Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 Python
Python中常用的os操作汇总
Nov 05 Python
解决pytorch下出现multi-target not supported at的一种可能原因
Feb 06 Python
python单例模式的应用场景实例讲解
Feb 24 Python
Pytorch中的数据集划分&正则化方法
May 27 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
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
JS模拟多线程
2007/02/07 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
通过Javascript读取本地Excel文件内容的代码示例
2014/04/08 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
javascript获得当前的信息的一些常用命令
2015/02/25 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
更靠谱的H5横竖屏检测方法(js代码)
2016/09/13 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
2018/09/14 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
python实现rsa加密实例详解
2017/07/19 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
香港礼品网站:GiftU eshop
2017/09/01 全球购物
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
美国户外运动商店:Sun & Ski
2018/08/23 全球购物
留学自荐信的技巧
2013/10/17 职场文书
高校教师思想汇报
2014/01/11 职场文书
纺织工程专业个人求职信范文
2014/01/27 职场文书
责任心演讲稿
2014/05/14 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
租房协议书范例
2014/10/14 职场文书
义诊活动总结
2015/02/04 职场文书
幼儿园辞职信范文
2015/02/27 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书