解读Pydictor

原作者git项目地址:https://github.com/LandGrey/pydictor

0x01:

Pydictor是一款轻量级字典爆破工具,linux安装如下:

git clone --depth=1 --branch=master https://www.github.com/landgrey/pydictor.git

cd pydictor/

python pydictor.py


我们主要是讲解其参数的作用:

-base 基本类型

-char 字符型

-chunk 块

-extend 延伸

-plug 插件

--conf 基于配置文件的词汇表

-sedb 社会工程学

-o 指定生成的txt的文件路径

-tool 使用工具 如·:组合,比较器,计数器,处理器,uniqbiner,uniqifer

--len 长度范围

--head 添加头文件

--tail 添加尾部文件

--encode 加密功能模块

--occur 发生功能模块

--types 类型功能模块

--regex 正则表达式函数

--level 等级

--leet leet表

我们可以去研究一下这个工具的源代码:

我们看看git上项目的插件模块ftp这部分:

ftp.py

from __future__ import unicode_literals

from lib.fun.fun import cool

from lib.fun.decoator import magic

from lib.data.data import pyoptions


def ftp_magic(*args):

"""[keyword1][keyword2][keyword3]"""

    args=list(args[0])

    if len(args)==1:

       exit(pyoptions.CRLF+cool.fuchsia("[!]Usage:{} {}".format(args[0],pyoptions.plugins_info_get(args[0]))))

      @magic(装饰器)

        def ftp():

            results=[]

            default_password=('ftp','anonymous','any@','xbox','lampp','admin')

            results+=defalut_password

            weak_passwd=('root','123456','111111','666666','ftppass')

            results+=weak_passwd

            for r in results:

                yield r

            tails=['1','01','001','123','abc','!QAZ','1q2w3e','2016','2017','2018']

            for keyword in args:

                for tail in tails:

                    yield keyword+tail

其实我们可以看到这个代码其实很简单,核心代码就是ftp()函数,使用两个循环将其passwd组合起来,最后返回一个keyword+tail出去

当然我们也可以自己添加插件

0x01:

首先我们要导入下面的模块然后写入自己的名字:

#! usr/bin/env python

#coding:utf-8

#author:liuyang

from __future__ import unicode_literals

from lib.fun.decorator import magic

from lib.data.data import pyoptions

0x02:

定义一个"name_magic(*args)函数",并且编写函数用法的doc,获取参数值:

def name_magic(*args):

    """[keyword1][keyword2][keyword3]"""

        args=list(arg[0])

0x03:

处理用户输入的异常参数:

if len(args)==1:

    exit(pyoptions.CRLF+cool.fuchsia("[!] Usage:{}{}".format(arg[0],pyoptions.plugins_info.get(arg[0]))))

0x04:

使用magic装饰器,warp “name()”功能:

@magic

def name():


 0x05:

在name()函数中,生成你的单词列表或者产生值:

0x051:

results=[]

append something to results

return results

0x052:

results is python generator

for r in results:

    yeild r

如果你想在最后的单词列表中添加上自己的弱密码列表,那么你可以把你的单词表(lib/data/data.py脚本中定义)

如下所示:

from lib.data.data import paths

from lib.fun.fun import  walk_all_files

@magic

def name():

    for _ in walks_all_files(paths.weblist_path):

        yield "".join(_)

这样编写的脚本支持pydictor中的所有手型函数。

如果他是"/plugins/ftp.py"脚本,并且他的名字必须是"ftp",一个简单的例子:

from __future__ import unicode_literals

from lib.fun.fun import cool

from lib.fun.decoator import magic

from lib.data.data import pyoptions


def ftp_magic(*args):

"""[keyword1][keyword2][keyword3]"""

    args=list(args[0])

    if len(args)==1:

       exit(pyoptions.CRLF+cool.fuchsia("[!]Usage:{} {}".format(args[0],pyoptions.plugins_info_get(args[0]))))

      @magic(装饰器)

        def ftp():

            results=[]

            default_password=('ftp','anonymous','any@','xbox','lampp','admin')

            results+=defalut_password

            weak_passwd=('root','123456','111111','666666','ftppass')

            results+=weak_passwd

            for r in results:

                yield r

            tails=['1','01','001','123','abc','!QAZ','1q2w3e','2016','2017','2018']

            for keyword in args:

                for tail in tails:

                    yield keyword+tail

调用ftp插件,用命令"python pydictor.py -plug ftp [keyword1][keyword2]..."

0x06:

编写编码函数:

只需要在"lib/fun/encode.py"脚本中编写函数即可.

比如我们编写一个base64加密的函数:

from base64 import b64encode

def b64_encode(item):

    """base64 encode """

    try:

        return(b64encode(item.encode('utf-8'))).decode()

    except:

        return ''

使用命令"python pydictor.py --encode name"调用编码函数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值