Java工具开发手记

Java工具开发手记前言这段时间沉迷于工具开发方面,个人也比较倾向于gui的工具。使用在开发过程中避免的就是gui的一些框体,这里主要用于记录一些关键点。工具开发其实在前段时间编写的14882

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Java工具开发手记

前言

这段时间沉迷于工具开发方面,个人也比较倾向于gui的工具。使用在开发过程中避免的就是gui的一些框体,这里主要用于记录一些关键点。

工具开发

其实在前段时间编写的14882_exploit_Gui工具的时候,提出的一个问题。除了命令执行在工具里还有什么实用的功能模块。当时提出的一个proxy功能,并把他给实现了。

开发过程中其实具体在Gui框体的设计这块相对来说比较费时间。

代理模块核心实现代码

public Proxy createProxy_SOCKET() {
    Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(this.socket_ip_addr, this.socket_port));
    return proxy;
}

...
    Proxy proxy_socket = createProxy_SOCKET();
...
    HttpsURLConnection https = (HttpsURLConnection)url.openConnection(proxy_socket);

GUI设计

this.setResizable(false); //不可最大化设置
setLocationRelativeTo(null); //框体居中

proxy_setting 如何进行消息框弹出的问题解决

jDialog1.setVisible(rootPaneCheckingEnabled);

check_box选项框事件监听问题解决,且实现不勾选输入框无法使用功能。

jCheckBox1.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                boolean proxy_flag = jCheckBox1.isSelected();
//                System.out.println(proxy_flag);
                if(proxy_flag){
                    jTextField4.setEditable(true);
                    jTextField5.setEditable(true);
//                    jComboBox4.setEditable(true);
                }else {
                    jTextField4.setEditable(false);
                    jTextField5.setEditable(false);
                    jComboBox4.setEditable(false);
                }
//                System.out.println(jComboBox4.getSelectedItem().toString());
            }
        });

写文件功能问题解决:

public class Fileutils {
    public static void writeFile(String savepath,String shell) {//写文件
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(savepath);
            fos.write(shell.getBytes());
            fos.close();
            System.out.println("已保存");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        }}
        
        ......
        JFileChooser chooser = new JFileChooser();
  String shell = processor.get_shell(Generated_password, Generated_key, Generated_Encode);
                if (chooser.showSaveDialog(jButton2)==JFileChooser.APPROVE_OPTION) {
                    File file = chooser.getSelectedFile();
                    Fileutils.writeFile(file.getPath(),shell);

最后来看看成品

Java工具开发手记

Java工具开发手记

GitHub地址:https://github.com/nice0e3/CVE-2020-14882_Exploit_Gui/

命令框崩溃问题解决

在前面几个版本中遇到在打weblogic的时候命令框使用echo语句写shell会导致框体崩溃

如下图:

Java工具开发手记

原因其实是以为在写gui的时候,设置了命令框可拉伸,取消掉拉伸功能,并且将框体设置不可最大化即可解决。

this.setResizable(false);

来自某人的反馈

Java工具开发手记

批量探测POC,窗体无回显问题

在写批量POC的时候,发现已探知的漏洞想要将他输出到框体里面,但显示却为空白,打了断点调试也没找到原因。而sout输出到控制台却能正常显示内容。而后使用命令行编写批量poc和利用的poc进行分离,暂时解决此问题。

String转换inputsterm


InputStream byteArrayInputStream = new ByteArrayInputStream(data.getBytes());

读取全部String内容

 public static String read(String path){
        File file = new File(path);

        StringBuilder sb = new StringBuilder();
        String line;
        FileInputStream fileInputStream = null;
        String str = null;

        try {
        fileInputStream = new FileInputStream(file);
        BufferedReader br = new BufferedReader(new InputStreamReader(fileInputStream));
        while ((line = br.readLine()) != null) {
            sb.append(line);
        }
        str = sb.toString();

        } catch (Exception e) {
            e.printStackTrace();
        }

        return str;
    }

打包成jar包后无法读取到资源文件问题解决

 BufferedReader in = new BufferedReader(new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream("CVE-2019-2725-10.txt")));
        StringBuffer buffer = new StringBuffer();
        String line = "";
        try {
            while ((line = in.readLine()) != null){
                buffer.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }


        String input = buffer.toString();

未完续…

持续记录问题与问题解决方案

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119877.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • java 查看线程死锁_java 查看线程死锁

    java 查看线程死锁_java 查看线程死锁那我们怎么确定一定是死锁呢?有两种方法。1>使用JDK给我们的的工具JConsole,可以通过打开cmd然后输入jconsole打开。1)连接到需要查看的进程。2)打开线程选项卡,然后点击左下角的“检测死锁”3)jconsole就会给我们检测出该线程中造成死锁的线程,点击选中即可查看详情:从上图中我们可以看出:①在线程Thread-1中,从状态可以看出,它想申请Paper这个资源,但是这个资…

    2022年7月13日
  • 未来三五年,社会上什么工作会更吃香呢?这几方面[通俗易懂]

    未来三五年,社会上什么工作会更吃香呢?这几方面

    2022年2月14日
  • 拉氏变换应用_拉氏反变换公式表

    拉氏变换应用_拉氏反变换公式表由系统函数零、极点分别决定时域特性(一)零、极点分布与波形特征的对应的零、极点:典型情况极点分布与原函数波形对应关系极点位于s平面坐标原点,冲激响应为阶跃函数 极点位于s平面实轴上,冲激响应具有指数形式,正为指数增长,负为指数衰减 虚轴上共轭极点给出等幅振荡 极点落在s平面左平面内共轭极点对应衰减震荡(左平面衰减,共轭极点振荡)多重极点典型情况(一般几重极点就乘上t的几次方)位于s平面坐标原点的二阶或三阶极点分别给出时间函数为t或他(1/2)t^2 实轴上二阶极点给出t与指数函数的

    2022年10月28日
  • 迁移学习——Domain Adaptation

    DomainAdaptation在经典的机器学习问题中,我们往往假设训练集和测试集分布一致,在训练集上训练模型,在测试集上测试。然而在实际问题中,测试场景往往非可控,测试集和训练集分布有很大差异,这时候就会出现所谓过拟合问题:模型在测试集上效果不理想。以人脸识别为例,如果用东方人人脸数据训练,用于识别西方人,相比东方人识别性能会明显下降。当训练集和测试集分布不一致的情况下,通过在训练…

    2022年4月16日
  • signature=f382e962eb5d4f9443ff87189d12babf,CiteSeerX — from an observational study design. J Epidemi…

    signature=f382e962eb5d4f9443ff87189d12babf,CiteSeerX — from an observational study design. J Epidemi…AbstractLetterstotheEditor457outcomethanadirectinterventionbecauseofthespecificpathwayaffectedbythevariant,suchastheeffectofkringleIVtype2sizepolymorphismsonlipoprotein…

    2022年5月31日
  • Word 在试图打开文件时遇到错误 文档可能已损坏 解决方法

    Word 在试图打开文件时遇到错误 文档可能已损坏 解决方法我使用的是Office2019的Word打开后缀名为doc的文件。错误信息:有多种原因可导致显示此错误消息。文档可能已损坏。请使用“恢复文本”转换器或“打开并修复”功能。这两种功能都可在“打开”对话框中找到。注意:如果打开的文件是电子邮件的附件,建议先将该文件保存到本地硬盘,然后再尝试恢复或修复该文件。可在“打开”对话框中使用“打开并修复”功能。若要打开并尝试修复,请单击“文件”选项卡,再单击“打开”,然后定位到损坏的文件并单击该文件。此时不要单击对话框右下部的“打开”按钮,而

    2022年6月3日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号