黑客攻防之告别脚本小子-----精简实用渗透测试python小白入门
title: python入门
文章目录
- title: python入门
- 一、变量
- 二、输出
- 三、字符串处理的常用方法
- 四、列表
- 五、元组、字典和迭代
- 六、if选择
- 七、异常
- try/except语句
- 八、函数
- 九、For循环
- 十、文件
- 十一、导入模块
- 十二、sys模块
- 十三、os模块
- 十四、多线程
- 十六、Optparse模块
一、变量
- Python中的变量不需要声明,可以直接通过赋值来创建变量,变量赋值通过“=”实现
- 变量赋值时应该注意数据类型。
- 可以同时为多个变量赋值,但变量与数值的个数必须相等们之间用逗号隔开。
- 变量名尽量具有现实意义,不能使用系统保留的关键字作为变量变量名。
二、输出
print语句可以同时输出多个元素,元素之间用逗号","隔开。print遇到逗号会输出一个空格。
如果希望输出的内容之间没有空格,可以把他作为字符串连接在一起,此时数据类型必须保持一致。
1、str(prots)强制转为为字符型。
2、+:必须是相同的类型。print语句在输出的内容后面会自动加上一个换行符号\n,如果在输出的内容后面跟上逗号,换行就取消了。
三、字符串处理的常用方法
在Python中一切皆对象,每个字符串都是一个对象。
使用dir可以查看对象的使用方法。
使用help命令可以查看某个方法的帮助信息。
split方法
将字符串根据某个分隔符今次那个分割,分割之后得到一个列表。
c.split(".")in
in不是一个方法,是一个语句
true or false
site="www.baidu.com"
web="baidu"
web in site //看看web字符串在不在site字符串里面。"baidu" in "www.baidu.com"
- strip()方法
去除字符串头尾指定的字符,如果不指定,默认去除空格以及回车、换行等空白字符。
>>> web="www.baidu.com"
>>> web.strip(".com")
'www.baidu'
>>> web.strip("www.")
'baidu.com'
- upper()、lower()方法
upper()方法可以将字符串转换成大写形成。
lower()方法可以将字符串转换成小写形成。
>>> web="wWW.BaiDU.Com">>> web.upper()`WWW.BAIDU.COM'>>> web.lower()
'www.baidu.com'
- center方法
使指定的字符串居中显示,两侧再加上指定数量的字符。
>>> print "welcome".center(30,'*')
***********welcome************
四、列表
- 在列表中可以集中存放多个数据,并且数据类型不必统一,列表用[]表示。
- 可以通过索引来获取列表的指定数据,索引从0开始。
可以使用一段连续的索引,比如[0:2],这是一个左闭右开区间,他的作用就是获取索引号是0和1的量数据。
- 在列表中可以根据元素查出其对应的索引,这成为切体。
>>> port=[21,22,80]
>>> dir(port)
>>> port.append("ssh") //在列表末尾追加ssh
>>> port.pop(3) //去除标号为3的数值
>>> port.insert(3,40) //在标号为3的位置上插入数值为40
>>> port.index(22) //查找数值为22的标号是多少
- 使用list()函数可以将一个字符串转为列表。
- 通过len()函数可以统计列表中元素的个数。
>>> ip="192.168.1.1"
>>> ip.split(".") //split以"."为分隔符分割形成一个列表
['192', '168', '1', '1']
>>> print ip.split(".")[0]+"."+ip.split(".")[1]+"."+ip.split(".")[2]+"."
192.168.1.
五、元组、字典和迭代
元组与列表相似,不同之处在于元组中的数据只能被调用,而不能被修改,元组用()表示。
- 如果元组中只有一个元素,那么在元素的后面必须加上逗号。
字典的优点是具有极快的查找速度,字典使用{}定义。
- 字典使用键-值(key-value)的形式存储,每一对键值成为一个项。
- 字典中的每一个键和它的值都是以冒号分割,同时用逗号分割两个项。
- 字典使用key来引用字典中某个键所对应的值。
>>> services={"ftp":21,"ssh":22}
>>> services
{'ftp': 21, 'ssh': 22}
>>> services["ssh"]
22
>>> services.keys()
['ftp', 'ssh']
>>> services.has_key("ssh")
True
>>> services["smtp"]=25 //修改或者添加
>>> services
{'ftp': 21, 'smtp': 25, 'ssh': 22}
通过for循环可以遍历列表、元组或是字典中的值,这种遍历就成为迭代。
遍历列表
>>> port=[21,11,80]
>>> for i in port:
... print i,
...
21 11 80
遍历元组同列表。
遍历字典
>>> services
{'ftp': 21, 'smtp': 25, 'ssh': 22}
>>> for key in services:
... print key
...
ftp
smtp
ssh
在遍历字典的时候默认只能显示字典中的键,要想遍历键和值需要下面的。
>>> for key in services:
... print key+":"+str(services[key])
...
ftp:21
smtp:25
ssh:22
六、if选择
- if语句的语法格式
if True: //python区分大小写print "OK"
else:print "NO"
- 冒号不能漏掉,缩进必须统一
- 所有的python合法的表达式都可以作为条件表达式,只要表达式的值不是False、0、空值,python的解释器都可以认为与True等价。
#!/usr/bin/env python
#coding:utf-8if True:print "ok"
else:print "no"print "hello!
七、异常
- 程序运行过程中难免会出现错误,当python检测到错误时,解释器就无法继续执行下去,于是抛出相应的信息,这些统称为异常信息。
syntaxError:invalidn syntax //语法错误
- 合理的使用异常处理可以使得程序更加健壮,具有很强的容错性,不会因为用户的不小心的错误输入或其他运行时原因而总成程序终止,也可以使用异常处理结构为用户提供更加友好的提示。
try/except语句
- try子句中的代码块包含可能会引发异常的语句,而except子句用来捕捉相应的异常。
- 程序执行时,如果try子句中没有异常发生,那么except子句在try语句执行之后被忽略;如果try子句中有异常发生,那么该部分的其他语句将被忽略,直接跳到except部分,执行其后面的子句。
精确显示错误
except Exception,e:print e
出错就pass掉,不显示。
except:pass
八、函数
- 函数提供了高效的可重用代码块
- 根据各自特定的作用,将程序分割成互相独立的函数是一个良好的编程序习惯,这样便于代码重用,并使程序更易于阅读。
- 通过def语句定义函数,函数中的内容必须缩进。return用于把函数的结果返回。如果没有return语句,函数执行后也会返回结果,指示结果为None。return None可以简写为return。
- 每一个后缀为.py文件都会被视作一个python模块,可以被其他的python程序调用。
每个python脚本在运行的时候都有一个—__name__属性,通过它可以识别程序的使用方式,即程序在作为模块导入还是独立运行,如果程序是作为模块被导入,那么__name__属性的值就被自动设置为模块名;如果是作为脚本独立使用,那么_name_属性的值会被自动设置为字符串"__main__"。
第一种方式:
if __name_=="__main__"
当前程序是不是独立运行的。第二种方式:
def main():程序
if __name_=="__main_"main()
九、For循环
1、列表
>>> for i in [1,2,3]:
... print i
...
1
2
32、通过range()函数生成连续数列
>>> for i in range(1,5):
... print i,
...
1 2 3 4
>>>
range(初始值,终止值,步长),range得到的是一个左闭右开区间。
>>> range(1,10) //默认步长为1
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,9,2)
[1, 3, 5, 7]
>>>
十、文件
1、文件操作的基本流程
1、调用open()函数打开文件,并创建一个File对象。
2、调用File对象的read()或write()等方法,对文件内容进行读写等操作。
3、调用File对象的close()方法,关闭并保存文件内容。open()函数
1、通过open()函数以指定模式打开文件并创建文件对象:文件对象=open('文件路径','模式')
2、文件打开模式主要包括:r只只读模式w只写模式a追加模式
3 如果传递给open()的文件名不存在,写模式和追加模式都会创建一个新的空文件。
- 读取文件
1、read()可以一次性的读取文件所有内容,也可以读取指定的前几个字节的数据。f.raed()f.read(12)
2、readline()方法可以从文件中读取一行并作为结果返回f.readline()
3、readlines()方法读取文件,返回一个列表,文件的每一行作为列表的一个元素:
- 通过字符串的strip()方法将文件中每行末尾的\n去除。
十一、导入模块
- 模块也叫库,每个模块中都内置了大量的功能,函数、类和变量。它就像积木,可以根据需要进行调用组合。
- 模块就是程序,每个模块就是一个后缀为.py的Python的程序。
- Python的模块分布为标准模块和第三方模块,标准模块是Python内置的,第三方模块需要安装之后才能使用。
- 可以通过help命令了解每个模块的基本帮助信息,如:help(‘sys’)
1、模块导入方法:a、直接调用模块:import 模块名b、从模块中调用某个函数:from 模块名 import 函数名2、eg:import osform os import * //os里面的所有函数form os import system //直接调用system()方法。
十二、sys模块
- sys是一个标准模块,与python解释器密切相关
- sys.argv
1、sys.argv是一个变量,专门用来向python解释器传递参数,类似于shell脚本编程中的位置变量。
#!/usr/bin/env python
#coding:utf-8import sys
print "脚本文件你是:",sys.argv[0]
print "用户输入的参数数量:",len(sys.argv)-1
print "所有的参数:",sys.argv
print "用户输入的第一个参数:",sys.argv[1]
print "用户输入的第二个参数:",sys.argv[2]
print "用户输入的第三个参数:",sys.argv[3]
运行结果:
脚本文件你是: ./sys.py
用户输入的参数数量: 3
所有的参数: ['./sys.py', 'me', 'you', 'he']
用户输入的第一个参数: me
用户输入的第二个参数: you
用户输入的第三个参数: he
- sys.exit()
1、sys.exit()是一个方法,作用是退出当前程序sys.exit(),退出当前程序,并返回systemExit异常sys.exit(0),正常退出sys.exit("退出程序"),显示一段提示信息。if len(sys.argv) != 2:print "正确使用方法:"+sys.argv[0] + "IP列表文件"print "例如:./sys.py /root/ip.txt"sys.exit()
十三、os模块
- os模块提供了访问操作系统服务的功能。
- 它最常用的是os.system()方法,可以在Python中使用操作系统命令。
1、os.system("ls /root")2、os.path.isfile()方法,判断指定的对象是否为文件,返回True或False。os.path.isfile("/root/pass.txt")3、os.path.isdir()方法,判断指定的对象是否为目录4、os.path.exists()方法,判断指定的对象是否存在
十四、多线程
- 进程是线程的容器,线程是操作系统调度和分配处理器时间的基本单位,负责执行包括在进程地址空间中的代码。
- 当进程被创建时,操作系统会自动为之创建一个线程,称为主线程,主线程会更具需要动态创建其他子线程。
- 通过threading模块中的Thread()类可以创建和管理线程对象
t=threading.Thread(target=需要执行的函数,args=(向函数传递的参数))
t.start() 执行
十六、Optparse模块
- 利用该模块可以设置选项,通过选项向脚本传递所需要的参数
- %prog表示当前脚本的文件名
- 每个程序都是自带有-h选项
#!/usr/bin/env python
#coding:utf-8from optparse import OptionParser
usage="Usage:%prog -f <filename> -i <ip address>"
parser=OptionParser(usage=usage )
parser.add_option("-f","--file",type="string",dest="filename", help="IP file") //选项
parser.add_option("-i","--ip",type="string",dest="address",help="IP address")
(options,args)=parser.parse_args() //固定格式,parse_args()方法获取定义的选项和参数print options.filename
print options.address
黑客攻防之告别脚本小子-----精简实用渗透测试python小白入门相关推荐
- 魔兽世界python脚本拍卖行_Python大法之告别脚本小子系列—信息资产收集类脚本编写(上)...
0×01 前言 在采集到URL之后,要做的就是对目标进行信息资产收集了,收集的越好,你挖到洞也就越多了----当然这一切的前提,就是要有耐心了!!!由于要写工具较多,SO,我会分两部分写-- 0×02 ...
- 告别脚本小子系列丨JAVA安全(6)——反序列化利用链(上)
0x01 前言 我们通常把反序列化漏洞和反序列化利用链分开来看,有反序列化漏洞不一定有反序列化利用链(经常用shiro反序列化工具的人一定遇到过一种场景就是找到了key,但是找不到gadget,这也就 ...
- 告别脚本小子系列丨JAVA安全(7)——反序列化利用链(中)
0x01 前言 距离上一次更新JAVA安全的系列文章已经过去一段时间了,在上一篇文章中介绍了反序列化利用链基本知识,并阐述了Transform链的基本知识.Transform链并不是一条完整的利用链, ...
- Python大法之告别脚本小子系列——信息资产收集类脚本编写附源码
关注头条号,私信回复资料会有意外惊喜呦------最后一张照片有资料呦. 前言 在采集到URL之后,要做的就是对目标进行信息资产收集了,收集的越好,你挖到洞也就越多了............当然这一切 ...
- Python大法之告别脚本小子系列—各类URL采集器编写
本文作者:i春秋签约作家--阿甫哥哥 系列文章专辑:https://bbs.ichunqiu.com/forum.php?mod=collection&action=view&ctid ...
- Chrome 实用渗透测试插件合集
XSS Rays 用于检测各类型的XSS漏洞 Google Hack Data Base 连接GHDB的扩展程序 Websecurify Scanner Websecurify 是一个强大的跨平台we ...
- 黑客攻防技术宝典Web实战篇 第2版 pdf
下载地址:网盘下载 内容简介 · · · · · · 越来越多的关键应用现在已经迁移到网站上,这些Web应用的安全已经成为各机构的重要挑战.知己知彼,方能百战不殆.只有了解Web应用程序中存在的可被 ...
- Penetration_Testing_POC-About 渗透测试有关的POC、EXP、脚本、提权、小工具等
Penetration_Testing_POC 搜集有关渗透测试中用到的POC.脚本.工具.文章等姿势分享,作为笔记吧,欢迎补充. Penetration_Testing_POC 请善用搜索[Ctrl ...
- 安装archicad 23说我操作系统过时_2020年十大最佳渗透测试/黑客操作系统
使用Linux进行黑客攻击和渗透测试的最佳操作系统是每位安全研究员或黑客的最佳选择.简明说就是渗透测试操作系统,黑客操作系统. 渗透测试十大最佳操作系统 1.Kali Linux Kali Linux ...
- python实用黑客脚本_Python黑客攻防(十六)编写Dos脚本,进行容易攻击演示
注:本篇文章为个人学习笔记仅供学习交流,请勿用于非法用途.转载须标明出处. 欢迎关注微信公众号:黑客帮 获取更多干货. Dos攻击简介 DOS:中文名称是拒绝服务,一切能引起DOS行为的攻击都被称为D ...
最新文章
- RHEL6关闭IPv6
- c语言已知斜率 求倾角,倾斜解的问题
- ExtJS 等待两个/多个store加载完再执行操作
- java弱引用怎么手动释放,Java 如何有效地避免OOM:善于利用软引用和弱引用
- c语言中tgx是什么函数,《高等数学》课后练习题
- code vs1517 求一次函数解析式(数论 纯数学知识)
- java exif 语言编码_Java读取图片EXIF信息的代码
- 华侨大学计算机学院2019,华侨大学计算机科学与技术学院2019年非全日制研究生复试成绩(第四批)...
- Java类加载过程内存分析
- 20-10-032-安装-KyLin-2.6.1-单机版安装(MAC官网下载)
- 电脑屏幕卡住了按什么都没反应_90%的电脑问题都能解决,只要学会这8个字!...
- 人类社会发明的第一台计算机是什么,第二周第一课概述计算机
- 十几减9的口算题_小学一年级下册十几减9数学教案
- java 关键字null
- 如何用70行Java代码实现神经网络算法
- 1018. 锤子剪刀布 (20)
- 重磅:IntelliJ IDEA 2020.2 EAP 5 已发布,可完美支持Java 15
- ex is not shell_我使用过的Linux命令之exit - 退出当前shell
- 《游戏脚本高级编程》
- 收藏 :数据资源下载网址大全
热门文章
- 超级详细-NMOS、PMOS的工作原理及相关内容整理(下)
- Android系统应用开发
- linux系统管理之系统优化(连载)
- 转载-常用邮箱SMTP服务器地址大全
- 计算机内存与外存的区别及使用配合(内存外存区别与搭配;快速缓存;计算机总线结构;计算机程序内存分布(栈、堆、全局/静态、数据区、代码段))
- Windows窗口编程之计算机,WindowsAPI窗口程序设计.docx
- antdesign 柱状图_你绝对想不到柱形图背后有这么多故事
- 【SAMMY】DOS下操作隐藏文件、文件夹
- 数据结构 常见排序算法 LOWB三人组 冒泡 选择 插入
- Ajax学习日志(五)—— 如何传递json格式请求参数