利用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编程过程中用单元测试法调试代码的介绍
Apr 02 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
May 21 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
python简单操作excle的方法
Sep 12 Python
python实现对任意大小图片均匀切割的示例
Dec 05 Python
Python语言进阶知识点总结
May 28 Python
python opencv 批量改变图片的尺寸大小的方法
Jun 28 Python
django基于restframework的CBV封装详解
Aug 08 Python
Python爬虫防封ip的一些技巧
Aug 06 Python
Python pip 常用命令汇总
Oct 19 Python
Pycharm 解决自动格式化冲突的设置操作
Jan 15 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错误提示的关闭方法详解
2013/06/23 PHP
深入理解JSON数据源格式
2014/01/10 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
ajax与jsonp的区别及用法
2018/10/16 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
vue路由--网站导航功能详解
2019/03/29 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
2019/04/15 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
详解Python字符串切片
2019/05/20 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
中国最大的团购网站:聚划算
2016/09/21 全球购物
英国马匹装备和马术用品购物网站:Equine Superstore
2019/03/03 全球购物
财务与信息服务专业推荐信
2013/11/28 职场文书
18岁生日感言
2014/01/12 职场文书
道德模范事迹材料
2014/12/20 职场文书
诚信承诺书
2015/01/19 职场文书
天坛导游词
2015/02/02 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
离婚纠纷代理词
2015/05/23 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
《金肉人》米特&《航海王》阿鹤声优松岛实因胰脏癌去世 享寿81岁
2022/04/13 日漫