1. Python / Говнокод #18061

    −180

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    try:
        ip_port = sys.argv[1].split(':')
        ip = ip_port[0]
     
        if len(ip_port) == 2:
            port = ip_port[1]
        elif len(ip_port) == 1:
            port = "80"
        else:
            raise IndexError
    except IndexError:
        print "Usage: %s <target ip:port>" % sys.argv[0]
        sys.exit(1)

    Эксплоиты. Неиссякаемый источник ГК.

    Я бы сделал так:

    try:
    ip_port = sys.argv[1].split(':')
    ip = ip_port[0]
    try:
    port = ip_port[1]
    except IndexError:
    port = 80
    except IndexError:
    print "Usage: %s <target ip:port>" % sys.argv[0]
    sys.exit(1)

    Запостил: 3_14dar, 25 Апреля 2015

    Комментарии (42) RSS

    • try:
          ip, port = sys.argv[1].split(':')
      except ValueError:
          ip, port = sys.argv[1], 80
      except IndexError:
          print 'Usage: %s <target ip:port>' % sys.argv[0]
          sys.exit(1)
      Ответить
    • unless ARGV.empty?
        ip, port = ARGV[0].split
        do_some_serious_hacka_shit(ip, port || 80)
      else
        puts "Usage: #{ __FILE__ } <target ip:port>
        exit
      end


      Мама меня учила, что эксепшены — это медленно. До сих пор для себя не решил, хорошо это или плохо, но стараюсь обходиться без них. Но питон все равно будет кидать эксепшн из сплита.
      Ответить
      • Ха-ха, руби.
        >Мама меня учила, что эксепшены — это медленно.
        >Парсинг командной строки
        УПОРОТ

        В руби параметры начинаются с 0? Слава богу, кто-то до этого допер.
        Ответить
    • Нормальные люди пользуются OptionParser, а не придумывают в очередной раз как распарсить аргументы.
      Если аргумент - URL, опять же есть urlparse.
      Ответить
      • показать все, что скрытоurlparse для хост:порт перебор, согласись. А argparse... во первых, сплоетописатели requests и urlencode не освоили, параметры запроса делают сложением строк, не то что парсер параметров. Во-вторых, я его как-то толком не освоил, чтобы для простых программ его хуячить, да и прыщами он попахивает. Как и весь питон.
        Ответить
        • Нет, не соглашусь. Кода писать меньше, сообщения об ошибках более вменяемые.
          Не освоил? - ну так об этом же и речь.
          > прыщами попахивает
          Потэтому ты будешь лепить бездарные интерфейсы командной строки из говна и палок?

          ЗЫ. Тут еще ошибки выводятся не в тот поток.
          Ответить
          • >Потэтому ты будешь лепить бездарные интерфейсы командной строки из говна и палок?
            Пока и так работает - да. Один раз меня заебало и я таки сделал с argparse. Но если у тебя только позиционные параметры, некоторые из которых необязательные?

            >сообщения об ошибках более вменяемые.
            Которые usage?
            Ответить
      • Библиотеки библиотеки, уже и свой код в питоне пописать негде! Не отбирайте хлеб у кодописцев...
        Ответить
    • > > sys.argv[1]
      > Эксплоиты.

      если кто-то уже может манипулировать коммандные строки, то про такие "эксплоиты" поздно думать.
      Ответить
      • Не понял мысль.
        Ответить
        • В жопу ебёшься?
          Ответить
          • Ебётся он, или нет, я не знаю, но имею убеждение, что у кое-кого питоны в ЖОПЕ.
            Ответить
            • А про PHP так уже не пошутишь... Вывод: у серьёзного ЯП должно быть серьёзное название.
              Ответить
              • 1024, залогиньтесь...
                Ответить
                • Опасайтесь своих желаний! Вы точно хотите, чтобы 1024 Хорси тут залогинились?
                  Ответить
                  • я хочу. Ведь 1024 Хорси это на 1024 хорси больше чем сейчас.
                    Ответить
                  • Один Хорся лучше тысячи двадцати четырёх сёмо-стерторов.
                    Ответить
                    • Да будет тебе известно, что один Стертор всех Вас всех за пазуху засунет.
                      Ответить
                  • Кегдану понравится, он любит поняшек.
                    Ответить
                    • Вообще я больше люблю женщин он 16 до 23
                      Ответить
                      • > женщин
                        > от 16
                        Ответить
                        • Мда, действительно многовато. Иногда бывает крайне полезно поучаствовать в воспитании будущей жены, а тут уже сформировавшаяся личность, печаль-беда.
                          Ответить
                        • в 16 некоторые уже на 23 выглядят, что поделаешь
                          Ответить
                      • Да Вы, батенька, педофил.
                        Ответить
                • А про PHP так уже не пошутишь... Вывод: у серьёзного ЯП должно быть серьёзное название.
                  1024 не пришёл, декремента хватит?
                  Ответить
    • Въебал минус.
      Ответить
    • Это скорее всего с CTF, где времени на написания нормального кода нет вообще. И не такое встретишь (и сам напишешь).
      Ответить
      • Ну ты знаешь, если раньше уже писал такие парсеры - воспроизведешь по памяти или скопипастишь. Да что там - хацкеры даже модуль requests не знают и делают запрос сложением строк без эскейпинга.
        Ответить

    Добавить комментарий