利用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编写一个在Linux下实现截图分享的脚本的教程
Apr 24 Python
Python闭包实现计数器的方法
May 05 Python
详解Python中的条件判断语句
May 14 Python
在Python中处理列表之reverse()方法的使用教程
May 21 Python
Django Highcharts制作图表
Aug 27 Python
Python 中 Virtualenv 和 pip 的简单用法详解
Aug 18 Python
Python使用functools实现注解同步方法
Feb 06 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
Mar 05 Python
Python 实现使用dict 创建二维数据、DataFrame
Apr 13 Python
pytorch+lstm实现的pos示例
Jan 14 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
如何将json数据转换为python数据
Sep 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 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
jQuery树形控件zTree使用小结
2016/08/02 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
AngularJS路由实现页面跳转实例
2017/03/03 Javascript
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
JavaScript使用面向对象实现的拖拽功能详解
2019/06/12 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
vue.js循环radio的实例
2019/11/07 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
Python3 处理JSON的实例详解
2017/10/29 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
python调用webservice接口的实现
2019/07/12 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
深入剖析HTML5 内联框架iFrame
2016/05/04 HTML / CSS
广告设计专业自荐信范文
2013/11/14 职场文书
2014年教师培训的自我评价
2014/01/03 职场文书
军训自我鉴定怎么写
2014/02/13 职场文书
竞选学委演讲稿
2014/09/13 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
2015年元旦联欢晚会活动总结
2014/11/28 职场文书
担保书范本
2015/01/20 职场文书
教师个人成长总结
2015/02/11 职场文书
考研导师推荐信范文
2015/03/27 职场文书
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技