[英]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.