前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >app请求数据解密(AES)二

app请求数据解密(AES)二

作者头像
用户4682003
发布2022-09-03 10:56:22
5840
发布2022-09-03 10:56:22
举报
文章被收录于专栏:网络安全技术点滴分享

这篇文章主要介绍burp解密http请求数据插件的编写。根据上篇文章分析得到的AES加解密算法,我们要编写一个AES解密插件,将指定host的请求数据解密,并在新建的消息编辑器中显示。

一、AES解密插件用到的接口

IMessageEditorTabFactory

代码语言:javascript
复制
//implements IBurpExtender 因为我们要实现的是burp插件
//implements IMessageEditorTabFactory 创建一个IMessageEditor工厂
public class BurpExtender implements IBurpExtender,IMessageEditorTabFactory{  
  public PrintWriter stdount;
  public PrintWriter stderr;
  public IExtensionHelpers helpers;
  private IBurpExtenderCallbacks callbacks;
  
  public void registerExtenderCallbacks(final IBurpExtenderCallbacks callbacks){
    this.stdount = new PrintWriter(callbacks.getStdout(),true);
    this.stderr = new PrintWriter(callbacks.getStderr(),true);
    this.callbacks = callbacks;
    this.helpers = callbacks.getHelpers();
    callbacks.setExtensionName("Ucam Log Plugin");
    //在插件的回调函数中注册它 即能够调用到我们实现的这个工厂
    callbacks.registerMessageEditorTabFactory(this);
  }
  
  //implements后会继承createNewInstance方法 我们在方法中实现
  //自定义消息编辑器
  public IMessageEditorTab createNewInstance(IMessageEditorController controller,boolean editable){
    return new iMessageEditorTab();
  }
}

IMessageEditorTab

代码语言:javascript
复制
//下面即是implements IMessageEditorTab后 自定义的消息编辑器
//具体的功能则是在继承的几个方法中实现
class iMessageEditorTab implements IMessageEditorTab{
    //实例化iTextEditor返回当前加密数据显示的组件包括加密数据内容
    private ITextEditor iTextEditor = callbacks.createTextEditor();
    
    //设置消息编辑器的标题 如这里设置的“Ucam Log Plugin”
    public String getTabCaption(){
      return "Ucam Log Plugin";
    }
    //设置组件 这里直接设置为默认的iTextEditor组件
    public Component getUiComponent(){
      return iTextEditor.getComponent();
    }
    
    //过滤对特定的请求才生成消息编辑器 当burp中捕捉的请求不符合
    //我们需要的则不生成消息编辑器
    //比如 消息中包含“param”字段、host为www.test.com才生成消息编辑器
    //则如果请求包含它们返回true
    public boolean isEnabled(byte[] content,boolean isRequest){
      //参数content byte[]即是getMessage中获取的iTextEditor中的文本
      //参数isRequest boolean即表示当前文本是request请求 还是 response接收的数据
      //当isRequest true表示request false表示response
    }
    
    //我们要在消息编辑器中显示的消息
    //比如对content解密、添加额外内容、或者替换掉再返回到消息编辑器中
    public void setMessage(byte[] content,boolean isRequest){
      //参数content byte[]即是getMessage中获取的iTextEditor中的文本
      //参数isRequest boolean即表示当前是request请求 还是 response接收的数据
      //当isRequest true表示request false表示response
    }
    
    //返回iTextEditor显示的文本
    public byte[] getMessage(){
      return iTextEditor.getText();
    }
    
    //允许修改消息
    public boolean isModified(){
      return true;
    }
    
    //返回iTextEditor中选定的文本 没有选择的话 则不返回数据
    public byte[] getSelectedData(){
      return iTextEditor.getSelectedText();
    }
  }

二、解密插件的实现与使用

过滤需要处理的请求,如下所示

解密请求数据并输出

加载插件测试,如下所示

抓取我们过滤的特定的请求包测试

综上所述,该篇文章主要介绍了burp中自定义消息编辑器解密插件的编写。其中,我们可以依据自己的个人需求来指定需要过滤的请求,比如可以按照请求数据中包含的参数名称、请求头中包含的host、user-agent、Content-Type、请求链接url等,多个条件一起判断也可以。

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

本文分享自 网络安全技术点滴分享 微信公众号,前往查看

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

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

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