利用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 相关文章推荐
Django中的CACHE_BACKEND参数和站点级Cache设置
Jul 23 Python
python直接访问私有属性的简单方法
Jul 25 Python
python+opencv实现动态物体识别
Jan 09 Python
彻彻底底地理解Python中的编码问题
Oct 15 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
Dec 12 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
python 通过可变参数计算n个数的乘积方法
Jun 13 Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 Python
Python下应用opencv 实现人脸检测功能
Oct 24 Python
python实现图片插入文字
Nov 26 Python
Python使用struct处理二进制(pack和unpack用法)
Nov 12 Python
Python系统公网私网流量监控实现流程
Nov 23 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
YUI的Tab切换实现代码
2010/04/11 Javascript
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
JavaScript 程序编码规范
2010/11/23 Javascript
jQuery $.get 的妙用 访问本地文本文件
2012/07/12 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
js+数组实现网页上显示时间/星期几的实用方法
2013/01/18 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
优化Node.js Web应用运行速度的10个技巧
2014/09/03 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
JavaScript中的toLocaleDateString()方法使用简介
2015/06/12 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
python爬虫常用的模块分析
2014/08/29 Python
使用Python编写一个模仿CPU工作的程序
2015/04/16 Python
python实现web方式logview的方法
2015/08/10 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
JoJo Maman Bébé爱尔兰官网:英国最受欢迎的精品母婴品牌
2020/12/20 全球购物
初一学生期末评语
2014/04/24 职场文书
六一儿童节活动总结
2014/08/27 职场文书
教师四风问题整改措施
2014/09/25 职场文书
2014年环卫工作总结
2014/11/22 职场文书
2014年勤工助学工作总结
2014/11/24 职场文书
个人工作保证书
2015/02/28 职场文书
留学推荐信怎么写
2015/03/26 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python