本教程继续展示一些基本的Python脚本概念。我们将代码拉入脚本,函数,类和sys模块。
Python Skeleton脚本:
下面是一个可用于启动Python脚本的基本shell。我们开始通过“#!/ usr / bin / env python”告诉OS哪个解释器与文件一起使用。然后我们用“def main():”声明一个main函数,最后两行代码首先运行main()。您可以在脚本中定义其他函数,以使代码更易于理解和修改:
#!/usr/bin/python
import <module1>, <module2>
def myFunction():
def main():
myFunction()
if __name__=="__main__":
main()
功能:
利用函数的一种常用方法是使用一段执行某些操作并返回输出的代码。下面是一些演示这个概念的基本伪代码:
# Declare function/setup logic
def MyFunction:
...do work...
return output
#Call the function from main:
def main():
output = MyFunction(input)
类别:
Python类最初可能会令人困惑,因为它是设计代码的另一种方式。如果掌握了定义的概念,那么您可以将Class视为数据和定义的逻辑分组。因此,类将具有与其相关联的某些属性和方法。定义类时,稍后可以创建该类的对象,该对象将继承与之关联的属性和方法,这称为面向对象的编程。
如果这个概念让你感到困惑,我建议不要赶上Classes。实际上,您不需要利用类,但它可以减少您的编码冗余。下面我们将使用“class”关键字定义一个新类“Domain”。当您实例化Domain类型的对象时,可以使用类代码中的各种方法。
>>> import os
>>> class Domain:
... def __init__(self, domain, port, protocol):
# Stores the variabled passed inside two variables
... self.domain=domain
... self.port=port
... self.protocol=protocol
# Defines a method to build a URL
... def URL(self):
... if self.protocol == 'https':
... URL = 'https://'+self.domain+':'+self.port+'/'
... if self.protocol == 'http':
... URL = 'http://'+self.domain+':'+self.port+'/'
... return URL
# Sets up a method to lookup resolve domain to IP using host command via os.system
... def lookup(self):
... os.system("host "+self.domain)
...
>>>
>>> domain=Domain('google.com', '443', 'https')
>>>
>>> dir(domain)
['URL', '__doc__', '__init__', '__module__', 'ip', 'lookup', 'port', 'protocol']
>>> domain.URL()
'https://8.8.8.8:443/'
>>> domain.ip
'8.8.8.8'
>>> domain.port
'443'
>>> domain.protocol
'https'
>>> domain.lookup()
google.com has address 74.125.228.233
google.com has address 74.125.228.227
google.com has address 74.125.228.232
正如您在实例化Domain类的实例后所看到的,您可以在该类中运行方法。同样,这个概念最初可能会让人感到困惑,尤其是当您只是掌握Python和编程时。尝试在你已编写的Python脚本中实现一个新类,我发现这可能是一个开始掌握这个概念的有用方法。
使用“sys”处理CLI参数:
这个介绍的最后一个模块是sys模块。这允许您读取CLI中给出的参数并将它们拉入脚本中的变量。语法非常简单,sys.agrv
[0]是实际的脚本名称,并且在命令行给出的每个参数之后都会分配一个数字。以下是一个简单的例子:
import sys
script = sys.argv[0]
ip = sys.argv[1]
port = sys.argv[2]
print "[+] The script name is: "+script
print "[+] The IP is: "+ip+" and the port is: "+port
当在命令行中使用一些参数调用此快速脚本时,它会生成以下输出:
~$ python sys.py 8.8.8.8 53
[+] The script name is: sys.py
[+] The IP is: 8.8.8.8 and the port is: 53
继续探索其他Python模块和内置函数,因为它们可以让您在开始编写更复杂的代码时更轻松地解决问题。下一个教程将介绍通过构建基本端口扫描程序与Python建立网络连接的概念。