2016-05-31 76 views
0

我正在使用這段代碼,將它喂入一大塊模糊的java腳本中,讓它吐出一堆迭代,並通過它傳遞和xor函數。我的問題是我需要知道哪個XOR值或循環的哪個迭代是正確的。我如何添加一些換行符 - 理想情況下是4-inbetween迭代和迭代值?我試過用一堆換行符和當前的循環值添加一個變量,但它不起作用。如何在迭代之間添加迭代信息?

#!/usr/bin/python 
    import os,sys 
    import subprocess 
    import re 
    import glob 
    from os import path 

    perl = "perl -pe 's/[^\d ]//g; s/(\d+)\s+/chr($1^" 
    userInput = input("") 
    tail = ")/ge'" 

    def deobBrute(): 
     for i in range(0, 102): 
      yield "{0}{1}{2}{3}".format(userInput, perl, i, tail) 

    brute = deobBrute() 

    for _ in range(0, 102): 
     print(subprocess.Popen(next(brute), shell=True)) 
+0

爲什麼不捕獲每個進程的stdout,而不是將它們打印到一個free-for-all方式的相同stdout中?或者在Python中重新實現Perl代碼? –

回答

0

我想通了,我存儲在輸出到使用可變check_output(),然後我打印後的字符串變量,和迭代數。

#!/usr/bin/python 
import os,sys 
import subprocess 
import re 
import glob 
from subprocess import check_output 
from os import path 

perl = "perl -pe 's/(\d+)\s+/chr($1^" 
userInput = input("") 
tail = ")/ge'" 

def deobBrute(): 
    for i in range(0, 102): 
     yield "{0}{1}{2}{3}".format(userInput, perl, i, tail) 

brute = deobBrute() 

for _ in range(0, 102): 
    out = check_output(next(brute), shell=True) 
    print("This Is Iteration ", _, out) 
0

的Python 3具有打印功能,其包括稱爲end='\n'默認命名參數。

你可以試着改變你的print語句是這樣的:

print(subprocess.Popen(next(brute), shell=True), end='\n\n\n\n') 
+0

這是我嘗試的第一件事,可悲的是它沒有做任何事情。 – Ryan