目录

一、文件输入/输出

简介:

示例:

二、sys模块

简介:

示例:

三、OS模块

简介:

示例:

四、漏扫脚本

示例:


(我所用为python3+pycharm)

一、文件输入/输出

简介:

假设有一个名为vuln_ b anners.txt 文本文件, 这个文件的每一行都列出了一个已知有漏洞的特定服务版本(的banner) 。

通过读取这个文本文件, 来判断banner 是否有漏洞的服务器,避免使用一大堆if语句去判断。

示例:

cat vuln_banners.txt
3Com 3CDaemon FTP Server Version 2.0
Ability Server 2.34
CCProxy Telnet Service Ready
ESMTP TABS Mail Server for Windows NT
FreeFloat Ftp Server (Version 1.00)
IMAP4revl MDaemon 9.6.4 ready
MailEnable Service, Version: 0-1.54
NetDecision-HTTP-Server 1.0
PSO Proxy 0.9
SAMBAR
Sami FTP Server 2.0.2
Spipe 1.0
TelSrv 1.5
WDaemon 6.8.5
WinGate 6.1.1
Xitami
YahooPOPs! Simple Mail Transfer Service Ready


在checkVulns函数中换上了新的代码。这里以只读模式('r')打开文本文件,用.readlinesO方法遍历文件中的每一行, 并将其与我们的banner做比较。

注: 必须用.strip('\r')方法去掉每一行的回车键。检测到匹配, 打印一个有漏洞的服务器的banner

def checkVulns(banner):f = open("vuln_banners.txt", 'r')for line in f.readlines():if line.strip('\n') in banner:print('Server is vulnerable: '+banner.strip('\n'))


二、sys模块

简介:

内置的sys模块使我们能访问到由Python 解释器使用或维护的对象, 其中包括标志、版本、整型数的最大尺寸、可用的模块、hook路径、标准错误/输入/输出的位置, 以及调用解释器的命令行参数

示例:

把一个文本文件的文件名作为命令行参数传递sys.argv 列表中含有所有的命令行参数

第一个sys.argv[0]元素中的是Python 脚本的名称

列表中的其余元素中则记录了之后所有的命令行参数

如果我们只是传递一个额外的参数, sys.argv 中应该包含两个元素(脚本名称、传入的参数)

import sysif len(sys.argv) != 2:filename = sys.argv[1]print('Reading Vulnerabilities From: ' + filename)


三、OS模块

简介:

内置的OS 模块提供了丰富的适用于Mac、NT 或Posix 的操作系统的函数。这个模块允许程序独立地与操作系统环境、文件系统、用户数据库以及权限进行交互

示例:

用户把一个文本文件的文件名作为命令行参数传递进来, 先检查一下该文件是否存在、当前用户是否有权限读取该文件,其中任一条件不满足, 就向用户显示一条相应的错误信息

import sys
import osif len(sys.argv) == 2:filename = sys.argv[1]if not os.path.isfile(filename):print(filename + ' does not exist.')exit(0)if not os.access(filename, os.R_OK):print(filename + ' access denied.')exit(0)print('Reading Vulnerabilities From: ' + filename)


四、漏扫脚本

示例:

重新整合上面学过的这些重新整合一下Python 漏洞扫描脚本的各个部分

import socket
import sys
import osdef retbanner(ip, port):try:socket.setdefaulttimeout(2)s = socket.socket()s.connect((ip, port))banner = s.recv (1024)return bannerexcept Exception as e:return edef checkVulns(banner,filename):f = open(filename,'r')for line in f.readlines():if line.strip ('\n') in banner:print('Server is vulnerable: ' + banner.strip ('\n'))def main():
if len(sys.argv) == 2:filename = sys.argv[1]if not os.path.isfile(filename):print(filename + ' does not exist.')exit(0)if not os.access(filename, os.R_OK):print(filename + ' access denied.')exit(0)else:print('Usage: ' + str(sys.argv[0]) + ' <vuln filename>')exit(0)portList = [21, 22, 25, 80, 110, 443]for x in range(147, 150 ):ip = '192.168.190.' + str( x )for port in portList:banner = retbanner(ip,port )if banner:print(ip + str(banner))checkVulns(banner, filename)if __name__ == '__main__':main()

【Python脚本进阶】1.2、python脚本基础知识(下)相关推荐

  1. python编程中常用的12种基础知识总结

    python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进 ...

  2. python编程基础知识点总结_【转载】Python编程中常用的12种基础知识总结

    Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进 ...

  3. Python 编程中常用的12种基础知识总结

    Python 编程中常用的12 种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出 ...

  4. python六十七课——网络编程(基础知识了解)

    网络编程: 什么是网络编程? 网络:它是一种隐形的媒介:可以将多台计算机使用(将它们连接到一起) 网络编程:将多台计算机之间可以相互通信了(做数据交互) 一旦涉及到网络编程,划分为两个方向存在,一方我 ...

  5. 营养素的基础知识下(非技术文)

    营养素的基础知识下 一.碳水化合物(糖类) 1.什么是碳水化合物 2.碳水化合物的分类 3.碳水化合物的作用 4膳食纤维 二.矿物质 1.矿物质的作用 2.矿物质的的特点 3.缺乏矿物质后会产生的后果 ...

  6. python爬虫进阶,突破反脚本机制(反爬机制)

    前言 相信大家在做爬虫或者自动化脚本时或多或少的都能遇到反爬机制(或者说反脚本机制),最常见的反脚本机制都是在登录时进行验证,据本人大量实战(帮粉丝写脚本)发现,基本上只要有点水平的网站都会有反脚本的 ...

  7. Python爬虫教程(一):基础知识

    目录 01 基础知识 1.1 渲染 1.2 http(超文本传输协议)协议 1.3 requests进阶 02 数据解析 2.1 re模块 2.2 bs4模块 2.3 xpath模块 01 基础知识 ...

  8. Python编程:从入门到实践(基础知识)

    第一章 起步 计算机执行源程序的两种方式: 编译:一次性执行源代码,生成目标代码 解释:随时需要执行源代码 源代码:采用某种编程语言编写的计算机程序 目标代码:计算机可执行,101010 编程语言分为 ...

  9. 安装python步骤-从0到1,Python安装步骤详解(附基础知识简介)!

    Python下载安装步骤 python解释器,在Linux中可以内置安装,而在windows中则需要去下载.具体步骤如下: 第一步:通过Web浏览器,访问http://www.python.org官网 ...

  10. python正则表达式使用实例_正则表达式的基础知识,以及Python爬虫中的使用方法...

    一.正则表达式 实际上爬虫一共就四个主要步骤: 明确目标(要知道你准备在哪个范围或者网站去搜索) 爬(将所有的网站内容全部爬下来) 取(去掉对我们没有用处的数据) 处理数据 我们在第上一篇文章中介绍的 ...

最新文章

  1. TEE综述:植物—土壤反馈(PSF):自然和农业科学间的桥梁
  2. [转]Android UI 自动化测试
  3. 在ubuntu 16.04下安装gitlab(摘抄中文官方网站)
  4. 斯坦福-随机图模型-week1.0_
  5. 度量相似性数学建模_【数学建模】day09-聚类分析
  6. 84. Leetcode 70. 爬楼梯 (动态规划-基础题)
  7. Java中使用Jedis连接Redis对Key进行操作的常用命令
  8. 1、cocos2d-x环境安装
  9. dojo解决这个问题Tried to register widget with id==quot;myidquot; but that id is already registered
  10. upload-labs--wp(21关)
  11. .netcore 极速接入第三方登录
  12. 提高CSS文件可维护性的五种方法
  13. Java的static关键字用法及原理
  14. 查看pod网络范围_K8S Pod 内抓包快速定位网络问题
  15. [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展trim,trimLeft,trimRight方法(2)...
  16. 暴风影音2007全功能完美版和Symantec Norton的冲突
  17. 小米进军欧洲智能手机市场:一面是狂欢,一面是考验
  18. 台式计算机调亮度快捷键,处理电脑调亮度快捷键如何调整屏幕亮度呢?
  19. python中and的用法
  20. weiui使用jquery infinite无限滚动加载,数据重复自执行

热门文章

  1. linux 录制视频mp4,Kazam下载使用:优秀的Linux截图与屏幕视频录制软件
  2. illustrator插件-拼版功能开发-印前角线-js脚本开发-ai插件
  3. 关于在Google Earth中动态加载地标问题
  4. Windows+WSL+DockerDesktop下安装OpenV2X
  5. PPC手机QQ2008 最新版下载
  6. 计算机软件维护方法,计算机软件维护策略
  7. 数据库 casewhen 的用法
  8. Flex Builder 破解和注册方法
  9. 职称计算机 frontpage 2003,计算机职称考试FrontPage2003考试大纲
  10. ubuntu18.04播放MP4