python知识点总结以及assert利用蚁剑登录

python知识总结:

(1)、 if name == “main”:

我们将它当做应用程序的入口,name将不再是它本身模块名称,而强制改为__mian__

if name == ‘main’ 就相当于是 Python 模拟的程序入口。Python 本身并没有规定这么写,这只是一种编码习惯。由于模块之间相互引用,不同模块可能都有这样的定义,而入口程序只能有一个。到底哪个入口程序被选中,这取决于 name 的值。

通俗的理解__name__ == ‘main’:假如你叫小明.py,在朋友眼中,你是小明(name == ‘小明’);在你自己眼中,你是你自己(name == ‘main’)。

if name == 'main’的意思是:当.py文件被直接运行时,if name == 'main’之下的代码块将被运行;当.py文件以模块形式被导入时,if name == 'main’之下的代码块不被运行。

一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。因此if name == ‘main’: 的作用就是控制这两种情况执行代码的过程,在if name == ‘main’: 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的。

(2)、self用法:

由于类起到模板的作用,因此,可以在创建实例的时候,把我们认为必须绑定的属性强制填写进去。这里就用到Python当中的一个内置方法__init__方法,例如在Student类时,把name、score等属性绑上去:

class Student(object):
def init(self, name, score):
self.name = name
self.score = score

__init__方法的第一参数永远是self,表示创建的类实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器会自己把实例变量传进去。

(3)、构造方法:

在Python中是使用__new__和__init__来完成的。

__new__负责进行对象的创建,object中的__new__示例代码如下

@staticmethod # known case of new

    def __new__(cls, *more): # known special case of object.__new__

“”" Create and return a new object. See help(type) for accurate signature. “”"​​​​​​​

    pass

__init__负责进行对象的初始化,object中的__init__示例代码如下:

def init(self): # known special case of object.init

“”" Initialize self. See help(type(self)) for accurate signature. “”"

    pass

(4)、公有和私有:

  1. _xxx "单下划线 " 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量,需通过类提供的接口进行访问
  2. __xxx 类中的私有变量/方法名 " 双下划线 " 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。
  3. x 系统定义名字,前后均有一个“双下划线” 代表python里特殊方法专用的标识,如 init()代表类的构造函数。

如果想要直接访问私有变量和私有函数,解释器会报错说类里没有这个属性

但是python的私有其实是伪私有,其实是python的名字改装在起作用,在类外访问类里的私有元素,变量和方法会被改名,加上_<类名>即可访问私有变量和私有方法

(5)、闭包:

闭包(Closure)指的则是附带相应数据的函数。闭包函数能够引用一些并不在当前代码上下文中定义的变量。这些被引用的变量是在闭包函数的包围作用域(enclosing scope)的代码中定义的。这样的一些函数被称为闭包。

1.定义:本质上来说,就是一个函数里嵌套一个函数定义,内部函数能够带够调用外部函数的变量以及外部函数的传入参数。闭包的大概形式列如:

def test1(a,b):
pass
def test2©:
pass
return test
调用
test_1 = test1(a,b)
test_1©

2.概述:
上述代码return返回的是一个指向,指向test2这个函数,调用闭包时会开辟一个存储空间来存储变量和函数,调用一次就开辟一次。调用后,会将函数与数据一起传给test_1这个变量。实质上test_1这个变量就是指向test2函数的内部。

3.内部函数修改外部函数数据内部函数开始要用nonlocal 变量名来定义外部函数内内部函数外的变量:如:

def test1(a,b):
x = 300
def test2©:
nonlocal x
print(-----1---->%d)% x
x = 20
print(------2------>%d)%x
return test

assert利用蚁剑登录:在这里插入图片描述
使用中国蚁剑配置木马连接信息在这里插入图片描述
蚁剑具有“代理设置”功能,此处为了直接使用 BurpSuite 观察蚁剑与服务端的通信过程的数据包,我们启用下蚁剑的代理功能:在这里插入图片描述
打开靶机的虚拟终端

此时可以在 BurpSuite 上捕抓到对应的通信数据包:
在这里插入图片描述

数据包头“cmd”是木马的连接密码。可以看到中国蚁剑默认状态下的通信数据包仅仅做了URL编码处理,与明文无异。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值