前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0x0 Python教程:入门pt2

0x0 Python教程:入门pt2

作者头像
重生信息安全
发布2020-04-26 12:47:54
9550
发布2020-04-26 12:47:54
举报
文章被收录于专栏:重生信息安全重生信息安全

本教程继续展示一些基本的Python脚本概念。我们将代码拉入脚本,函数,类和sys模块。

Python Skeleton脚本:

下面是一个可用于启动Python脚本的基本shell。我们开始通过“#!/ usr / bin / env python”告诉OS哪个解释器与文件一起使用。然后我们用“def main():”声明一个main函数,最后两行代码首先运行main()。您可以在脚本中定义其他函数,以使代码更易于理解和修改:

代码语言:javascript
复制
#!/usr/bin/python
import <module1>, <module2>
 
def myFunction():
 
def main():
        myFunction()
 
if __name__=="__main__":
        main()

功能:

利用函数的一种常用方法是使用一段执行某些操作并返回输出的代码。下面是一些演示这个概念的基本伪代码:

代码语言:javascript
复制
# 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类型的对象时,可以使用类代码中的各种方法。

代码语言:javascript
复制
>>> 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]是实际的脚本名称,并且在命令行给出的每个参数之后都会分配一个数字。以下是一个简单的例子:

代码语言:javascript
复制
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

当在命令行中使用一些参数调用此快速脚本时,它会生成以下输出:

代码语言:javascript
复制
~$ 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建立网络连接的概念。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 重生信息安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档