NFly: вы почитайте исходники сначала, книги надо подобрать в зависимости от того, что будет непонятно: может быть вам нужен учебник языка С++, а может быть мануал по внутренностям gcc.
> например безопасность majetree: вы не могли бы говорить более развёрнуто, какая именно безопасность? Приложения запущенные под wine не имеют доступа к файлам снаружи вайновской песочницы.
> при том, что учу все, что мне дают в универе и имею один из самых высоких баллов по этому предмету
молодец, возьми пирожок, и не думай, что для кого-то кроме тебя это что-то значит.
> ну, не '0', а 48, если быть точным... Adamos: если быть точным, то именно '0', поскольку '0' имеет тип char, а char может быть как знаковым, так и беззнаковым. 48 - это int.
Vi: сказанное относится не к регистрам, а к адресам вида сегмент:смещение записанным в память, которые могут быть загружены в любые регистры.
Приведённый вами код тоже подвергается релокации DOS'ом.
DS нужно установить потому, что при запуске EXE DS указывает на PSP, а не на сегмент данных.
Вот, например, у COM-файлов сегменты данных, кода и стека совмещены, а первые 256 байт зарезервированы как раз для PSP. Код и данные адресуются от начала PSP, куда указывает DS (а также CS и SS) при старте, поэтому модифицировать DS не нужно.
3 -- это зря. Если кто-то перехватил хоть раз какую-нибудь пару K1 и H1 он сможет неограниченно переходить к шагу 4. Это значит что он сможет нарушить работу нормальных ключей, заставляя замок генерировать новый H2.
> 1. Верно ли я понял, что при подстановке значения переменной мое экранирование не играло роли потому что баш разбил все на слова согласно значению переменной IFS?
Да, он разбил всё на слова согласно значению IFS. Но он всегда это делает вне двойных кавычек (из man bash, секция word splitting: The shell scans the results of parameter expansion, command substitution, and arithmetic expansion that did not occur within double quotes for word splitting). Проблема в том, что к кавычкам получившимся из расширения переменной это не относится. Т.е.
"a b" -- это одно слово, а Z='"a b"' ; $Z -- это два слова: "a и b".
> 2. В чем отличие между ${WHATTOBACK[@]} и "${WHATTOBACK[@]}" в данном случае?
Из man bash, секция Arrays: If the word is double-quoted, ... ${name[@]} expands each element of name to a separate word. Т.е. кавычки делают каждый элемент массива одним отдельным словом.
Павел Тананыхин: ну ок, положим, мы даже не знаем наверняка, x11 это, или что-то другое.
Запустите для начала sudo netstat -anpt | grep 600 чтобы посмотреть, что за процесс их открыл.