python阅读最后一行!

时间:2010-08-09 03:58:54

标签: 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 个答案:

答案 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中的最后一个值是列表中的最后一个值(没有行结束)。

增加脚本其余部分的缩进将为文件中的每一行运行所有代码。