Nano Hash - криптовалюты, майнинг, программирование

Сбой использования подпроцесса Python.Popen со сценарием входа в систему

Я пытаюсь создать сценарий входа в систему, используя python, который попытается войти в систему с помощью команды оболочки login -q MyUsername и попробовать несколько паролей. Я уже могу сгенерировать необходимые пароли, но когда я пытаюсь войти в систему, используя приведенный ниже код, команда login отвечает, что я ввел неправильное имя пользователя, хотя я знаю, что пишу его правильно. Чтобы уточнить: я создаю сценарий для входа в систему с помощью команды оболочки login, когда я уже знаю имя пользователя, но не пароль. В приведенном ниже коде показано, что я делаю (перебор паролей).

for password in passwordList:
    p = Popen(["login","-q","MyUsername"], stdin=PIPE, stdout=PIPE) #The username MyUsername is correct, 100% sure
    print repr(p)

    stdout_value = p.communicate(password)[0] #
    print(str(stdout_value))
    if repr(stdout_value).startswith('Login incorrect\nlogin: '):
        print "ERROR"
    else:
        print "GOOD"
        break

Если я ввожу команду login -q MyUsername непосредственно в терминал, мне будет предложено ввести мой пароль, тогда как использование сценария возвращает «Неверный вход в систему». Я также запутался, как работает Popen и как писать в stdout.

Заранее спасибо!

(Другой вопрос: есть ли более простой способ сделать это? (Попытка войти в систему с использованием нескольких паролей) Я использую login, потому что он не имеет блокировки, и пользовательские данные не могут быть доступны, если это не суперпользователь).


Ответы:


1

login может считывать/записывать напрямую с/на терминал (терминал) за пределами процесса 'stdin/stdout. Вместо этого вы можете использовать pexpect, прочитайте первую причину в его документах В: Почему бы просто не использовать канал (popen())?:

import pexpect
output, rc = pexpect.run("login -q MyUsername",
         events={"(?i)password: ": "password"},
         withexitstatus=True)

Есть ли более простой способ сделать это?

Прочитайте хэши из /etc/passwd, /etc/shadow и проверьте те, которые используют crypt.crypt(). Или используйте специальный инструмент для проверки слабых паролей, например "John the Reaper". ".

27.10.2014
  • Спасибо, pexpect сработал для моей потребности. По второму вопросу я смотрел /etc/passwd но файл не содержит никаких хэшей, он содержит адреса для приложений (кажется?) пример: _mysql:*:74:74:MySQL Server:/var/empty:/ usr/бин/ложь. 27.10.2014
  • @romsearcher: вы видите какое-либо другое имя файла (кроме /etc/passwd) в ответе? 27.10.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..