Хеш является 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()'
Я не знаю о фиксации — существуют все виды вещей, которые могли пойти задержки причины. Но я могу предложить несколько подсказок для исследования.
Так же, как предположение возможно, существует каталог где-нибудь в пути поиска ($PATH
, или некоторое место, где удар ищет данные завершения) это находится в файловой системе, которая не спешит отвечать. Обычно это - удаленные файловые системы, которые являются медленными, но это мог также быть провальный жесткий диск, подвешенный драйвер FUSE, и т.д.
Первый шаг для исследования должен работать set -x
получить трассировку команд, которые оболочка выполняет для генерации завершений. Смотрите, где это приостанавливается.
Если это не дает достаточно информации, введите большие пушки. Отметьте идентификатор процесса оболочки (echo $$
). В другом терминале, выполненном strace -f -s9999 -p$$
(или эквивалент strace при работе другой разновидности Unix). Strace перечисляет системные вызовы, выполненные процессом. Посмотрите, получает ли это, кажется, доступ к файлам, что это не было должно, или если доступ к некоторым файлам является медленным. Добавление опции -T
к strace
командная строка заставляет его показать время, проведенное в каждом системном вызове.
Ваше поле * 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 и повторно войти, чтобы этот патч вступил в силу.
Попробуйте переустановить bash -завершение
sudo apt-get install --reinstall bash-completion
Для меня это исправлено в Ubuntu 18.04.3 LTS
Также некоторые люди используют дополнительные функции автозаполнения, такие как автозаполнение Git bash . Медленность завершения Bash может быть результатом неправильной работы этих дополнительных функций автоматического завершения.
В моем случае это было автоматическое завершение Git bash, мой открытый ключ git был обновлен, поэтому он выполнял неудачную попытку аутентификации, что приводило к зависанию. Как только я удалил автозаполнение, оно снова стало быстрым. Поэтому я решил исправить мой ключ и повторно -включить его.
Другая стратегия заключается в просмотре файлов конфигурации 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
было точно такое же. Таким образом, код завершения был включен дважды, и каким-то образом это добавило замедления при частичном заполнении неоднозначного имени каталога.
Я рекомендую проверить правильность работы системного звука . Звук звонка терминала, который не может воспроизводиться правильно, может быть причиной временного зависания. Например, :Демон PulseAudio завис/работает некорректно.
В моем терминале, когда я впервые нажимаю клавишу табуляции, она зависает на несколько секунд. После этого все было хорошо. Это также происходило, если весь текст в терминале стерся и была нажата клавиша возврата.
Я испробовал все вышеперечисленные методы, но они не сработали.
Отключение звонка терминала
Ctrl + Alt + T--> Правка --> Предпочтения --> {Профиль пользователя, обычно безымянный} --> Текст --> Звук --> Снимите флажок Звонок на клемме