利用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 相关文章推荐
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
Python中用startswith()函数判断字符串开头的教程
Apr 07 Python
剖析Python的Tornado框架中session支持的实现代码
Aug 21 Python
Python实现八大排序算法
Aug 13 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
python分割列表(list)的方法示例
May 07 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
使用python画个小猪佩奇的示例代码
Jun 06 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
Flask 上传自定义头像的实例详解
Jan 09 Python
python中print格式化输出的问题
Apr 16 Python
Python实现制作销售数据可视化看板详解
Nov 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
PHP 异步执行方法,模拟多线程的应用分析
2013/06/03 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
Javascript对象属性方法汇总
2013/11/21 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
javascript的回调函数应用示例
2014/02/20 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
2018/07/07 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
微信小程序日历效果
2018/12/29 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
[04:16]完美世界DOTA2联赛PWL S2 集锦第一期
2020/11/23 DOTA
PHP webshell检查工具 python实现代码
2009/09/15 Python
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
wxPython窗口的继承机制实例分析
2014/09/28 Python
Python图像灰度变换及图像数组操作
2016/01/27 Python
Python常用的爬虫技巧总结
2016/03/28 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
印度领先的眼镜电子商务网站:Lenskart
2019/12/16 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
自我鉴定总结
2014/03/24 职场文书
法人授权委托书范本
2014/04/04 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
自主招生专家推荐信
2015/03/26 职场文书
使用Java去实现超市会员管理系统
2022/03/18 Java/Android