Про компьютерные игры

Я люб­лю ком­пью­тер­ные игры. Ком­пью­тер­ные игры, соб­ствен­но, для меня ста­ли пор­та­лом в рабо­ту в сфе­ре IT. Нача­лось всё с того, что мне захо­те­лось играть в Дум со зву­ком вме­сто мерз­ко­го пища­ния РС-спи­ке­ра. Зна­чит, при­шлось выяс­нять, как уста­нав­ли­вать зву­ко­вую кар­ту. Потом вышел Дум 2, и на послед­нем уровне, когда мон­стров и про­чих граж­дан ста­но­вит­ся очень мно­го, на 4 мега­бай­тах памя­ти оно рабо­та­ло, дико сво­пясь. Надо было, зна­чит, уве­ли­чить (я добил в резуль­та­те, до 12 мега­байт, доуста­но­вив план­ку памя­ти на 8 мег. 72-пино­вый СИММ сто­ил мне 105 монет, как щас пом­ню). Ну, и пошло-поеха­ло.

Ком­пью­тер­ные игры так­же намно­го полез­нее для моз­гов детей, чем про­смат­ри­ва­ние мульт­филь­мов и кино. Пото­му что надо вклю­чать моз­ги вме­сто тупо­го потреб­ле­ния видео­ма­те­ри­а­ла. Ну, и коор­ди­на­ция «глаз-рука» заод­но раз­ви­ва­ет­ся.

Самым боль­шим под­твер­жде­ни­ем обу­ча­ю­ще­го потен­ци­а­ла игр в лич­но моей жиз­ни было когда я взял пару заня­тий по управ­ле­нию само­лё­том. До это­го я весь­ма плот­но играл в Мик­ро­соф­тов­ский «Флайт Симу­ля­тор», так что когда я залез в каби­ну став­шей мне уже род­ной Сесс­ны-172, я без запин­ки рас­ска­зал инструк­то­ру, где какой при­бор, и что он пока­зы­ва­ет.

А теперь мне, воз­мож­но, пред­сто­ит выпол­нить зем­ля­ные рабо­ты с при­ме­не­ни­ем экс­ка­ва­то­ра. Его неслож­но взять в арен­ду, но надо знать, как им управ­лять. Экс­ка­ва­тор управ­ля­ет­ся дву­мя джой­сти­ка­ми, и уме­ние выко­пать обык­но­вен­ную яму при­хо­дит не сра­зу.

Не про­бле­ма! Хоти­те научить­ся управ­лять экс­ка­ва­то­ром? Для это­го тоже есть игра, так и назы­ва­ет­ся — DIG IT! — A Digger Simulator.

А два джой­сти­ка есть на баналь­ном кон­трол­ле­ре для коро­бок­са, кото­рый под­клю­ча­ет­ся через USB.

Один толь­ко тут есть потен­ци­аль­ный затык — есть два типа управ­ле­ния тяжё­лой тех­ни­кой: ISO (евро­пей­ский, наи­бо­лее широ­ко рас­про­стра­нён­ный в мире) и SAE (аме­ри­кан­ский, всё у нас не как у людей в оче­ред­ной раз). Игра напи­са­на нем­ца­ми, так что исполь­зу­ет, разу­ме­ет­ся, ISO. Раз­ни­ца, прав­да, неве­ли­ка — там, где аме­ри­кан­ский тип управ­ля­ет руко­я­тью, евро­пей­ский дви­га­ет стре­лу, и наобо­рот.

Лич­но мне более логич­ным кажет­ся ISO. Но выби­рать ино­гда не при­хо­дит­ся, хотя очень боль­шое коли­че­ство тех­ни­ки мож­но пере­клю­чить с ISO на SAE или наобо­рот. Где-то надо отце­пить и воткнуть по-дру­го­му гид­рав­ли­че­ские шлан­ги, где-то есть малень­кий пере­клю­ча­тель.

В‑общем, хоро­шее это дело — ком­пью­тер­ные игры. Раз­ви­ва­ют не толь­ко детей, но и взрос­лых дядек 🙂

Не кради там, где живёшь

Бело­рус­ско­го хаке­ра Сер­гея Яре­ца, извест­но­го под ником Ar3s, вла­дель­ца бот­не­та Andromeda, нанёс­ше­го ущер­ба при­мер­но на десять мил­ли­о­нов дол­ла­ров, выпу­сти­ли на сво­бо­ду после 6 меся­цев в КПЗ.

Поче­му? А пото­му, что код лоаде­ра дан­но­го бота про­ве­ря­ет, где нахо­дит­ся поль­зо­ва­тель. Софт был настро­ен так, что­бы не зара­жать ком­пью­те­ры, рас­по­ло­жен­ные на тер­ри­то­рии бСССР (видел уже не раз такое). Соот­вет­ствен­но, постра­дав­ших бело­ру­сов не было: с кем надо, Ярец, думаю, поде­лил­ся, а на аме­ри­кан­цев, нем­цев, и англи­чан и про­чих бело­рус­ско­му суду поло­жить боль­шой болт. Так что 6 меся­цев и неболь­шой штраф, и впе­рёд, к сле­ду­ю­щим высо­там.

https://www.bleepingcomputer.com/news/security/andromeda-botnet-operator-released-with-a-slap-on-the-wrist/

Кто-то насмотрелся Mr. Robot =)

Мужик взло­мал ком­пью­тер­ную сеть тюрь­мы граф­ства Уоште­но (штат Мичи­ган), что­бы выз­во­лить дру­га.

Как водит­ся — через соци­аль­ный инже­не­ринг, самое дей­ствен­ное сред­ство до сих пор. Пацан явно шёл к успе­ху, но феде­ра­лы зажо­пи­ли 🙂

О винилофильстве и плёнколожстве

Отку­да в циф­ро­вом зву­ке берёт­ся шум? Он берёт­ся из не вполне точ­но­го пред­став­ле­ния ана­ло­го­во­го сиг­на­ла, так как для того, что­бы опи­сать сину­со­и­ду, у нас име­ет­ся конеч­ное коли­че­ство коор­ди­нат по оси Y. В слу­чае с ком­пакт-дис­ка­ми это 65536 воз­мож­ных зна­че­ний, так как у нас есть 16 бит — 15 бит на опи­са­ние уров­ня плюс один бит на знак. 8‑битные зву­ко­вые фай­лы, кста­ти, без­зна­ко­вые (во бар­дак!) Ось Х про­бле­мы не пред­став­ля­ет, в пол­ном соот­вет­ствии с тео­ре­мой Най­к­ви­ста-Шен­но­на-Котель­ни­ко­ва

Зави­си­мость в деци­бе­лах отно­ше­ния сигнал/шум от того, каким коли­че­ством уров­ней опи­сы­ва­ет­ся сиг­нал, линей­ная, и рас­счи­ты­ва­ет­ся как 20log10(2коли­че­ство бит), или при­мер­но 6.02 × коли­че­ство бит.

Стой­кие апо­ло­ге­ты ана­ло­го­вых носи­те­лей напи­ра­ют на то, что, мол на циф­ро­вом носи­те­ле все­го 65536 уров­ней, а на нашем-то тёп­лом лам­по­вом вини­ле (или на маг­нит­ной плён­ке) коли­че­ство уров­ней ана­ло­го­вое, т.е. неогра­ни­чен­ное!!! Ага, ага. А вот хрен вам. С ана­ло­го­во­го носи­те­ля точ­но так же мож­но достать конеч­ное коли­че­ство уров­ней сиг­на­ла, и для хоро­ше­го «доре­во­лю­ци­он­но­го» вини­ла это чис­ло состав­ля­ет при­мер­но 2000 или 11 бит. Это даст пре­дель­ное отно­ше­ние сигнал/шум в рай­оне 70 дБ — что, вооб­ще-то, не так уж пло­хо. Это замет­но луч­ше MP3-шек, напри­мер =))) Толь­ко винил надо хоро­шень­ко помыть-почи­стить, что­бы не было слыш­но пыли — она силь­но пор­тит впе­чат­ле­ние.

В слу­чае с плён­кой уже надо гово­рить более пред­мет­но — тут смот­ря какая плён­ка. Наи­луч­шее каче­ство в домаш­них усло­ви­ях дава­ли кату­шеч­ные маг­ни­то­фо­ны — с них мож­но было тоже достать при­мер­но 11 бит. Кас­се­ты, когда толь­ко появи­лись, были пол­ное и окон­ча­тель­ное гов­но, и дава­ли где-то 6‑битный звук. Это­го было вполне доста­точ­но для при­ме­не­ния в дик­то­фо­нах (для коих, их, соб­ствен­но, и раз­ра­бо­та­ли), но недо­ста­точ­но для каче­ствен­но­го вос­про­из­ве­де­ния музы­ки. Тем не менее, их рас­ту­щая попу­ляр­ность и сопут­ству­ю­щие посто­ян­ные улуч­ше­ния в обла­сти элек­тро­ни­ки при­ве­ли к тому, что посте­пен­но они вышли на уро­вень кату­шеч­ных маг­ни­то­фо­нов, а с вве­де­ни­ем тех­но­ло­гий типа Dolby и про­чих улуч­шай­зе­ров, даже немно­го пре­взо­шли их (кату­шеч­ные маг­ни­то­фо­ны к это­му вре­ме­ни уже, ясен пень, никто не улуч­шал). Но — это при нали­чии хоро­шей кас­сет­ной деки, каче­ствен­ной сту­дий­ной ком­пакт-кас­се­ты, и т.д. А вос­хи­щать­ся ана­ло­го­вым носи­те­лем МК-60, суну­тым в Элек­тро­ни­ку-302 мож­но раз­ве что после тре­тьей бутыл­ки.

Что име­ем с гуся? С гуся име­ем то, что ана­ло­го­вый носи­тель тоже, по сути, циф­ро­вой — коли­че­ство вытас­ки­ва­е­мой с него инфор­ма­ции конеч­но. Это для любо­го носи­те­ля спра­вед­ли­во — даже для 35mm фото­гра­фи­че­ской плён­ки. С неё — в иде­а­ле — мож­но достать 10 мега­пик­се­лей. Повто­рюсь — в иде­а­ле. Со сним­ков на совет­скую ч/б плён­ку сере­ди­ны 1960х годов я вытя­ги­вал при­мер­но 1 мега­пик­сель, не более.

Дорисовал

Таки доде­лал про­грам­ку на Питоне, рису­ю­щую спектр сиг­на­ла и авто­ма­ти­че­ски счи­та­ю­щую КНИ+шум и ОСШ. Попут­но узнал, как водит­ся, мно­го ново­го. За что люб­лю Питон — так это за то, что про­грам­ма зани­ма­ет менее 40 строк. На тех же Сях я бы усрал­ся это рисо­вать. Даже на Шар­пах бы усрал­ся.

Про­грам­ме скарм­ли­ва­ет­ся зву­ко­вой файл с сиг­на­лом часто­той в 1 kHz, сге­не­ри­ро­ван­ный про­грам­мой Adobe Audition (в деви­че­стве Syntrillium CoolEdit). Но мож­но взять и бес­плат­ный Audacity, резуль­тат будет точ­но такой же. Про­грам­ма чита­ет файл, берёт зна­че­ние с наи­боль­шим пиком и даёт ему обо­зна­че­ние в 0 деци­бел. Осталь­ное, соот­вет­ствен­но, отри­ца­тель­ные вели­чи­ны. Под­счи­ты­ва­ет­ся сред­не­квад­ра­тич­ное зна­че­ние все­го, что не сиг­нал, и делит­ся на уро­вень сиг­на­ла. Полу­ча­ет­ся КНИ+шум (THD+N). Потом счи­та­ем ОСШ (отно­ше­ние сигнал/шум, SNR) в деци­бе­лах: 20log10(сиг­нал / шум)

Вот так выгля­дит ана­лиз зву­ко­во­го фай­ла с сиг­на­лом 1 kHz, раз­ре­ше­ни­ем 16-бит, часто­та дис­кре­ти­за­ции — 48 kHz:

Это весь­ма близ­ко к тео­ре­ти­че­ско­му иде­а­лу — в иде­а­ле, раз­ре­ше­ние 16 бит может дать ОСШ в 96.3 dB. Но у меня не иде­ал, так как я исполь­зую чуть менее, чем 16 бит — ибо если гене­ри­ро­вать сину­со­и­ду с уров­нем в 0 dB (т.е. по-мак­си­му­му), то поче­му-то уже лезут нели­ней­ные иска­же­ния. Так что я создаю её с уров­нем в ‑0.1 dB, мини­маль­ным отступ­ле­ни­ем от мак­си­му­ма, кото­рое мне даёт делать Audition. В любом слу­чае, 94 dB — это дохре­на.

КНИ в 2 тысяч­ных про­цен­та это тоже пре­крас­но. Без при­бо­ров это­го никто нико­гда не уви­дит, иска­же­ния начи­на­ют быть слы­ши­мы­ми, когда уже вплот­ную при­бли­жа­ют­ся к 1%, хотя это силь­но зави­сит от того, что имен­но слу­ша­ем: если чистые сину­со­и­ды, то иска­же­ния начи­на­ют быть замет­ны­ми гораз­до рань­ше, а если в каче­стве тесто­во­го мате­ри­а­ла брать аль­бо­мы фиф­ти­сен­тов и про­чих, то там мож­но и 10% иска­же­ний не услы­шать. Что не озна­ча­ет, что аппа­ра­ту­ра, даю­щая КНИ в 0.05%, ничем не луч­ше аппа­ра­ту­ры, даю­щей 0.1% — она луч­ше; про­сто в реаль­но­сти уша­ми это­го ни один живой чело­век не услы­шит.

А теперь — сно­ва пнём фор­мат MP3 🙂 Никто как-то вот не заду­мы­ва­ет­ся о том, что они слу­ша­ют в тыся­че­дол­ла­ро­вых дере­вян­ных науш­ни­ках, под­клю­чён­ных к внеш­ним уси­ли­те­лям клас­са А за семь­сот дол­ла­ров, обе­ща­ю­щим КНИ в 0.00045%

А меж­ду тем это реа­лии MP3 с бит­рей­том в 192 килобита/сек:

А это — 320 килобит/сек:

Получ­ше, конеч­но, чем 192 kbps, но всё рав­но про­се­да­ние каче­ства очень нали­цо — про­ис­хо­дит серьёз­ное ужи­ма­ние дина­ми­че­ско­го диа­па­зо­на (я в кур­се, что ДД и ОСШ это не вполне одно и то же, но они свя­за­ны). На неко­то­ром мате­ри­а­ле (напри­мер, клас­си­че­ская музы­ка, обла­да­ю­щая боль­шим дина­ми­че­ским диа­па­зо­ном) это может быть очень замет­но. На 192 кило­би­тах так это точ­но замет­но, тихая пар­тия скрип­ки сопро­вож­да­ет­ся скре­же­том арте­фак­тов сжа­тия с поте­ря­ми — соб­ствен­но­уш­но, так ска­зать, слы­шал. Даль­ней­шее уве­ли­че­ние бит­рей­та после 320 килобит/с, кста­ти, уже ниче­го не даёт — ОСШ так и оста­ёт­ся в рай­оне 55 деци­бел.

Ещё надо будет попи­нать вини­ло­филь­ство и про­чее плён­ко­ло­же­ство, но это в дру­гой раз 🙂

Изящное решение

Как извест­но, ком­пью­те­ры не могут гене­ри­ро­вать по-насто­я­ще­му слу­чай­ные чис­ла. Они исполь­зу­ют мате­ма­ти­че­скую фор­му­лу, про­из­во­дя какие-то дей­ствия над изна­чаль­ным чис­лом. Фор­му­ла эта — детер­ми­ни­ро­ван­ная, т.е. если взять одно и то же изна­чаль­ное чис­ло два­жды, то на выхо­де будет то же самое. Обыч­но полу­чен­ное таким обра­зом псев­до­слу­чай­ное чис­ло скарм­ли­ва­ет­ся назад в фор­му­лу, цели­ком или как часть изна­чаль­но­го чис­ла.

Напри­мер, вот такая фор­му­ла (сиш­ный син­так­сис): x = (x * 17) % 11

Начи­ная с x = любое нату­раль­ное чис­ло, она будет выда­вать псев­до­слу­чай­ные нату­раль­ные чис­ла от 1 до 10. Но после­до­ва­тель­ность будет все­гда одной и той же — на выхо­де видим 8, зна­чит, сле­ду­ю­щим чис­лом будет 4. Конеч­но, насто­я­щие фор­му­лы для гене­ра­ции псев­до­слу­чай­ных чисел намно­го более слож­ны (напри­мер, хеши­ро­ва­ние SHA256) и очень хоро­шо апрок­си­ми­ру­ют слу­чай­ное рас­пре­де­ле­ние, но всё рав­но рано или позд­но даже они начи­на­ют зацик­ли­вать­ся.

Соот­вет­ствен­но, про­бле­ма в том, что­бы где-то взять это самое изна­чаль­ное чис­ло, кото­рое будет доста­точ­но слу­чай­ным, и зада­ча ста­вит­ся как сбор энтро­пии (слу­чай­ных собы­тий).

Напри­мер, очень попу­ля­рен сбор слу­чай­но­сти от дей­ствий чело­ве­ка. Так, мож­но счи­тать коли­че­ство так­тов про­цес­со­ра меж­ду нажа­ти­я­ми кно­пок на кла­ви­а­ту­ре. Даже самая дис­ци­пли­ни­ро­ван­ная маши­нист­ка не смо­жет повто­рить их один-в-один. При­мер­но так и рабо­та­ет сбор энтро­пии во Фрю­ник­сах — /dev/random счи­та­ет так­ты про­цес­со­ра меж­ду пре­ры­ва­ни­я­ми.

У это­го под­хо­да тоже есть про­бле­мы. У неза­ня­то­го сер­ве­ра, где мало вза­и­мо­дей­ствий, гене­ри­ру­ю­щих пре­ры­ва­ния, про­бле­ма сбо­ра энтро­пии сто­ит доволь­но ост­ро. Я даже более ска­жу — воз­мож­на ата­ка, кото­рая будет под­со­вы­вать это­му сер­ве­ру какую нуж­но «слу­чай­ность», и на этой осно­ве ломать алго­ритм шиф­ро­ва­ния. При­мер­но так рабо­тал недав­ний KRACK для бес­про­вод­ных сетей — где кря­кер застав­лял сеть пере­ис­поль­зо­вать зна­че­ние, кото­рое долж­но быть одно­ра­зо­вым.

Поэто­му для осо­бо важ­ных вещей, где крип­то­стой­кость явля­ет­ся кри­ти­че­ски важ­ным делом, к сбо­ру энтро­пии очень серьёз­ный под­ход. Мой люби­мый метод — под­клю­чён­ный к сер­ве­ру сч0тчик Гей­ге­ра и источ­ник ради­а­ции. Вре­мя меж­ду реги­стра­ци­ей двух иони­зи­ру­ю­щих частиц абсо­лют­но слу­чай­но.

Но есть и не такие ради­каль­ные спо­со­бы. Так, ком­па­ния Cloudflare, зани­ма­ю­ща­я­ся предо­став­ле­ни­ем услуг инфо­без­опас­но­сти, при­ду­ма­ла инте­рес­ную мето­ди­ку с при­ме­не­ни­ем лаво­вых ламп.

Кар­тин­ка из ста­тьи на ZDNet.

Пере­ме­ще­ния рас­плав­лен­но­го пара­фи­на в мас­ле явля­ют­ся слу­чай­ны­ми. Cloudflare постро­и­ли сте­ну с мат­ри­цей из 100 лаво­вых ламп. Эта мат­ри­ца посто­ян­но фото­гра­фи­ру­ет­ся, и из фото­гра­фий вычис­ля­ет­ся хеш — кото­рый и явля­ет­ся источ­ни­ком энтро­пии. Таким обра­зом дости­га­ет­ся пре­крас­ная крип­то­стой­кость алго­рит­мов, кото­рые Cloudflare исполь­зу­ет для шиф­ро­ва­ния траф­фи­ка меж­ду сво­и­ми рас­пре­де­лён­ны­ми сер­ве­ра­ми.

Чорт возь­ми, изящ­но!

Шутка дня

Пока­зы­ваю пле­мян­ни­ку 3.5‑дюймовую дис­ке­ту.

Реак­ция пле­мян­ни­ка:

–Ух, кру­то! Ты напе­ча­тал на 3D прин­те­ре кноп­ку сохра­не­ния!

А в самом деле, если поду­мать, то дис­ке­та на кноп­ке гово­рит о запи­си дан­ных толь­ко стар­пё­рам вро­де нас.

Богат октябрь на баги.…

Раз:

Всем, исполь­зу­ю­щим бес­про­вод­ные сети с шиф­ро­ва­ни­ем WPA2, мож­но начи­нать боять­ся. Суще­ству­ет кибе­р­ата­ка, поз­во­ля­ю­щая рас­шиф­ро­вать и спу­фить пере­да­ва­е­мые дан­ные через повтор­ное исполь­зо­ва­ние одно­ра­зо­во­го кода (nonce):

https://www.krackattacks.com/

При этом, что харак­тер­но, пароль WPA2 узнать по-преж­не­му невоз­мож­но.

Два:

Все крип­то­гра­фи­че­ские сопро­цес­со­ры Infineon гене­ри­ру­ют пло­хо защи­щён­ные клю­чи несим­мет­рич­но­го шиф­ро­ва­ния RSA:

http://www.tomshardware.com/news/infineon-tpm-insecure-rsa-keys,35668.html

Если у вас есть ноут­бук Lenovo, HP, Fujitsu, Asus и вы исполь­зу­е­те крип­то­гра­фи­че­ский сопро­цес­сор — може­те начи­нать боять­ся.

Дав­нень­ко таких кру­тых багов не было…

Русские рубят русских

Как пока­за­ло вскры­тие, в 2015 году рос­сий­ские хаке­ры укра­ли сек­рет­ные доку­мен­ты АНБ США, взло­мав рос­сий­ский же анти­ви­рус Кас­пер­ско­го:

https://www.forbes.com/sites/leemathews/2017/10/05/guess-which-software-russian-hackers-targeted-to-steal-nsa-secrets/#5295f671170c

Улыб­ну­ло.

Разу­ме­ет­ся, сама кон­то­ра Кас­пер­ско­го к это­му ника­ко­го отно­ше­ния не име­ла, и нико­му не помо­га­ла. Конеч­но-конеч­но.