利用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实现ipsec开权限实例
Nov 11 Python
通过实例浅析Python对比C语言的编程思想差异
Aug 30 Python
Python实现的HMacMD5加密算法示例
Apr 03 Python
python 寻找list中最大元素对应的索引方法
Jun 28 Python
django模板加载静态文件的方法步骤
Mar 01 Python
python实现宿舍管理系统
Nov 22 Python
pandas中ix的使用详细讲解
Mar 09 Python
pytorch  网络参数 weight bias 初始化详解
Jun 24 Python
python基于爬虫+django,打造个性化API接口
Jan 21 Python
Django中的JWT身份验证的实现
May 07 Python
Pytorch中Softmax和LogSoftmax的使用详解
Jun 05 Python
Python实现随机生成迷宫并自动寻路
Jun 13 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
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
PHP registerXPathNamespace()函数讲解
2019/02/03 PHP
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
2017/02/17 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
[02:25]DOTA2英雄基础教程 生死判决瘟疫法师
2013/12/06 DOTA
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
Python 模块EasyGui详细介绍
2017/02/19 Python
Python读取properties配置文件操作示例
2018/03/29 Python
python 定义给定初值或长度的list方法
2018/06/23 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
Django框架 信号调度原理解析
2019/09/04 Python
python的faker库用法
2019/11/28 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
StubHub哥伦比亚:购买和出售您的门票
2016/10/20 全球购物
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
世界上最受欢迎的钓鱼诱饵:Rapala
2019/05/02 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
园林毕业生自我鉴定范文
2013/12/29 职场文书
创先争优制度
2014/01/21 职场文书
超市促销活动方案
2014/03/05 职场文书
化工专业自荐书
2014/06/16 职场文书
小学清明节活动总结
2014/07/04 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
Mysql 一主多从的部署
2022/05/20 MySQL