利用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实现自动添加脚本头信息的示例代码
Sep 02 Python
Python类的继承和多态代码详解
Dec 27 Python
怎么使用pipenv管理你的python项目
Mar 12 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
Django教程笔记之中间件middleware详解
Aug 01 Python
pandas使用apply多列生成一列数据的实例
Nov 28 Python
Python闭包和装饰器用法实例详解
May 22 Python
python日期相关操作实例小结
Jun 24 Python
pycharm中显示CSS提示的知识点总结
Jul 29 Python
python实现小世界网络生成
Nov 21 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 Python
python基于opencv实现人脸识别
Jan 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递归列出所有文件和目录的代码
2008/09/10 PHP
php抓取页面与代码解析 推荐
2010/07/23 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
php数组键名技巧小结
2015/02/17 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
javascript的原生方法获取数组中的最大(最小)值
2012/12/19 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
jquery插件jquery.confirm弹出确认消息
2015/12/22 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
JS实现的简单表单验证功能完整实例
2017/10/14 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
详解VUE调用本地json的使用方法
2019/05/15 Javascript
JS 图片压缩原理与实现方法详解
2020/04/29 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
Python语言生成水仙花数代码示例
2017/12/18 Python
轻松实现TensorFlow微信跳一跳的AI
2018/01/05 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
Python登录注册验证功能实现
2018/06/18 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
2018/11/30 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
美国便宜的横幅和标志印刷在线:Best of Signs
2019/05/29 全球购物
写给女生的道歉信
2014/01/08 职场文书
全国道德模范事迹
2014/02/01 职场文书
教师学习培训邀请函
2014/02/04 职场文书
暑期社会实践心得体会
2014/09/02 职场文书
公司放假通知怎么写
2015/04/15 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
Java详细解析==和equals的区别
2022/04/07 Java/Android
vue的项目如何打包上线
2022/04/13 Vue.js