Как отладить и зафиксировать медленное автоматическое заполнение в ударе?

Хеш является sha1 (sha1 (пароль)). С тех пор нет никакой соли (который является серьезным дефектом безопасности), можно искать хеш в таблице.

С просто инструментами POSIX плюс sha1sum от GNU coreutils или BusyBox, sha1 (sha1 (пароль)) является раздражающим для вычислений потому что sha1sum команда распечатывает обзор в шестнадцатеричном и нет никакого стандартного инструмента для преобразования в двоичный файл.

awk "$(printf %s 'right' | sha1sum |
       sed -e 's/ .*//' -e 's/../, 0x&/g' \
           -e 's/^/BEGIN {printf "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c"/' \
           -e 's/$/; exit}/')" | sha1sum

Python имеет стандартные обзоры в своих стандартных библиотеках, таким образом, это - простая острота.

printf %s 'right' |
python -c 'from hashlib import sha1; import sys; print sha1(sha1(sys.stdin.read()).digest()).hexdigest()'

Или с паролем в остроте:

python -c 'from hashlib import sha1; print sha1(sha1("right").digest()).hexdigest()'

26
04.04.2013, 11:09
6 ответов

Я не знаю о фиксации — существуют все виды вещей, которые могли пойти задержки причины. Но я могу предложить несколько подсказок для исследования.

Так же, как предположение возможно, существует каталог где-нибудь в пути поиска ($PATH, или некоторое место, где удар ищет данные завершения) это находится в файловой системе, которая не спешит отвечать. Обычно это - удаленные файловые системы, которые являются медленными, но это мог также быть провальный жесткий диск, подвешенный драйвер FUSE, и т.д.

Первый шаг для исследования должен работать set -x получить трассировку команд, которые оболочка выполняет для генерации завершений. Смотрите, где это приостанавливается.

Если это не дает достаточно информации, введите большие пушки. Отметьте идентификатор процесса оболочки (echo $$). В другом терминале, выполненном strace -f -s9999 -p$$ (или эквивалент strace при работе другой разновидности Unix). Strace перечисляет системные вызовы, выполненные процессом. Посмотрите, получает ли это, кажется, доступ к файлам, что это не было должно, или если доступ к некоторым файлам является медленным. Добавление опции -T к strace командная строка заставляет его показать время, проведенное в каждом системном вызове.

28
27.01.2020, 19:39

Ваше поле * NIX установлено в качестве клиента LDAP, у вас может быть эта проблема, даже вошена в систему как локальный пользователь.

Скучная информация о отладке: Отладка с помощью SET-X , я нашел завершение, которое висит на:

> set -x
> ls foo<tab>
...                     <--- lots of output removed
...
+ _quote_readline_by_ref foo quoted
+ '[' -z foo ']'
+ [[ foo == \'* ]]      <--- froze here
+ [[ foo == ~* ]]       <--- actually causing the trouble

подтвердить: Я подтвердил это ls ~ * который также повесил. Оказывается, мой сервер LDAP был вялым, но это не должно повлиять на такие вещи, как Bash завершение и Ls!

Решение: AHA, существует ошибка против Bash-завершения + LDAP, он будет зафиксирован в более новой версии, а простой патч , если вы понимаете хочу ждать. Завершение вкладки снова быстро, ура!

Вот щелчок в случае, если ссылка исчезнет. Он просто убегает ~ на строках 545 и 547:

--- /usr/share/bash-completion/bash_completion.orig 2014-11-06 10:36:14.981888369 +0100
+++ /usr/share/bash-completion/bash_completion  2014-11-06 10:36:25.142070963 +0100
@@ -542,9 +542,9 @@
     elif [[ $1 == \'* ]]; then
         # Leave out first character
         printf -v $2 %s "${1:1}"
-    elif [[ $1 == ~* ]]; then
+    elif [[ $1 == \~* ]]; then
         # avoid escaping first ~
-        printf -v $2 ~%q "${1:1}"
+        printf -v $2 \~%q "${1:1}"
     else
         printf -v $2 %q "$1"
     fi

Вам необходимо выйти из текущего сеанса SSH и повторно войти, чтобы этот патч вступил в силу.

19
27.01.2020, 19:39

Попробуйте переустановить bash -завершение

sudo apt-get install --reinstall bash-completion

Для меня это исправлено в Ubuntu 18.04.3 LTS

0
27.01.2020, 19:39

Также некоторые люди используют дополнительные функции автозаполнения, такие как автозаполнение Git bash . Медленность завершения Bash может быть результатом неправильной работы этих дополнительных функций автоматического завершения.

В моем случае это было автоматическое завершение Git bash, мой открытый ключ git был обновлен, поэтому он выполнял неудачную попытку аутентификации, что приводило к зависанию. Как только я удалил автозаполнение, оно снова стало быстрым. Поэтому я решил исправить мой ключ и повторно -включить его.

2
27.01.2020, 19:39

Другая стратегия заключается в просмотре файлов конфигурации Bash и деактивации всех дополнений. Затем проверьте, быстрее ли это. Если он не быстрее, это, вероятно, связано с медленным (удаленным )диском. Но если это быстрее, вы можете включать завершения по частям, пока не найдете то, что вызвало медлительность.

Я обнаружил, что у моего /etc/bash.bashrcесть эта часть:

if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
   . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
   . /etc/bash_completion
  fi
fi

И у моего местного ~/.bashrcбыло точно такое же. Таким образом, код завершения был включен дважды, и каким-то образом это добавило замедления при частичном заполнении неоднозначного имени каталога.

1
04.02.2020, 02:06

Я рекомендую проверить правильность работы системного звука . Звук звонка терминала, который не может воспроизводиться правильно, может быть причиной временного зависания. Например, :Демон PulseAudio завис/работает некорректно.

В моем терминале, когда я впервые нажимаю клавишу табуляции, она зависает на несколько секунд. После этого все было хорошо. Это также происходило, если весь текст в терминале стерся и была нажата клавиша возврата.

Я испробовал все вышеперечисленные методы, но они не сработали.

Отключение звонка терминала

Ctrl + Alt + T--> Правка --> Предпочтения --> {Профиль пользователя, обычно безымянный} --> Текст --> Звук --> Снимите флажок Звонок на клемме

8
02.11.2020, 05:01

Теги

Похожие вопросы