利用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 ORM框架SQLAlchemy学习笔记之安装和简单查询实例
Jun 10 Python
python字符串连接方式汇总
Aug 21 Python
python实现ipsec开权限实例
Nov 11 Python
python用来获得图片exif信息的库实例分析
Mar 16 Python
基于Python打造账号共享浏览器功能
May 30 Python
在Django admin中编辑ManyToManyField的实现方法
Aug 09 Python
Python模块 _winreg操作注册表
Feb 05 Python
用什么库写 Python 命令行程序(示例代码详解)
Feb 20 Python
python读取多层嵌套文件夹中的文件实例
Feb 27 Python
使用pytorch 筛选出一定范围的值
Jun 28 Python
PyCharm最新激活码(2020/10/27全网最新)
Oct 27 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 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生成略缩图代码
2012/07/16 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
支持ie与FireFox的剪切板操作代码
2009/09/28 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
如何快速上手Vuex
2017/02/14 Javascript
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
详解python算法之冒泡排序
2019/03/05 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
Python 异常处理Ⅳ过程图解
2019/10/18 Python
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
毕业生如何写自我鉴定
2014/03/15 职场文书
环保倡议书400字
2014/05/15 职场文书
酒店员工辞职信范文
2015/02/28 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
正确使用MySQL update语句
2021/05/26 MySQL
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers
Python 数据可视化之Seaborn详解
2021/11/02 Python
如何在Python中妥善使用进度条详解
2022/04/05 Python