• Криптографический алгоритм шифрования по мастер-паролю

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    1. Начните с теории на уровне «для чайников».
    Вам нужно понять, что такое «симметричное» и «асимметричное» шифрование, что такое хэширование с т.з. криптографии, когда они используются, какие данные можно шифровать, а какие — нельзя (да-да!), базовые вещи про режимы работы шифров и использование-переиспользование ключей.
    2. Дальше — выбор алгоритмов не принципиален вообще.
    Реализация RSA — это ровно одна лаба по объему.
    Реализация простого симметричного шифра типа упомянутого XXTEA — еще меньше.
    Реализация приличной хэш-функции — тут посложнее (но подсказка: из приличного симметричного алгоритма шифрования можно сделать довольно приличную хэш-функцию).
    3. Принципиально — понимание что к чему (см. п.1).
    Можно вообще ничего не реализовывать, а сначала собрать из готовых кусков и поиграться.
    Ответ написан
    Комментировать
  • Как увидеть скрытый раздел на карте памяти под android?

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    Посмотрите сначала на карточку с компьютера через любой дисковый редактор, чтобы точно узнать сколько на нем разделов и какие на них файловые системы. Виндовый disk management не должен соврать про число разделов, но про типы файловых систем покажет только (ex)FAT и NTFS.
    Вам должно хватить загрузочного дистрибутива типа GParted live, parted magic, и т.д., или же триальной ознакомительной версии любого дискового редактора под винду.
    От этого будут полностью зависеть дальнейшие действия.
    Ответ написан
    1 комментарий
  • Странное поведение массивов в Си

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    Массив как переменная в C — это псевдоним адреса в памяти, по которому лежит его первый элемент.
    Массива ни в машинном коде, ни в памяти, строго говоря, не существует. Существует только его «содержимое» — его элементы.
    При обращении к элементу массива действия производятся машиной прямо над его содержимым по вычисленному адресу.
    Самого массива — не существует.
    Всякий раз, когда в С Вы работаете с массивом — компилятор использует или указатель на первый элемент массива (например, когда Вы передаете массив в функцию), или адрес первого элемента массива, а машина далее с этим работает.

    Указатель в C — это переменная, содержащая адрес в памяти.
    Указатель в машинном коде и памяти — существует. Он имеет значение — число размером с разрядность машины, а значение числа — это адрес в памяти.
    Указатель как число — может быть передан в регистрах, лежать на стеке, и т.д.
    При обращении к байту/слову/двойному слову/… по смещению через указатель, в машинном коде указатель разыменовывается (в явном виде берется его значение=адрес) т.е. в машинном коде происходят несколько другие действия, чем в случае для массива.

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

    Вот, кстати, приличное описание различий на английском:
    eli.thegreenplace.net/2009/10/21/are-pointers-and-arrays-equivalent-in-c/
    Ответ написан
    Комментировать
  • Запустить Perl-скрипт на Windows

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    Настоящая проблема в этом:

    List form of pipe open not implemented at b:\jpegrescan.pl line 33.

    В ActivePerl на винде нельзя делать так:

    open TRAN, "-|", "jpegtran", "-v", @strip, "-optimize", $fin or die;
    

    Ответ написан
    7 комментариев
  • ГОСТ 89 и stunnel?

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    Везде пишут, что для работы с ГОСТ нужен, якобы, пропатченный stunnel.
    Как именно патчить — не ясно, но вот здесь есть намеки, что надо пересобрать с опцией --disable-rsa
    (Эта компания, вроде бы, и добавила код с поддержкой ГОСТ в openssl, кстати)
    cryptocom.ru/opensource/stunnel.html
    Stunnel поддерживает возможность подгрузки engine через свой конфигурационный файл. Поэтому модификация исходных текстов не требуется. Но при сборке скрипту configure требуется указать опцию --disable-rsa. Stunnel, собранный без этой опции поддерживает только алгоритм RSA. С этой опцией поддерживаются все алгоритмы, поддерживаемые нижележащей OpenSSL, в том числе и RSA.

    ВНИМАНИЕ! Stunnel не считывает стандартный конфигурационный файл OpenSSL. Поэтому engine должна быть размещена в умолчательном каталоге engines установленной OpenSSL.
    Ответ написан
  • Как быстро идентифицировать сменяющихся пользователей за компьютером?

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    1) Смарт-карты Вы уже упомянули — потребуется только соответствующий плагин к браузеру, но если ничего другого не останется — нормальное промышленное решение.
    2) А вот сканер штрих-кодов прикрутить к вебу существенно проще, т.к. они обычно работают как клавиатура. Сотрудникам наклеиваем штрих-коды на бейджи. Сотрудник подошел к терминалу, просканировал свой бейдж (т.е. по сути сканер вбил его логин!), дальше руками вбил число в интерфейс.
    3) Если сотрудников на один компьютер не так чтобы очень много, а, скажем, 5*5=25, то можно в веб-интерфейсе тупо нарисовать кликабельную сетку на весь экран с картинками-аватарками для каждого. Если сетка 5*5, то промахнуться будет довольно сложно. Плюс можно устраивать соревнования, помещая стахановцев в центр сетки, и т.д.
    Ответ написан
    3 комментария
  • Размагничивание магнитной полосы чипованой карты, в целях безопасности

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    Правильным решением, имхо, будет сначала настойчиво пообщаться с банком на предмет блокировки транзакций по магнитной полосе своей чиповой карты. Примеры успеха есть.
    Ответ написан
    Комментировать
  • Поиск подстроки в строке в CMD

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    0) Идея: в каждом IF'е брать подстроку. К сожалению, подстроку в цикле взять довольно сложно (даже enabledelayedexpansion не помогает, плюс прочие багофичи), но мы можем снова заюзать findstr по строке! (echo ololo | findstr lol > NUL)

    1) findstr устанавливает return code при выходе (а он записывается шеллом в ERRORLEVEL). 0 == нашел, 1 == не нашел

    2) ERRORLEVEL работает довольно интересно:
    условие вида IF NOT ERRORLEVEL 1 это значит ERRORLEVEL == 0 :)

    3) Собираем все вместе:
    @echo off
    set usr=%1
    for /f "tokens=1 delims=/.- " %%a in ('type db.txt') do (
    echo %%a | findstr VOC > NUL
    if NOT ERRORLEVEL 1 (
    echo TEST! with %%a we do:
    echo TEST! db2 grant execute on function "WEB.F1(INTEGER)" to user %usr% with grant option
    echo TEST! db2 grant execute on function "WEB.F2(INTEGER)" to user %usr% with grant option
    echo TEST! 
    ) else (
    echo %%a | findstr DAT > NUL
    if NOT ERRORLEVEL 1 (
    echo TEST! with %%a we do:
    echo TEST! db2 grant execute on function "WEB.F3(INTEGER)" to user %usr% with grant option
    echo TEST! 
    )
    )
    )
    


    Результат:
    B:\>test.bat user1                                                                                               
    TEST! with VOC we do:                                                                                            
    TEST! db2 grant execute on function "WEB.F1(INTEGER)" to user user1 with grant option                            
    TEST! db2 grant execute on function "WEB.F2(INTEGER)" to user user1 with grant option                            
    TEST!                                                                                                            
    TEST! with DAT1 we do:                                                                                           
    TEST! db2 grant execute on function "WEB.F3(INTEGER)" to user user1 with grant option                            
    TEST!                                                                                                            
    TEST! with DAT2 we do:                                                                                           
    TEST! db2 grant execute on function "WEB.F3(INTEGER)" to user user1 with grant option                            
    TEST!                                                                                                            
    TEST! with DAT3 we do:                                                                                           
    TEST! db2 grant execute on function "WEB.F3(INTEGER)" to user user1 with grant option                            
    TEST!                                                                                                            
    TEST! with DAT4 we do:                                                                                           
    TEST! db2 grant execute on function "WEB.F3(INTEGER)" to user user1 with grant option                            
    TEST!                                                                                                            
    
    Ответ написан
    1 комментарий
  • Как определить, в какой функции происходит сохранение файла?

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    В общем случае задача «узнать, кто что сделал» решается API-перехватчиком, например, Process Monitor (procmon.exe) от Microsoft.
    technet.microsoft.com/ru-ru/sysinternals/bb896645.aspx

    1) Запускаете Process Monitor
    2) настраиваете фильтр на нужный процесс/файл/…
    3) воспроизводите проблему
    4) находите соотв. событие в логе Process Monitor (например, создание файла)
    5) по двойному клику на событие можно найти стек вызовов. Всё.

    А иначе придется честно ловить дебаггером, конечно (по старинке ставить брейкпоинт на NtCreateFile).
    Ответ написан
    4 комментария
  • Архитектура распределённого месенджера, request for comments?

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    Я бы пошел дальше и попытался бы разработать не просто распределенный мессенджер, а полностью распределенный и децентрализованный транспорт+key/value storage, удовлетворяющий заданным требованиям (надежная взаимная аутентификация + анонимность + non-repudiation +… ). Задача, конечно, довольно амбициозная, но почему бы и нет?
    Ответ написан
    7 комментариев
  • Математическая модель квадрокоптера

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    На русском языке не подскажу, но
    scholar.google.ru/scholar?q=quadcopter+balancing+algorithm
    scholar.google.ru/scholar?q=quadcopter+dynamics
    выдает множество статей c мат. моделями, а дальше можно смотреть по их источникам, и т.д.
    Ответ написан
    1 комментарий
  • Сохранение всех без исключения входящих Ethernet-кадров на Linux?

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    ЕМНИП для хоста с точки зрения уровня L2 входящий мультикаст отличается только MAC-адресами. Если интерфейс в promisc mode то, по идее, адаптер не должен даже и смотреть на MAC адреса входящих пакетов и молча жрать их все.

    А в Вашем случае мультикаст только не сниффится tcpdump'ом или же вообще не проходит через бридж?
    Ответ написан
    2 комментария
  • Непонятный паразитный входящий трафик до 30мб/с

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    Чтобы посмотреть — надо снять tcpdump с WAN интерфейса. В ZyXEL Keenetic нету tcpdump (но его можно туда поставить — нам нужно только поднять SSH на роутере и зайти из-под root, а дальше opkg install tcpdump и можно запускать tcpdump). Собранный файл читаем wireshark'ом.
    Ответ написан
    7 комментариев
  • Как спрятать urlbar в safari IOS 7

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    Говорят, что никак нельзя.

    www.mobilexweb.com/blog/safari-ios7-html5-problems-apis-review
    (http://stackoverflow.com/questions/18813476/is-it-possible-to-hide-the-address-bar-in-ios-7-safari)

    Судя по всему, и в апдейте 7.0.2 тоже нельзя.
    Люди жалуются, что все сломалось (особенно полноэкранные браузерные игрушки).
    Ответ написан
  • Посоветуйте книги по теории надежности технических систем

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    Вы довольно широко описали область. Технические (инженерные, ...) системы вообще и ИТ-системы, особенно программную часть последних, довольно сложно накрыть одним ударом.

    По моделированию/оценке/проектированию с т.з. надежности обще-технических систем есть известный труд Patrick P. O'Connor, Andre Kleyner, «Practical Reliability Engineering»:
    www.amazon.com/Practical-Reliability-Engineering-Patrick-OConnor/dp/047097981X
    Там и теория, и упражнения. Но по ИТ-системам там практически ничего нет, одна глава по надежности ПО (когда на профильных специальностях это минимум целый курс).
    Ответ написан
    2 комментария
  • Каждому пользователю файл по уникальной ссылке[NGINX, PHP]

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    Есть вот такой модуль:
    wiki.nginx.org/HttpSecureDownload

    И еще вот такой:
    wiki.nginx.org/HttpSecureLinkModule
    Для использования второго потребуется написать некоторый код, который будет генерить токены (все это описано по ссылке).
    Ответ написан
    2 комментария
  • Перенаправление STDERR и STDOUT в разные скрипты на STDIN?

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    Можно, например, создать именованные пайпы (google: mkfifo).

    Сделаем тестовую прогу test_redir.c следующего содержания:
    #include <stdio.h>
    int main()
    {
    fprintf(stdout,"Test STDOUT\n");
    fprintf(stderr,"Test STDERR\n"); return 0;
    }


    Собрали, подготовили к запуску.
    $ gcc test_redir.c -o test_redir
    $ chmod +x test_redir

    Теперь создадим пайпы:
    $ mkfifo test_out
    $ mkfifo test_err

    Запустим
    $ ./test_redir 1>test_out 2>test_err

    Теперь в двух новых терминалах посмотрим, что в пайпах:
    $ cat tmp/test_out
    Test STDOUT
    $ cat tmp/test_err
    Test STDERR
    Это плохой пример, поэтому в первом терминале вывод появится только после того, как мы посмотрим, что в пайпе test_err, но идея должна быть ясна.
    Ответ написан
    2 комментария
  • Оптимальные параметры для pbkdf2

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    Оптимальные по какому критерию? :)
    Попробуйте сначала понять, от кого защищаемся и чем готовы пожертвовать.

    Если нужны конкретные рекомендации, то открываем, например, NIST SP800-132 «Recommendation for Password-Based Key Derivation», глава «A2. PBKDF»
    csrc.nist.gov/publications/nistpubs/800-132/nist-sp800-132.pdf
    Или те же самые вещи можно прочитать тут, например: www.ietf.org/rfc/rfc2898.txt

    image

    У Вас 32 байта соль? Тогда все хорошо. От длины соли скорость вычисления внутри системы не сильно зависит, а вот атакующему будет сильно хуже, чем если бы соль была, скажем, 32 бита.

    image

    Смотрим дальше: количество итераций в PBKDF, грубо говоря, линейно увеличивает сложность атаки.
    Поэтому делаем бенчмарк и ставим столько итераций, сколько влезет. 1000 рекомендовалось давно (2000 год), сейчас ставят больше — 10000 и т.д.
    Ответ написан
    2 комментария
  • Можно ли создать аналог корзины на сетевом диске?

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    Я знаю и использую только один способ: сетевой диск поднимается не на Windows-машине, а на любом *nix сервере при помощи Samba, а далее — тривиальная настройка (man vfs_recycle, www.samba.org/samba/docs/man/manpages/vfs_recycle.8.html).

    Также есть различные способы заставить локальную машину при удалении файлов на сетевом диске помещать их в локальную же корзину (на Windows 7 и выше — из коробки, а для всех — при помощи разного рода утилит).
    Ответ написан
    Комментировать
  • Как собрать ошибки sqlplus?

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    К сожалению, у sqlplus нет разделения на stdout и stderr. Т.е. перенаправлять просто нечего. Можно разве что распарсить получившийся лог.

    P.S. имхо, при наличии у Оракла массы способов импорта-экспорта данных, в консерватории тоже стоит что-то поменять, чтобы больше не гонять гигабайтные файлы с инсертами :)
    Ответ написан
    2 комментария