利用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编写android截屏脚本双击运行即可
Jul 21 Python
深入理解Python变量与常量
Jun 02 Python
如何将python中的List转化成dictionary
Aug 15 Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 Python
Python编程求解二叉树中和为某一值的路径代码示例
Jan 04 Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 Python
pygame实现打字游戏
Feb 19 Python
numpy中三维数组中加入元素后的位置详解
Nov 28 Python
pytorch加载自定义网络权重的实现
Jan 07 Python
详解python中GPU版本的opencv常用方法介绍
Jul 24 Python
Python3如何使用多线程升程序运行速度
Aug 11 Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 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图像处理之使用imagecolorallocate()函数设置颜色例子
2014/11/19 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
php解析字符串里所有URL地址的方法
2015/04/03 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
php和js实现根据子网掩码和ip计算子网功能示例
2019/11/09 PHP
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
2016/07/22 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
Bootstrap 按钮样式与使用代码详解
2018/12/09 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
Python入门_学会创建并调用函数的方法
2017/05/16 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
使用Fabric自动化部署Django项目的实现
2019/09/27 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
自荐信范文
2013/12/10 职场文书
大学生关于奋斗的演讲稿
2014/01/09 职场文书
工作态度检讨书
2014/02/11 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
学校财务管理制度
2015/08/04 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
python自动计算图像数据集的RGB均值
2021/06/18 Python