首页 > 编程语言 >Python黑客编程之Bp字典生成插件

Python黑客编程之Bp字典生成插件

时间:2023-02-12 21:11:37浏览次数:43  
标签:wordlist 插件 http Python menu self Bp import def

描述

  • 编写一款burpsuite插件,用于从浏览的网页中抓取特定文字,生成字典给Intruder使用

代码

  • 注册插件
  • 创建JMenuItem菜单,在target站点中右键触发回调函数wordlist_menu
  • wordlist_menu获取菜单上下文,取出选中的站点
  • 向选中的站点发出请求,解析响应,根据内容附加字符来生成字典
import re
from burp import IBurpExtender
from burp import IContextMenuFactory
from java.util import ArrayList
from javax.swing import JMenuItem
from datetime import datetime
from HTMLParser import HTMLParser

class TagStripper(HTMLParser):
    def __init__(self):
        HTMLParser.__init__(self)
        self.page_text = []

    def handle_data(self, data):
        self.page_text.append(data)

    def handler_comment(self, data):
        self.handle_data(data)

    def strip(self, html):
        self.feed(html)
        return "".join(self.page_text)

class BurpExtender(IBurpExtender, IContextMenuFactory):
    def registerExtenderCallbacks(self, callbacks):
        self._callbacks = callbacks
        self._helpers = callbacks.getHelpers()
        self.context = None
        self.hosts = set()
        self.wordlist = set(["password"])
        callbacks.setExtensionName("BHP WordList")
        callbacks.registerContextMenuFactory(self)
        return

    def createMenuItems(self, context_menu):
        self.context = context_menu
        menu_list = ArrayList()
        menu_list.add(JMenuItem("Create Wordlist", actionPerformed=self.wordlist_menu))
        return menu_list

    def wordlist_menu(self, event):
        http_traffic = self.context.getSelectedMessages()
        for traffic in http_traffic:
            http_service = traffic.getHttpService()
            host = http_service.getHost()
            self.hosts.add(host)

            http_response = traffic.getResponse()
            if http_response:
                self.get_words(http_response)

        self.display_wordlist()
        return

    def get_words(self, response):
        headers, body = response.tostring().split("\r\n\r\n", 1)
        if headers.lower().find("content-type: text") == -1:
            return
        tag_stripper = TagStripper()
        word_text = tag_stripper.strip(body)
        words = re.findall("[a-zA-Z]\w{2,}", word_text)
        for word in words:
            if len(word) <= 12:
                self.wordlist.add(word.lower())

        return

    def mangle(self, word):
        year = datetime.now().year
        suffixed = ["", "1", "!", year]
        mangled = []
        for password in (word, word.capitalize()):
            for suffix in suffixed:
                mangled.append("%s%s" % (password, suffix))

        return mangled

    def display_wordlist(self):
        print("#comment: BHP Wordlist for site(s) %s" % ", ".join(self.hosts))
        for word in sorted(self.wordlist):
            for password in self.mangle(word):
                print(password)

        return

结果

  • 选择new live task,配置被动扫描
  • 浏览靶机站点来触发扫描,在target标签页中选中目标请求,右键选择create wordlist
  • 在插件日志中可以看到生成的字典,发送给Intruder使用

标签:wordlist,插件,http,Python,menu,self,Bp,import,def
From: https://www.cnblogs.com/z5onk0/p/17114723.html

相关文章

  • python优缺点分析11
    学--就如同你即将看到的一样,Python极其容易上手。前面已经提到了,Python有极其简单的语法。​ 免费、开源--Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自......
  • 1行Python代码去除图片水印,网友:一干二净!
    大家好,这里是程序员晚枫。最近小明在开淘宝店(店名:爱吃火锅的小明),需要给自己的原创图片加水印,于是我上次给她开发了增加水印的功能:图片加水印,保护原创图片,一行Python代码搞......
  • 大爽Python入门教程 2-7 *拓展实践,对比与思考
    大爽Python入门公开课教案点击查看教程总目录本文偏难。推荐等第一二三四章上完后,回过来拓展阅读。基础情景思考假设有这样一张成绩表最左边的一列是名字,起名麻......
  • 大爽Python入门教程 2-6 拓展练习
    大爽Python入门公开课教案点击查看教程总目录方位输出第一章有一个思考题,方位变换:小明同学站在平原上,面朝北方,向左转51次之后(每次只转90度),小明面朝哪里?小明转过......
  • K8s:通过 kubectl 插件 Kubepug 实现集群升级检查(废弃API资源检查)
    写在前面分享一个小工具,可用于版本升级的废弃API对象检查博文内容涉及:kubepug离线安装,配置kubectl插件kubepug两种方式离线使用Demo理解不足小伙伴帮忙......
  • Python面向对象---类的基本使用
     ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。 ......
  • Python爬虫之Js逆向案例(16)-京东商品评论&店铺详情案例
    <center>声明:京东商品评论&店铺详情获取分析仅用于研究和学习,如有侵权,可联系删除</center>一次运行程序,同时获取一下内容:1.获取商店详情;2.获取当前商品评论;3.获取商品的......
  • Python 类型注解
    在Python语言发展的过程中,PEP提案发挥了巨大的作用,如PEP3107和PEP484提案,分别给我们带来了函数注解(FunctionAnnotations)和类型提示(TypeHints)的功能。PEP3107:定义了......
  • Python 高级编程之网络编程 Socket(六)
    目录一、概述二、Pythonsocket模块1)Socket类型1、创建TCPSocket2、创建UDPSocket2)Socket函数1、服务端socket函数2、客户端socket函数3、公共socket函数三、单工,半......
  • 纯钧chunjun的http-x插件修复
    简介chunjun是一款基于flink的开源数据同步工具,官方文档,其提供了很多flink官方未提供的插件供大家来使用,特别是达梦插件在国产化环境中很方便!本次介绍的是chunjun中的一......