2016-05-31 78 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