Как удалить любые неузнаваемые символы с вывода терминала [закрыто]

Если вы являетесь DnD'ing из того места, где вы не владеете, как / usr / share / applications, вы не можете, так как DnD - это движение. Так что просто скопируйте & amp; вставить

1
задан 8 January 2017 в 21:05

1 ответ

Вам нужно прочитать примерно в 8 раз больше байтов, чем желаемое количество букв и цифр, а затем удалить те байты, которые не кодируют буквы или цифры.

Цифры квадрата bizzare с кодами внутри отображаются потому, что ваш язык установлен в UTF-8, но вы читаете произвольные байты из /dev/urandom, которые (конечно) не соблюдают правила кодировки UTF-8 .

Я не делаю Python (но см. редактирование в конце этого ответа для возможно уродливого кода Python), но цель очень легко достичь с помощью простого сценария оболочки. Для генерации случайных паролей, содержащих буквы и цифры, вы можете использовать что-то вроде:

dd if=/dev/urandom bs=512 count=1 2>/dev/null |
tr -cd a-zA-Z0-9 |
cut -c 1-16 ; echo

Из 512 байт вы можете извлечь в среднем 124 буквы и цифры. (Есть 62 = 2 * 26 + 10 букв и цифр в 256 различных байтах, которые генерируются с той же вероятностью.)

Вы можете изменить a-zA-Z0-9, чтобы удалить символы, которые выглядят слишком похожими , Вы также можете изменить 16, если вам нужны более длинные или более короткие пароли.

Например, сгенерируйте 20-символьный пароль, исключающий символы, которые могут быть смущены (0O, 1Il):

$ dd if=/dev/urandom bs=512 count=1 2>/dev/null |
> tr -cd a-km-zA-HJ-NP-Z2-9 |
> cut -c 1-20 ; echo
JaQ2chDci4xVvzZuyGJm

(Это расшифровка, $ и > являются приглашениями командной оболочки.)

Edit: Это результат моих скромных навыков Python:

#! /usr/bin/env python
import os
import re
print(re.sub("[^a-zA-Z0-9]", "", os.urandom(256))[:6])
0
ответ дан 23 May 2018 в 02:37

Другие вопросы по тегам:

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