Как стать автором
Обновить
65
0
Дмитрий Майоров @dimview

Неправильные, но полезные модели

Отправить сообщение
Почему ж минивзрыв? Надо тогда уж максивзрыв, чтоб вывести из строя весь завод потенциального противника.

Ну и представьте себе, как дилер с покупателем будут убеждать таможню пропустить станок со взрывным устройством внутри. Если дилеру удастся перед этим убедить покупателя.
Прозевал в условии слово DWORD, простой перебор не подойдёт. Но можно узнать ключ, поксорив первый DWORD шифра и тела, пробовать расшифровывать этим ключом следующие DWORD-ы шифра и сравнивать результат с телом:

int main(void)
{
  unsigned* original = (unsigned*)strdup("Hello, world!");
  unsigned* encrypted = (unsigned*)strdup((char*)original);
  int len = strlen((char*)original);

  // Encrypt
  int key = 232222329;
  srand(key);
  printf("Encryption:\nOriginal   keystream   encrypted\n");
  for (int i = 0; i < len / sizeof(unsigned); i++) {
    int x = rand();
    encrypted[i] ^= x;
    printf("%08x ^ %d = %08x\n", original[i], x, encrypted[i]);
  }
  printf("\n");
  
  int candidate_key = original[0] ^ encrypted[0];
  printf("Candidate key=%d\n\n", candidate_key);
  srand(candidate_key);
  printf("Decrypting the rest:\nCyphertext keystream   decrypted\n");
  for (int i = 1; i < len / sizeof(unsigned); i++) {
    int x = rand();
    printf("%08x ^ %d = %08x, expected %08x\n", encrypted[i], x, encrypted[i] ^ x, original[i]);
  }
  printf("\n");

  return 1;
}
Если речь идёт о примере в самом конце, то ключ расшифровки нужен для того, чтобы определить, находится ли в памяти упомянутая программа. В памяти она хранится в зашифрованном виде, ключ неизвестен (и хорошо спрятан, лень искать).

Из-за слабости использованного шифрования вместо перебора всех возможных значений ключа (что слишком долго) достаточно перебрать 256 значений. Ещё быстрее зашифровать сигнатуру 256 ключами и искать эти зашифрованные строки алгоритмом Ахо-Корасика, который ищет все строки сразу, в один проход.
При шифровании используются последние 8 бит псеводслучайного числа. Переносы при уможнении и сложении идут влево, поэтому достаточно перебрать 256 возможных значений key — от 0 до 255, примерно так:

int main(void)
{
  char *original = strdup("Hello, world!");
  int len = strlen(original);

  // Encrypt
  int key = 232222329;
  srand(key);
  char *encrypted = strdup(original);
  printf("Original:\t");
  for (int i = 0; i < len; i++) {
    int x = rand();
    printf("%02x ", (unsigned)encrypted[i] & 0xff);
    encrypted[i] ^= x;
  }
  printf("\n");
  
  // Decrypt
  for (int j = 0; j < 256; j++) {
    printf("Attempt %d:\t", j);
    srand(j);
    bool success = true;
    for (int i = 0; i < len; i++) {
      int y = rand();
      char d = encrypted[i] ^ y;
      if (d != original[i]) {
        success = false;
      }
      printf("%02x ", (unsigned)d & 0xff);
    }
    if (success) {
      printf(" <-- this one!\n");
      return 0;
    }
    printf("\n");
  }
  return 1;
}
Про атомную бомбу загадочно получилось. Что там делает взрывающая жидкость, часовой механизм и гироскопы?

Достаточно было написать, что надо перерезать синий провод. Или красный? Нет, наверное всё-таки синий.
Вопрос про какой алгоритм, radix sort? Так ему всё равно, сложность та же — O(N*k).
Поясню на примерах.

Пример 1: Рекламщик приходит к статистику и говорит «надо протестировать влияние рекламной акции на объём продаж». Статистик задаёт наводящие вопросы и придумывает дизайн эксперимента — что с чем будем сравнивать, t-test между тестовой группой и контрольной до начала эксперимента, какие факторы надо контролировать и так далее. Проводится реклама, считаются результаты, сравниваются как было задумано, получается нормальный результат с доверительным интервалом.

Пример 2: Рекламщик приходит к статистику и говорит «мы тут провели рекламную акцию, как она повлияла на объём продаж?» Статистик придумывает, с чем можно было бы сравнить, сравнивает и офигивает — знак у результата не тот. Видать, что-то не так с контрольной группой. Начинаются поиски внешних факторов и прочие трюки, которые после проведения эксперимента уже делать поздно, и анализ данных продолжается до тех пор, пока не будет будет получен желаемый результат.

Чутьё мне подсказывает, что в статье описан второй пример. Если это так, то я аналогичным образом могу показать влияние чего угодно на что угодно. Это всё равно что выстрелить в стену амбара со ста метров, потом подойти к ней и нарисовать мишень вокруг попадания.
> Прошлый раз вы заказывали эту рекламу «на попробовать»

Как предполагалось измерять результат «попробовать»?
Конституционно закреплено право на владение и ношение оружия («keep and bear arms»). На изготовление просто нет запрета.

Но это всё на федеральном уровне, отдельные штаты и города могут принимать свои законы, которым тоже надо следовать.
В Штатах заготовка для нижней половины ствольной коробки (lower receiver) стоит $100. Доделать можно на сверлильном станке, который стоит $150. Остальные компоненты неномерные. 223-ей статьи в УК США нет, если человек имеет право владеть оружием, то он имеет право сделать оружие себе сам.
Не один, а три. Это среднее количество выстрелов в обычном уголовном инциденте. Есть даже мнемоника про «три метра, три выстрела, три секунды». Не все из них заканчиваются убийством, но с другой стороны некоторые инциденты происходят внутри помещений и системой не засекаются.

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

И так большинство из этих 39000 выстрелов наверняка ложные срабатывания. 200 убийств в год * 8 лет * 3 выстрела = 4800 выстрелов, то есть почти на порядок меньше.

Кроме того, глушитель размазывает звук по времени, а это уменьшает точность измерения времени задержки (и локализации выстрела).
В военном аналоге триангуляция как раз по времени и производится. Диаграмма направленности микрофона широкая.

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

На пистолет для скрытного ношения глушитель никто не ставит, но на домашней винтовке это вполне разумно.
В США глушители законны, надо только заплатить $200 налога. Но город Вашигтон — не Америка, там до последнего времени были запрещены не только глушители, но и огнестрельное оружие вообще.

С другой стороны бандиты глушителями не пользуются. Слишком дорого.
SHA1 не поможет. Злоумышленник, сидящий посередине, может заменить text на eviltext и сделать sha1sum eviltext >> eviltext, на приёмной стороне всё сойдётся. Поэтому и нужен MAC, он же keyed hash.
Я думаю под хешем имелся в виду MAC (имитовставка).
Проблема передачи ключа остаётся как в симметричном шифровании, так и в случае с одноразовым блокнотом. Разница только в размере ключа, на математику это никак не влияет.
А зачем ключ бесконечной длины? Достаточно длины передаваемого сообщения. Вполне себе абсолютная криптография, одноразовый блокнот.
Линза обычная, плоско-выпуклая, с присущей ей продольной сферической аберрацией. Не то чтобы у неё совсем не было фокусного расстояния, просто их у неё много.

Информация

В рейтинге
Не участвует
Откуда
США
Зарегистрирован
Активность