Java利用RunTime执行Linux命令行,Java调用John进行zip压缩包破解

Java利用RunTime执行Linux命令行,Java调用John进行zip压缩包破解,第1张

Java利用Runtime执行命令行,在windows上面可以调用成功,但在Linux上有时候调用失效,记录一下Linux环境中,java调用命令行执行程序:

主要这句话很重要:

命令前加sudo也可以

String[] cmdArray = new String[] { "/bin/sh", "-c", cmd };

另,Linux环境调用命令行时,如果命令行中包含()或&符号等,会终止命令,本例中文件名中包含(),那么就需要在文件名两端加上""号,把文件路径括起来,执行成功。

private  void execCommand(String zipName,String pFile) {
        try {
            Runtime runtime = Runtime.getRuntime();
            // 打开任务管理器,exec方法调用后返回 Process 进程对象
            //程序包所在目录的的完整路径,如/usr/john/
            String root = "/usr/john/zip2John";
            String cmd = " \""+zipName+"\" > "+pFile;
            logger.info("命令----------------------"+root +cmd);
            // 等待进程对象执行完成,并返回“退出值”,0 为正常,其他为异常
            String[] cmdArray = new String[] { "/bin/sh", "-c", root+cmd };
            Process process = runtime.exec(cmdArray);
            //程序返回写入到文件中
            FileWriter ft = new FileWriter(pFile);
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));
            String line = "";
            while ((line=bufferedReader.readLine())!=null){
                ft.write(line);
                System.out.println(line);
            }
            ft.flush();
            int exitValue = process.waitFor();
            System.out.println("exitValue: " + exitValue);
            // 销毁process对象
            process.destroy();
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/883751.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-14
下一篇 2022-05-14

发表评论

登录后才能评论

评论列表(0条)

保存