簡體   English   中英

使用Java ProcessBuilder在會話期間將參數傳遞給開膛手約翰

[英]Passing arguments to John the Ripper during session using Java ProcessBuilder

我正在嘗試使用Java ProcessBuilder運行開膛手約翰。 到目前為止,一切正常。

我的問題是關於開膛手約翰的狀態信息。 在Bash中運行破解會話時,您可以按任意鍵以顯示如下狀態信息:

猜測:0時間:51:06:37:19 0.00%(3)c / s:4466嘗試:shs1geO-shs1god

我無法實現的是在執行過程中將“任何鍵”傳遞給流程,以便返回狀態行。

我已經嘗試過BufferedWriter並傳遞了各種字符串,行分隔符和反斜杠n。 到目前為止沒有任何工作,我的write(x)只是被忽略了。 該過程正常終止並返回正常過程輸出。

這是一些代碼說明:

        long lastStatusTime = System.nanoTime();
        long interval = 5 * 1000L * 1000 * 1000;
        int counter = 0;

        while(!(proM.isComplete())){
            if((lastStatusTime + interval) <= System.nanoTime()){
                bw.write("q");
                bw.flush();

                line = br.readLine();
                System.out.println(line);
                lastStatusTime = System.nanoTime();

            }
        }

        //Proc output
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }

只要進程沒有完成就執行第一個while,並且每5秒(或者至少應該這樣做)將“ q”(或任何其他鍵)寫入BufferedWriter。

當進程終止時,while停止,第二while捕獲正常的進程輸出。

不幸的是,寫入操作被完全忽略,並且if語句中的readLine塊被阻止,直到接收到正常終止輸出的第一行為止。

BufferedWriter的構建:

        OutputStream os = process.getOutputStream();
        OutputStreamWriter osw = new OutputStreamWriter(os);
        BufferedWriter bw = new BufferedWriter(osw);

有誰能夠幫助解決此問題? 我正在努力幾個小時

預先感謝您的任何幫助

您沒有向我們展示如何構造BufferedWriter。 創建流程時,您是否正在獲得與流程關聯的流,即InputStream,OutputStream和ErrorStreams? 您應該,然后應該嘗試將新行char發送到OutputStream。

我自己,將OutputStream包裝在PrintStream中,然后簡單地對其調用println()


編輯
請注意,我不熟悉您要控制的程序。 如果不是控制台程序,則寫入OutputStream將無濟於事。 相反,您可能需要通過Robot類將擊鍵發送到游戲窗口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM