python安全开发基础篇--第四节

python安全开发基础篇–第四节

注意:本文是python2.7的代码,使用Python3的自己改下语法

第一个真正意义的程序–某个端口的扫描

try except 异常访问控制

当我们认为某些代码可能会出错时,就可以用try来运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块,执行完except后,如果有finally语句块,则执行finally语句块

a=10
b=0
try:
	c=a/b
	print c
except:
	print "执行失败,请查找原因"
##################################
try:
	c=a/b
except ZeroDivisionError,e:
	print e.message

try …except …finally

a=10
b=0
try:
	c=a/b
	print c
except:
	print "执行失败,请查找原因"
finally:
	print "程序运行结束"

如何把步骤执行变成一个代码可执行文件

python 代码编写的程序可以保存为python文件,即*.py格式的文件,执行的时候可以使用python *.py的方式来执行,也可以指定文件的 文件头.让我们打开文件test.py,编辑内容如下:

#coding=utf-8
a=10
b=0
try:
	c=a/b
	print c
except:
	print "执行失败,请查找原因"
finally:
	print "程序运行结束"

执行命令:python test.py

编写一个函数化的可执行代码

为什么要将代码函数化?

1.函数化有助于减少编写重复的代码,提高代码的复用
2.函数化有助于阅读代码
3.过程式代码在大量代码的项目中会出现无法快速迭代和修改的问题
注释:不过作为IT安全人员,过程式代码有的时候也很合适,因为安全人员往往很少编写大型程序,而是需要快速的写出辅助代码帮助分析病毒或者漏洞

函数一般结构

>>> def fun(x,y):
		pass

空函数

def nop():
	pass

带参数的函数

>>> def power(x):
    		return x * x
>>> power(5)
out:25
>>> power(10)
out:100

返回多个值

>>> def power(x,y):
		a=x-y
		b=x+y
		return a,b
>>> x,y=power(5,3)
>>>print x,y
2 8

带默认参数的函数

>>> def power(x,y=2)
		a=x-y
		b=x+y
		return a,b
>>> power(2)
(0, 4)
>>> power(3,2)
(1, 5)

####保存成脚本文件执行

#coding=utf-8
def add(a,b)
	c=a+b
	print c
add(8,9)

脚本工具化

作为一个安全员,我们会大量的编写脚本,一个好的脚本要可以做到工具化

python argparse模块介绍

python 一共有2个命令行工具相关的库:optparse 和argparse,argparse是optparse的替代品,也更加符合我们的编码规则,这里主要使用argparse来编写命令行工具

#coding=utf-8
import argparse  
def test(a, b):  
    print int(a)+int(b)  
if __name__ == '__main__':
    parser=argparse.ArgumentParser(description="这是我的一个讲工具的例子") # 创建解析器  
    parser.add_argument("-x","--one",dest="a",help="这是第一个参数") # 增加命令行参数  
    parser.add_argument("-y","--yes",dest="b",help="这是第二个参数")  
    args=parser.parse_args()  
    if args.a and args.b :
        test(a=args.a, b=args.b)
    else:
    	print parser.format_help()

更多用法看这里argsparse相对详细的用法

#还有一种简单的工具参数制作方式

这种方式也很常见,很多小工具会这样写,当然最好使用的argparse,sys.argv接收的将是字符串类型,这个要注意

#coding=utf-8
import sys #导入模块
def  test(a,b):
	print int(a)+int(b) #要把str类型强制转换为int类型

if __name__ == '__main__':
	if len(sys.argv) !=3:
		print "example:python xxx.py arg1 arg2 \n"
	else:
		a=sys.argv[1]
		b=sys.argv[2]
		test(a,b)

课后作业

1查看更多argparse的用法,并熟悉它;

猜你喜欢

转载自blog.csdn.net/u014247926/article/details/127118366