Python подавляет вывод подпроцесса

  • есть задача взлома.
  • у меня есть защищенный паролем файл под названием "lock"
  • открытие файла с паролем возвращает QR-код.
  • необходимо присвоить QR переменной var.
  • Не хочу каждый раз отображать QR

Работает, но имеет вывод:

var = os.system("./lock %s" % password)

SO говорит, что я должен использовать:

var = subprocess.Popen("something.py")

пытался пройти, как указано выше, но это не удалось, потому что «Popen» хочет список или строку. если я сопоставлю команду в виде строки перед использованием popen, она все равно будет отображаться.

что уже читал (по крайней мере)

Подавить вывод подпроцесса Передача переменных в Subprocess.Popen Как просто вызвать команду и не получить результат

полный код:

import sys
import os
import subprocess

def file_len(fname):
with open(fname) as f:
    for i, l in enumerate(f):
        pass
    return i + 1

   lock = "/root/share/lock"
   print "Hello"
   passfile = raw_input("Enter the password file name: ")
   assert os.path.exists(passfile), "I did not find the file at, "+str(passfile)
   devnull = open(os.devnull, 'wb')
   trys = file_len(passfile)
   passfile = open(passfile,'r+')
   cnt = 1
   wrong = os.system("./lock penis")

   for password in passfile:
   #       com = ("./lock %s" % password)
   #       var = os.system("./lock %s" %  password)
   var = subprocess.Popen("./lock  %s" % password, stderr=devnull, stdout=devnull)

   if var == wrong:
            os.system('clear')
            cnt += 1
            print ("Try  %s/%s " %(cnt, trys))
            print ("Currently PIN: %s" % password)
    else:
            print "!!!!!!!!!!!!!!!!!"
            print password

перенаправление на devnull тоже не работает. OSError: [Errno 2] Нет такого файла или каталога: ''


person cuilster    schedule 24.04.2018    source источник


Ответы (1)


Я предлагаю вам попробовать использовать os.devnull напрямую в качестве цели, а не открывать как файл. Я считаю, что вы получаете ошибку в null

devnull= open(os.devnul, 'wb')

Резон будет заключаться в том, что /dev/null — это скорее заполнитель для отправки в ничто (пустота), а не фактический файл, который вы можете открыть.

person Abhishek P    schedule 08.05.2018