Побаловавшись с прошивкой можно испортить устройство и аппаратно — например, включить мощность wifi-передатчика, на которую не рассчитано подведённое к нему питание.
А мне кажется, что копирование кода — сильно неправильный путь. Если есть частоиспользуемые куски кода, то их нужно вынести в библиотеку или .h-файл и таскать его в разные проекты.
В комментариях к той статье я высказал мнение, что кое в чем докладчики правы и переходить на эллиптическую криптографию уже давно пора. Ну в самом деле, кто-нибудь видел в интернете ECDSA сертификат? Хотя стандарту уже без малого 13 лет, мы продолжаем по старинке использовать старый добрый RSA.
Причина этому только одна — Windows XP, которая до сих пор крайне распространена, не поддерживает ECC-сертификаты.
Часть ведущих центров сертификации (например, Symantec и их бренды) уже умеют выписывать ECC-сертификаты, мы даже иногда даём их клиентам :)
Для вычисления угла удобнее использовать не теорему косинусов, а скалярное и псевдовекторное (косое) произведение векторов.
если a, b и c — радиус-векторы Ваших точек, то
BA = a — b = {x1-x2, y1-y2}
BC = c — b = {x3-x2, y3-y2}
( BA * BC ) = |BA| * |BC| * cos (BA,BC) = (x1-x2) * (x3-x2) + (y1-y2) * (y3-y2)
[ BA x BC ] = |BA| * |BC| * sin (BA,BC) = (x1-x2) * (y3-y2) — (y1-y2) * (x3-x2)
[ BA x BC ] / (BA * BC) = tg (BA,BC) = tg (BETA) = ((x1-x2) * (y3-y2) — (y1-y2) * (x3-x2)) / ((x1-x2) * (x3-x2) + (y1-y2) * (y3-y2))
Чтобы не путаться в знаках, можно использовать функцию atan2, которая вычисляет арктангенс y / x по заданным x и y c учётом знаков и нулей.
Фраза «NSA имело прямой доступ» должна быть заменена на «где-то утекли картинки и графики схемы, по которой NSA могло иметь доступ». С сертификатом всё намного проще — либо есть подписанный промежуточный CA у шпиёнов, либо его нет.
Да у не нужен он им — например, у FBCA, ECA, полиции и DoD есть свои CA [хомячки срочно побежали удалять их из списка доверенных].
В целом, да.
Но если такой CA подпишет запрос на сертификат от недостаточно проверенной стороны, то откреститься от него не получится, так как получившийся сертификат можно будет скачать и предъявить общественности. Это будет равносильно концу бизнеса для CA, поэтому никто так не делает :)
Хотя по интернету ходят слухи, что CA подписывает направо и налево промежуточные сертификаты для того, чтобы американские компании могли проксировать https-трафик своих сотрудников, я в это не верю и ни разу доказательств не видел.
Да, можно.
Подсовывать обновление не обязательно. В случае Windows можно сделать свой CA-сертификат и установить его в хранилище доверенных сертификатов (certmgr.exe/certmgr.msc).
Но зелёные полоски так делать не получится — нужно уже делать левое обновление для браузера.
Будем анализировать версию, которую можно скачать с old-games.ru: pre2orig.exe размером 63728 байт.
…
Запустив unlzexe, получаем pre2_1.exe размером 63728 байт.
Такой код, конечно, не нужен. Он был примером того, что поддерживать очень сложно.
Нужно — это, например, аналог Nullable из c# — вроде int/bool/ещё чего-то, что может быть ещё null и отличаться от нулевого значения этого типа. То есть обёртывание всех примитивных типов в отдельные классы.
Другим вопросом при конвертировании на c++ будет вопрос использования ссылок или указателей при передаче аргументов и отсутствие сборки мусора.
К сожалению, я не могу сказать, насколько всё плохо в случае контакта, но, видимо, если они приняли решение писать свой продукт, а не пользоваться готовым, то необходимость рефакторинга их не устраивала.
php это не c-подобный язык, так как в нём нет статической типизации.
Следующий код будет очень тяжело перенести на си/с++, сохраняя его смысл и не добавляя костылей: if ($x == 2)
$y = 1
else
$y = "один"
$z = 2 + $y;
$a = function ($x) {
return $z + 2;
}
var_dump($a($z));
Либо вводить волшебный тип вроде QVariant, который умеет быть контейнером для всех используемых типов/функций/классов.
Как правило, результат подобной трансляции пригоден только для выполнения на другом языке, но внутри состоит из кучи однотипных непонятных конструкций.
А если там ещё будет какой-нибудь оптимизатор, то совсем беда.
Причина этому только одна — Windows XP, которая до сих пор крайне распространена, не поддерживает ECC-сертификаты.
Часть ведущих центров сертификации (например, Symantec и их бренды) уже умеют выписывать ECC-сертификаты, мы даже иногда даём их клиентам :)
если a, b и c — радиус-векторы Ваших точек, то
BA = a — b = {x1-x2, y1-y2}
BC = c — b = {x3-x2, y3-y2}
( BA * BC ) = |BA| * |BC| * cos (BA,BC) = (x1-x2) * (x3-x2) + (y1-y2) * (y3-y2)
[ BA x BC ] = |BA| * |BC| * sin (BA,BC) = (x1-x2) * (y3-y2) — (y1-y2) * (x3-x2)
[ BA x BC ] / (BA * BC) = tg (BA,BC) = tg (BETA) = ((x1-x2) * (y3-y2) — (y1-y2) * (x3-x2)) / ((x1-x2) * (x3-x2) + (y1-y2) * (y3-y2))
Чтобы не путаться в знаках, можно использовать функцию atan2, которая вычисляет арктангенс y / x по заданным x и y c учётом знаков и нулей.
Да у не нужен он им — например, у FBCA, ECA, полиции и DoD есть свои CA [хомячки срочно побежали удалять их из списка доверенных].
Но если такой CA подпишет запрос на сертификат от недостаточно проверенной стороны, то откреститься от него не получится, так как получившийся сертификат можно будет скачать и предъявить общественности. Это будет равносильно концу бизнеса для CA, поэтому никто так не делает :)
Хотя по интернету ходят слухи, что CA подписывает направо и налево промежуточные сертификаты для того, чтобы американские компании могли проксировать https-трафик своих сотрудников, я в это не верю и ни разу доказательств не видел.
Подсовывать обновление не обязательно. В случае Windows можно сделать свой CA-сертификат и установить его в хранилище доверенных сертификатов (certmgr.exe/certmgr.msc).
Но зелёные полоски так делать не получится — нужно уже делать левое обновление для браузера.
Получился одинаковый размер?
Нужно — это, например, аналог Nullable из c# — вроде int/bool/ещё чего-то, что может быть ещё null и отличаться от нулевого значения этого типа. То есть обёртывание всех примитивных типов в отдельные классы.
Другим вопросом при конвертировании на c++ будет вопрос использования ссылок или указателей при передаче аргументов и отсутствие сборки мусора.
К сожалению, я не могу сказать, насколько всё плохо в случае контакта, но, видимо, если они приняли решение писать свой продукт, а не пользоваться готовым, то необходимость рефакторинга их не устраивала.
Следующий код будет очень тяжело перенести на си/с++, сохраняя его смысл и не добавляя костылей:
if ($x == 2) $y = 1 else $y = "один" $z = 2 + $y; $a = function ($x) { return $z + 2; } var_dump($a($z));
Либо вводить волшебный тип вроде QVariant, который умеет быть контейнером для всех используемых типов/функций/классов.
А если там ещё будет какой-нибудь оптимизатор, то совсем беда.