Pull to refresh
43
0
Дмитрий Черняченко @sabio

User

Send message
Когда смотрел видео геймплеея, постоянно цепляла мысль, что голос вступает слишком рано.
Мне кажется, к некоторым репликам хорошо бы добавить небольшую паузу вначале.
Иначе получается, что «всё разбили нахрен» звучит одновременно со взрывом танка или даже чуть раньше.
Человеки не умеют так быстро реагировать. И небольшая задержка, на мой взгляд, добавила бы озвучке реализма.
Хотя, в запале игры это всё, быть может, и не имеет значения.
а что, где-то ещё берут плату за входящие СМС-ки?
это ведь чистейшей воды подстава: получил пачку СМС-спама — бабки на бочку
Пройдите на 4pda — 4pda.ru/forum/index.php?showtopic=190516
(там в шапке список других аналогичных программ)
Но если очередная буква совпадает с первой буквой следующего слова, то надо переходить к сравнению следующей буквы со второй буквой следующего слова и т.д. В итоге, получим квадратичную сложность.

Например:
Unnnnnnnnnnnnnnniversity Nnnnnnnnnnnnichego Nnnnnnnnnnnnne Delanya
Или менее тривиальный вариант:
Uninininininininininiversity Ninininininininininichego Nininininininininini Delanya
на torrentz.eu, кстати, раздача засветилась уже 15 часов назад
там, правда, на английском большинство раздач, зато появляются очень оперативно: вечером в эфире, на следующее утро в раздаче
Может, знает кто…
Нельзя ли с помощью intent'ов (или ещё как) делать sign in / sign out в Hangouts?
Я бы хотел настроить это по расписанию в какой-нть Llama.
я ведь правильно понимаю, что разлочивать бутлоадер в таком случае не нужно?

качаешь этот пакет, заливаешь его в телефон через adb sideload и апдейтишься себе, как будто он сам пришёл через OTA

правда, работает это, как я понимаю, только с официальным 4.2.2 — на кастомную прошивку такое накатить не получится

вот тут, кстати, аналогичный пакет для Nexus 4
Так объясните тёмному, что же именно не так с «терциалом»?

Ну вот выше вы написали про гайки, провода и выключатель. Если последнее ещё и правда может быть аргументом в плане удобства, то «некрасивый провод», уж простите, это какое-то пижонство. Вам же лампа эта для работы нужна, а не для «обстановки».

Я отнюдь не хочу сказать, что лучше IKEA нет ничего. Но честно пытаюсь понять, что же именно в этой лампе так плохо?
вы бы в 3 года уже занялись веб-разработкой? о_О
Я писал выше в коментах: под винду есть ManicTime
А под линукс есть Project Hamster — только он сам не записывает программы, надо все занятия вводить руками.
Простите за любопытство — а что не так с «терциал»? Она ведь один-в-один такая же. Ну только что с пружинками на «суставах».
Вдруг кому пригодится.
Есть аналогичная под Windows — ManicTime
Пришлось сдуть пыль с компилятора для C (на удивление, ни в одном более высокоуровневом языке нельзя подсунуть в MD5 начальный контекст).

Я немного изменил формат передачи сообщения серверу, чтобы пример был более наглядным.

    MD5_CTX seed;

// оригинальный запрос к серверу:
// example.com/?msg=status:protected&sig=039f220db17cebe441bc4d34e6683963

    MD5_Init(&seed);
    // секрет + тело сообщения
    char *msg = "900150983cd24fb0d6963d7d28e17f72" \
        "status:protected";
    printf("%s\n", md5(msg, strlen(msg), &seed));
    // = 039f220db17cebe441bc4d34e6683963 - это и есть подпись для исходного сообщения

    MD5_Init(&seed);
    // та самая исходная подпись, порезанная на части
    seed.A = 0x0d229f03;
    seed.B = 0xe4eb7cb1;
    seed.C = 0x344dbc41;
    seed.D = 0x633968e6;
    // длина исходного сообщения с секретом в битах, округлённая вверх до кратного 512 значения
    seed.Nl = 512;
    seed.Nh = 0;

    // вычисляем новый хэш (= подпись), исходя из начального значения и нашей "добавки"
    char *extension = ",status:hacked";
    printf("%s\n", md5(extension, strlen(extension), &seed));
    // = 164bc99c345fd21e1e810bf9a41222b

// подделанный запрос к серверу:
// example.com/?msg=status:protected%80%00%00%00%00%00%00%00%80%01%00%00%00%00%00%00,status:hacked&sig=164bc99c345fd21e1e810bf9a41222b

    // а вот так будет считать хэш сервер
    // я специально порезал строку на части, чтобы лучше была видна структура:
    // секрет, исходное сообщение, паддинг, длина исходного сообщения с секретом, "добавка"
    MD5_Init(&seed);
    char *msg2 = "900150983cd24fb0d6963d7d28e17f72" \
        "status:protected" \
        "\x80\x00\x00\x00\x00\x00\x00\x00" \
        "\x80\x01\x00\x00\x00\x00\x00\x00" \
        ",status:hacked";
    printf("%s\n", md5(msg2, 78, &seed));    // strlen() тут не сработает - потому 78
    // = 164bc99c345fd21e1e810bf9a41222b - наша подпись подошла!


Единственный оставшийся здесь момент — неизвестная длина секрета. Но она, скорее всего, либо одинаковая для всех пользователей, либо варьируется не сильно.
К 60-ти летию и русские альпинисты приготовили мировой рекорд — Валерий Розов совершил base jump с самой большой высоты
А что такое этот «контейнер» в контексте, например, HTTP запроса?

Предлагаете придумать какой-то свой формат передачи параметров и заново реализовывать формирование запроса на клиенте и парсинг на сервере? А также обработку специальных случаев (мульти-значения, искейпинг) и пр. Т.е., по сути, отказаться от всех удобств работы с параметрами, предоставляемых используемым фреймворком (никаких больше params[:user_id] «из коробки»).
Именно так — не получится.
Суть Length extension в том, что к сообщению добавляются новые байты. Заменить исходные не выйдет.
Т.е. в лучшем случае, у вас получится что-то вроде
site.com/?param=protected\x80\x00\x00...\x00\xNN&param=hacked
Собственно, какой ник — такие и комментарии :)
Вы правы. Разобрался с chosen prefix / preimage. Спасибо.

Но, насколько я понимаю, это всё равно не отменяет уязвимости схемы H(message | key):
appending the key using MAC = H(message | key), suffers from the problem that an attacker who can find a collision in the (unkeyed) hash function has a collision in the MAC

Именно о ней я и писал в самом начале этой ветки.
Собственно, потому в HMAC и выбрали другую схему — H(key1 | H(key2 | message))

Information

Rating
Does not participate
Registered
Activity