Telnet_login的父类TCP_Cache简化代码如下:
class TCP_Cache: def __del__(self): def bind(self, host, port, *args, **kwargs): hp = '%s:%s' % (host, port) if hp in self.cache: if key == k: else: self.curr = None conn = self.connect(host, port, *args, **kwargs) self.cache[hp] = (key, conn) return conn.fp, conn.banner |
我们可以看到,当开始新建一Telnet_login对象时,将把host:port信息加入cache,以后每次都会现在cache中寻找,如果有就直接返回连接对象(使用先前fp,fp.expect返回信息怎么还可用???)。
Patator基于模块化的设计,啥模块化的设计?因为支持多种协议,而各个协议之间都是独立的。举个简单的例子,你想测试telnet弱密码,使用的是telnetlib库,属于标准库,所以你完全可以扫telnet弱密码,即使你没有安装pycurl(扫http弱密码使用的库,是curl库的python封装)。哇塞,挺强大啊,那这又是怎么实现的呢?
不看不知道,一看吓一跳,相当的简单。
warnings = [] try: dependencies = { |