как переставить символы строк в ударе?

Я не знаю дистрибутив ведьмы, Вы идете. На хинду я привык писать собственный initramfs init сценарий. Initramfs является только крошечной корневой фс только с существенными инструментами, установленными на нем, чтобы смонтировать Ваш корневой раздел и switch_root к Вашему реальному rootfs и выполнить реальный init для вступания во владение.

Поскольку ro базируется основная система, я предлагаю использовать squashfs. Это имеет полную основную поддержку ядра строки и делает Вашу систему быстро. Для Вашего наложения RAM можно использовать tmpfs, также поддерживаемый ядром.

Затем необходимо "объединить" их, чтобы быть как единственная файловая система. Я использую aufs. Это не поддерживается основным ядром строки и если это не поддерживается в патчах ядра Вашего дистрибутива, необходимо сделать исправление себя. (Нет ни одного FS объединения, поддерживаемого в основной строке),

Вы являетесь, вероятно, лучшими из записи той сами. (Я попробовал dracut и genkernel, но они не обеспечивают neccesary модули для обработки любого из моих случаев),

  • Создайте каталог (я использую /usr/src/initramfs)
  • Загрузите статический busybox на вышеупомянутый каталог. Это - статическая оболочка, если Вы al linux_utils neccesary к fsck, смонтируйтесь и т.д.

  • mkdir /usr/src/initramfs/{bin,dev,lib,mnt,sbin,tmp,etc,proc,sys} Для основной структуры

  • Создайте сценарий/usr/src/initramfs/init и вставьте все команды для монтирования разделов, ro наложение rw и файловая система
  • Объедините ro, и rw с aufs монтируют синтаксис.
  • Не забывайте --move Ваша точка монтирования к недавно созданному корню и umount вещи Вам больше не нужно
  • exec switch_root /sbin/init очищается (удаляет) все в загруженном initramfs и переключает корень для продолжения начальной загрузки.
  • Если у Вас есть какие-либо модули ядра, Вы не можете скомпилировать в ядро, но все еще нуждаться (как aufs): скопируйте их в /usr/src/initramfs/lib
  • Создайте сжатый архив с содержанием /usr/src/initramfs можно использовать gz, xz, cpio или wathever, который Вы любите
  • Поместите созданный архив в свой каталог начальной загрузки / и отредактируйте личинку для загрузки его как initrd.

Для проверки начальных загрузок системы с пользовательским изображением скомпилируйте собственное ядро также. (Действительно это не трудно): хинду документы ядра. В точке необходимо установить источники, просто заменить команду Вами диспетчер пакетов. Большинство дистрибутивов обеспечивает исходные пакеты ядра.

Если бы Вы готовы изменить дистрибутивы, чтобы сделать его, я предложил бы измениться на хинду или Arch. Они более гибки для "ручного материала" затем другие, и они оба предоставляют превосходную документацию для взламывания его в любой форме, которую Вы любите.

3
03.10.2014, 06:36
3 ответа

Я предполагаю, что вы хотите, чтобы он был рандомизирован, исходя из того, что "специальный" всегда первый. Вот гигантский хакерский способ, который делает это. ПРИМЕЧАНИЕ: Ваш сценарий - scr.bash .

$ echo $(./scr.bash | fold -w1 | shuf | tr -d '\n')

Примеры

$ echo $(./scr.bash | fold -w1 | shuf | tr -d '\n')
qT*Jyv8Y

$ echo $(./scr.bash | fold -w1 | shuf | tr -d '\n')
QbOvX3n-

$ echo $(./scr.bash | fold -w1 | shuf | tr -d '\n')
*Q5nGgIt

Это грубо, но показывает вам подход.

Подробности

Команда fold разбивает вывод на 1 символ в строке. Есть и другие способы сделать это, но я выбрал fold. Команда shuf может "тасовать" строки в случайном порядке. Команда tr удалит символы новой строки (\n) из первоначального сгиба, который мы сделали.

9
27.01.2020, 21:09

Чтобы переопределить системную команду cal и вместо этого выполнить команду, расположенную в файле /home/$ USER/bin/cal , добавьте следующую строку alias в файл ~/.bashrc :

alias cal=/home/$USER/bin/cal
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/lib/ast/bin:/home/$USER/bin:. 

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

-121--252918-

Следующие действия:

cd A
B=../B  # Put path to B here
for a in *_1.pdf; do b=${a%_1.pdf}; [ -f "$B/$b.pdf" ] && cp "$B/$b.pdf" "${b}_2.pdf" ; done

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

cd A
B=../B  # Put path to B here
for a in *_1.pdf
do 
    b=${a%_1.pdf}
    [ -f "$B/$b.pdf" ] && cp "$B/$b.pdf" "${b}_2.pdf"
done
-121--217726-

Ответ @ slm хорошо использует инструменты, доступные в оболочке, но в сочетании с вашим «scr.bash» является немного сложным. Если у вас есть Python (версия 2.7 или 3.x) вот сценарий, который делает ту же работу более читаемо:

#!/usr/bin/env python
"""
Create a formulaic but reasonably strong password.
"""

import random

def shuffled_password():
    """Using one random member of special and num and three members each
       from upper and lower return a shuffled string of their concatenation.
    """
    num = list('012345789')
    special = list('@#$%*-+')
    upper = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
    lower = list('abcdefghijklmnopqrstuvwxyz')
    random.shuffle(num)
    random.shuffle(special)
    random.shuffle(upper)
    random.shuffle(lower)

    letters = [special[0], num[0]]
    letters.extend(lower[0:3] + upper[0:3])
    random.shuffle(letters)
    s = ''.join(letters)  # funny way to turn list of chars into string
    return s

if __name__ == '__main__':
    print(shuffled_password())

Я написал этот код в ходе изучения комбинаторной сложности вашего метода. Кто-то из вышеупомянутых лиц использовал pwgen ; Я изначально думал, что это должно быть сильнее твоего домашнего метода, но я предполагал, что это неправильно.

Ваш метод, даже без перетасовки (букв) производит 21 миллиард комбинаций. Это дает оцененную энтропию из 39 битов. Это получает неофициальную оценку от испытания на прочность:

36 - 59 bits = Reasonable; достаточно безопасные пароли для сетевых паролей и паролей компании

Добавление окончательной тасовки добавляет около 5 бит энтропии в смесь. Для справки,

pwgen --symbols --numerals

вырабатывает пароли с оценочной энтропией 37 бит. Я связываю это с попыткой pwgen создать «запоминающиеся» пароли, которые каким-то образом уменьшают набор выходных данных. Это все еще «разумно» в соответствии с категориями испытания на прочность.

Предостережение: моя комбинаторная математика, особенно в мультинабор перестановки ограничены, исправления приветствуются.

2
27.01.2020, 21:09

Кажется, можно упростить ...

$ echo {A..Z} {a..z} {0..9} {0..9} '!@#$%^&*()_+=-' | tr ' ' "\n" | shuf | xargs | tr -d ' ' | cut -b 1-18
WhBypH7Pvmtow60D11

Я дважды добавил цифры, чтобы гарантировать добавление их в пароль.

И с символами:

$ echo {A..Z} {a..z} {0..9} {0..9} '! @ # % ^ & * ( ) _ + = - [ ] { } " < > . / ?' | tr ' ' "\n" | shuf | xargs | tr -d ' ' | cut -b 1-18
*p6-3XbEBAJL}%>t2U
0
27.01.2020, 21:09

Теги

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