[python] пишу маленький брут под wordpress

Discussion in 'PHP' started by kakawin, 13 Jul 2012.

  1. kakawin

    kakawin New Member

    Joined:
    20 Aug 2011
    Messages:
    38
    Likes Received:
    1
    Reputations:
    0
    Вот кусочек:
    Code:
    цикл...
     цикл...
      цикл...
                f = urllib2.urlopen(request)
                text = f.read().decode('utf8')
                login = re.findall('admin-ajax.php', text)
                if len(login) != 0:
                    hello.write(suite+";"+user+";"+password); 
    
    
    и проблема в том, что hello.write выполнится тогда, когда прогонятся все 3 цикла. и даже если у меня ан первом шаге правильный логин и пасс, в файл он запишется когда закончатся все 3 цикла
     
    #1 kakawin, 13 Jul 2012
    Last edited: 13 Jul 2012
  2. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Ахха, это python!
    Приведи остальной код нечего не понятно,
    Можно грубо поступить при нахождении гуда возбудить искл., и отловить его в нужном месте.
     
  3. kakawin

    kakawin New Member

    Joined:
    20 Aug 2011
    Messages:
    38
    Likes Received:
    1
    Reputations:
    0
    ахахах 100 пудова, ошибся чуток.
    Весь код не приведу) Но вот его суть
    Code:
    for xxx1 in xxx2
         xxx1 = xxx1.strip()
         for yyy1 in yyy2
              yyy1 = yyy1.strip()
              for zzz1 in zzz2
                   zzz2 = zzz1.strip()
                   .......
                   f = urllib2.urlopen(request)
                text = f.read().decode('utf8')
                login = re.findall('admin-ajax.php', text)
                if len(login) != 0:
                    hello.write(suite+";"+user+";"+password); 
    
    И вот пока xxx1, yyy1 и zzz1 не проматаются - то hello.write не выполнится - а хотя должно на каждом шаге записывать
     
  4. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,519
    Likes Received:
    401
    Reputations:
    196
    Просто останавливай цикл и все.
     
  5. j0sur

    j0sur Member

    Joined:
    8 Apr 2012
    Messages:
    140
    Likes Received:
    7
    Reputations:
    0
    После hello.write... напиши hello.flush() и будет тебе счастье:)
    Все дело в том, что питон не пишет на прямую на диск, а сначала в буфер. flush() записывает этот бужер на диск, так же как и close(), но при этом не закрывает файл.
     
    #5 j0sur, 14 Jul 2012
    Last edited: 14 Jul 2012
  6. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    дык кроме всего ему и циклы-то прервать нужно, гуд он сразу находит, а циклы продолжают выполняться
     
  7. j0sur

    j0sur Member

    Joined:
    8 Apr 2012
    Messages:
    140
    Likes Received:
    7
    Reputations:
    0
    угу, только без кода и структуры циклов невозможно понять что и как рвать.
    Совет ТС: первый цикл -- перебор админок(думаю так и есть), в нем цикл перебора пассов, а уже в нем цикл перебора логинов. Тогда при гуде просто нужно написать <список пользователей>.remove(login) и break, тогда все будет хорошо, не будет выполняться лишней работы.
     
    #7 j0sur, 14 Jul 2012
    Last edited: 14 Jul 2012
  8. Patronik

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
    создай глобальную переменную/флаг, булевого типа. При нахождении гуда выставляй ее в true; В каждом цикле проверяй ее значение и при true, прерывай работу цикла.
     
  9. j0sur

    j0sur Member

    Joined:
    8 Apr 2012
    Messages:
    140
    Likes Received:
    7
    Reputations:
    0
    Дык тогда скрипт остановится после первого же гуда.
     
  10. Mr.Snuffer

    Mr.Snuffer Member

    Joined:
    2 Jul 2010
    Messages:
    140
    Likes Received:
    13
    Reputations:
    0
    Ну один цикл прервется, а остальные нет
     
  11. j0sur

    j0sur Member

    Joined:
    8 Apr 2012
    Messages:
    140
    Likes Received:
    7
    Reputations:
    0
    Блин,не правильно понял сначала, имхо, break для этих целей таки лучше.
     
  12. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    При нахождение гуда, пропиши.
     
  13. Patronik

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
    Я питона не знаю, но в других языках ексцепшны для других целей применяються. Как то странно вы советуете их использовать. Почему break не подойдет?
     
  14. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Patronik в брутерах - стандартная ситуация это НЕ найти правильной комбинации и перейти к следующей. И с точки зрения логики нахождение правильной комбинации - это действительно исключительная ситуация.

    break гарантирует прерывание только одного цикла и сам факт такого прерывания - не отражает того, что комбинация найдена. Так что использование собственного (а не базового) исключения - вполне оправдано.
     
    _________________________
  15. Patronik

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
    Ви имеете ввиду нетипичные спобобы использования исключений с целью управления ходом работы программы? То есть мы в коде обработки собственного исключения обрабатываем гуд?
     
  16. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Почему бы и нет, если гуд очень редкая вещь то можно и так.
     
  17. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    1) Права на файл при открытии указать не "w", а "a" (того файла, который скрывается под хендлером hello). Избавитесь от flush(). Подробнее можете прочитать в документации.
    2) Если ваша цель - точечный брут и вам нужно возвратить первый подходящий пароль, то:
    1) Вынести ваши вложенные циклы в функцию.
    2) После нахождения правильного пароля сделать return.
     
    1 person likes this.