我的问题在于此代码:
try:
PassL = open(sys.argv[3], "r").readlines()
print "[+] Passwords:",len(PassL),"\n"
except(IOError):
print "[-] Error: Check your wordlist path\n"
sys.exit(1)
for word in PassL:
word = word.replace("\r","").replace("\n","")
login_form_seq = [
('log', sys.argv[2]),
('pwd', word),
('rememberme', 'forever'),
('wp-submit', 'Login >>'),
('redirect_to', 'wp-admin/')]
try:
login_form_data = urllib.urlencode(login_form_seq)
opener = urllib2.build_opener()
except:
print'Unknown ERROR'
try:
OP = opener.open(host, login_form_data).read()
except(urllib2.URLError), msg:
print msg
OP = ""
else:
'wrong?'
if re.search("WordPress requires Cookies",OP):
print "[-] Failed: WordPress has cookies enabled\n"
sys.exit(1)
#Change this response if different. (language)
if re.search("<strong>ERROR</strong>",OP):
print "[-] Login Failed :",word
else:
print "\n[!] Login Successfull:",'[#]The Information:',sys.argv[2],':',word
问题是,我提供sys.argv[2]
并获取txt
文件。例如:
www.py wow.txt
然后在我的python脚本中,我尝试使用wow.txt中的密码登录到一个网站。问题是,我在wow.txt
中放了15个密码,而我的www.py
脚本读取了最后一行!
脚本的目的是因为我忘记了很多我的Wordpress帐户(大约有六个帐户),实际上我正在考虑为每个帐户尝试25个密码。所以让我很容易 - 不要说“去手动试试”,只需给我代码或正确的方法。
答案 0 :(得分:3)
你的大部分代码根本不会运行,因为它位于except
块和无条件跟随sys.exit
- 因此执行将永远不会到达,即使触发except的情况确实发生异常(如果当然没有发生,则永远不会输入整个except
)。再看一下你发布的代码......:
except(IOError):
print "[-] Error: Check your wordlist path\n"
sys.exit(1)
for word in PassL:
word = word.replace("\r","").replace("\n","")
login_form_seq = [ (etc etc)
显然你的缩进是错的。我怀疑你想要的是:
except(IOError):
print "[-] Error: Check your wordlist path\n"
sys.exit(1)
for word in PassL:
word = word.replace("\r","").replace("\n","")
login_form_seq = [ (etc etc)
也就是说,只去两行(所以其余部分仍然是循环的一部分)。
我不知道如何在代码中进行如此残酷的缩进。也许你正在使用制表符(而不是每个缩进使用4个空格),你的编辑器或IDE以某种方式设置,这会误导你实际上有什么缩进。
答案 1 :(得分:2)
你的for word in PassL
循环只有一行,但看起来好像你可能希望缩进脚本的其余部分也是该循环的一部分。
目前,循环遍历列表,用新值替换变量word
(根据replace命令)。当循环结束时,word
中的最后一个值是列表中的最后一个值(没有行结束)。
增加脚本其余部分的缩进将为文件中的每一行运行所有代码。