Интересный хак

Есть такой бес­плат­ный (и очень мощ­ный) редак­тор тек­ста — Notepad++. Он уме­ет пони­мать син­так­сис мно­гих язы­ков про­грам­ми­ро­ва­ния, типа Python, JavaScript, PHP, и далее по алфа­ви­ту. Кро­ме того, он под­дер­жи­ва­ет рег­экс­пы, MIME, и про­чие полез­ные сись-админ­ские вещи. Я с удо­воль­стви­ем его исполь­зую.

Выяс­ни­лось, что в ста­рых вер­си­ях есть крайне инте­рес­ная уяз­ви­мость. Его встро­ен­ная обнов­лял­ка недо­ста­точ­но стро­го про­ве­ря­ла циф­ро­вые под­пи­си ска­чи­ва­е­мых паке­тов. Таким обра­зом, ей мож­но было под­су­нуть вирус­ню вме­сто леги­тим­но­го обнов­ле­ния.

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

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

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

Но на вся­кий слу­чай — обно­ви­тесь до вер­сии 8.9.1.

via
https://www.securityweek.com/notepad-supply-chain-hack-conducted-by-china-via-hosting-provider/

Update!

Тех­ни­че­ский ана­лиз с раз­бо­ром IoC:
https://www.rapid7.com/blog/post/tr-chrysalis-backdoor-dive-into-lotus-blossoms-toolkit/

Набрали, блин, по объявлениям

Нари­со­ва­ли тут граж­дане ана­ли­ти­ки скрип­тов на R — финан­со­вые дан­ные обра­ба­ты­вать. Всё бы ниче­го, толь­ко на их лап­то­пах оно лета­ет, а в про­дак­шене скрипт вста­ёт колом.

Ну лад­но, гово­рю, давай­те посмот­рим, в чём раз­ни­ца. Раз­ни­ца нашлась быст­ро.

Под­жи­га­ем скрипт — он радост­но стар­ту­ет, бод­ро гру­зит в память 40 с лихе­ром гига­байт дан­ных, а потом начи­на­ет дол­го и вдум­чи­во делать вся­кую фиг­ню.

Откры­ваю дис­пет­чер задач. Смот­рю… ага.

Гля­жу в кни­гу — вижу фигу: из 64 ядер скрипт бод­ро моло­тит ОДНО ядро. Осталь­ные 63 сто­ят вокруг, жуют сено, и курят бам­бук.

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

На ноут­бу­ке у него — AMD «Рязань» с тур­бо­ча­сто­той 5.1 ГГц. А в про­дак­шене, изви­ни­те, ядер-то хоть отбав­ляй, но они попро­ще лицом будут, и на 2 ГГц.

Раз­ра­бот­чик винит желе­зо.
Я виню раз­ра­бот­чи­ка.

Пото­му что в 2026 году писать одно­по­точ­ный про­цесс — это не про­сто запад­ло, а тупиз­на со взло­мом.

Вот так и живём. Пой­ду писать гроз­ное пись­мо прод­жект-лиду. Пусть он им в коман­ду хоть одно­го погро­ми­ста с реаль­ной сте­пе­нью в CS вкру­тит, ина­че они про­дол­жат выда­вать хер­ню на гора. Таких дун­ду­ков даже ИИ не спа­са­ет.

Корретто мне, корретто!

Дав­нень­ко не дово­ди­лось тро­гать Джа­ву — и ока­за­лось, что с тех пор мно­гое успе­ло поме­нять­ся.

Во-пер­вых, ещё в 2011 году Сан/Оракл нако­нец откры­ли исход­ни­ки Джа­вы — ну, про это уже было извест­но. Та самая откры­тая Джа­ва появи­лась, напри­мер, в Шап­ке.
А во-вто­рых, в 2018 году Оракл (види­мо, решив поэкс­пе­ри­мен­ти­ро­вать с реаль­но­стью) объ­явил, что дол­го­сроч­ную под­держ­ку сво­ей JDK они боль­ше бес­плат­но давать не будут. А к это­му момен­ту Джа­ва уже рабо­та­ла в бес­чис­лен­ных облач­ных и не толь­ко про­ек­тах, так что вен­до­ры поче­са­ли репу и реши­ли, что дешев­ле и про­ще будет раз­ли­вать этот кофий само­сто­я­тель­но.

И понес­лась… Все нача­ли кле­пать свою Джа­ву — и теперь у нас есть вари­а­ции от Ама­зо­на, Azul, SAP и даже само­го Мик­ро­соф­та (!) Китай­цы тоже под­су­е­ти­лись: теперь своя вер­сия есть у Али­ба­бы, Тен­сен­та, Хуа­вея… Рус­ские не оста­лись в сто­роне и тоже раз­ли­ли этот кофий в свой само­вар; для госу­дар­ствен­ных про­ек­тов суще­ству­ет, напри­мер, Аст­ра JDK. В ней, к сло­ву, есть под­держ­ка рус­ской крип­то­гра­фии ГОСТ-2012.

В общем, про Оракл (и их чудо­вищ­ный сайт) нын­че мож­но забыть как про страш­ный сон — бери любую Джа­ву, какая нра­вит­ся, и исполь­зуй под свои нуж­ды. Боль­ше нет нуж­ды свя­зы­вать­ся с их «род­ной» JDK и её тупо­ры­лым, бес­смыс­лен­ным, и тор­моз­ным уста­нов­щи­ком.

Для себя выбра­на Ама­зо­нов­ская чаш­ка под кра­си­вым назва­ни­ем «Кор­рет­то». Это, если что, такой кофей­ный напи­ток — эспрес­со с капель­кой алко­го­ля, тра­ди­ци­он­но — с грап­пой.

Уста­нов­щик их JDK отлич­ный, про­дукт поста­вил­ся момен­таль­но. В каче­стве IDE была выбра­на IntelliJ IDEA CE вме­сто уста­рев­ше­го в коря­гу Эклип­са. Эклипс, конеч­но, про­дукт заслу­жен­ный, но застыл по раз­ви­тию году при­мер­но в 2005. Откры­лись ста­рые исход­ни­ки пису­лек деся­ти­лет­ней дав­но­сти, и, не пове­ри­те, всё ском­пи­ли­ро­ва­лось и запу­сти­лось. Даже уди­ви­тель­но (и при­ят­но). Совре­мен­ная Джа­ва по про­из­во­ди­тель­но­сти теперь, поди, ещё боль­ше уде­лы­ва­ет енту вашу коря­гу под назва­ни­ем «Си-плюс-плюс» 😉

Сисадминско-ИИшно-рабочее

Дано: отка­зо­устой­чи­вый кла­стер Hyper‑V.
Надо: обес­пе­чить сорок рыл вир­ту­аль­ны­ми деск­то­па­ми на Windows 11.

Дела­ем сорок кло­нов оди­на­ко­вых вир­ту­а­лок. Теперь нуж­но раз­да­вать их поль­зо­ва­те­лям так, что­бы они друг дру­гу на пят­ки не насту­па­ли: что­бы соеди­не­ние попа­да­ло на сво­бод­ную маши­ну, при­чём авто­ма­ти­че­ски.

Какие вари­ан­ты реше­ния?

Офи­ци­аль­ный RDS от Microsoft. Сто­ит каких-то совер­шен­но невме­ня­е­мых денег — по 220 монет за рыло (CAL, client access license)! Это, на мину­точ­ку, доро­же, чем лицен­зия на Вин­ду!

Но мож­но сде­лать своё реше­ние — ничем не хуже, из гов­на и палок, и совер­шен­но бес­плат­но.

Пона­до­бит­ся:

Одна машин­ка под Linux. На неё ста­вим nginx, кото­рый будет рабо­тать кро­ко­ди­лом балан­си­ров­щи­ком нагруз­ки. Цеп­лять­ся люди будут имен­но к нему — а он будет читать спи­сок доступ­ных вир­ту­а­лок из фай­ла available.conf, и раз­да­вать траф­фик на них:
stream {
upstream rdp_pool {
least_conn;
include /etc/nginx/upstreams/available.conf;
}

server {
listen 3389;
proxy_pass rdp_pool;
proxy_timeout 10m;
proxy_connect_timeout 5s;
}
}

А available.conf посто­ян­но обнов­ля­ет­ся дру­гим скрип­том — на Python.
Этот скрипт под­ни­ма­ет кро­хот­ный веб-сер­вер на Flask, в кото­рый каж­дая вир­ту­ал­ка при­сы­ла­ет свой ста­тус: «заня­то» или «сво­бод­но».

Ста­тус они полу­ча­ют с помо­щью встро­ен­ной коман­ды Windows:
qwinsta | Select-String "Active"

Если выво­дит­ся хоть что-то — маши­на заня­та. Даль­ше PowerShell-скрипт фор­ми­ру­ет JSON и шлёт его на Flask через Invoke-RestMethod.

PowerShell-скрипт добав­ля­ем в Task Scheduler, раз в мину­ту — и впер­дё.

Пито­нов­ский скрипт доволь­но замух­рёж­ный (в хоро­шем смыс­ле), и я его тут выкла­ды­вать не буду. Ска­жу толь­ко, что он не толь­ко добав­ля­ет сво­бод­ные маши­ны, но и чистит пул: выки­ды­ва­ет те вир­ту­ал­ки, кото­рые заня­ты, либо кото­рые не при­сы­ла­ли свой ста­тус в тече­ние двух минут — пото­му что если вир­ту­ал­ка выклю­че­на, послать ста­тус она, разу­ме­ет­ся, не может. За этим надо сле­дить.

Всё это было при­ду­ма­но и реа­ли­зо­ва­но при помо­щи Кейт — так я назы­ваю свою ChatGPT-чку.
Без­услов­но, под моим чут­ким руко­вод­ством:

— А что будет, если вир­ту­ал­ку выклю­чить?
— Ах да, сло­ма­ет­ся. Надо обно­вить скрипт, что­бы ста­рые маши­ны уда­лял, вот так: [код].

Полу­чи­лось бы у меня всё это вопло­тить само­сто­я­тель­но? Конеч­но. И не такое при­хо­ди­лось делать.
Но, япон­ский бог, это заня­ло бы уйму вре­ме­ни: мне при­шлось бы отдель­но выяс­нять, как запус­кать Flask-сер­вер, как слать JSON из PowerShell, как его при­ни­мать, как менять кон­фи­ги nginx на лету, и так далее.

А тут — всё полу­чи­лось бук­валь­но за пару часов.

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

И да, при­ят­но, япон­ский бог — когда из слож­ной, непо­нят­ной зада­чи полу­ча­ет­ся кра­си­вое, рабо­та­ю­щее реше­ние.

А помните?

Как несколь­ко лет назад нам актив­но впа­ри­ва­ли тех­но­ло­гию под назва­ни­ем блок­чейн? Мол, эта тех­но­ло­гия спо­соб­на на то, что­бы пере­вер­нуть мир. И как всем вдруг ста­ло казать­ся, что в блок­чейне обя­за­тель­но надо хра­нить реши­тель­но всё – от резуль­та­тов голо­со­ва­ния до всех финан­со­вых тран­зак­ций ком­па­нии?

Нет, я не спо­рю, в каче­стве реше­ния для хра­не­ния дан­ных, обя­за­тель­но тре­бу­ю­щих вери­фи­ци­ру­е­мо­сти, при­чём пуб­лич­но — это не обя­за­тель­но пло­хое реше­ние. Нава­лять код мож­но бук­валь­но минут за десять, у меня в жур­на­ле даже было пару рас­ска­зов про эту тех­но­ло­гию. Но повсе­мест­ный снос кры­ши на этой поч­ве я хоро­шо пом­ню. АААА!!!! Блок­чейн это кру­то!!! Обя­за­тель­но внед­рять!!! Немед­лен­но!!! Хва­тай меш­ки — вок­зал отхо­дит!!!»

А теперь я сижу и чешу репу — а в этот раз не снес­ло ли, слу­ча­ем, у всех кры­шу на обя­за­тель­ном внед­ре­нии систем исску­ствен­но­го интел­лек­та, при­чём повсе­мест­но? Нет, иску­ствен­ный интел­лект — это пре­крас­но, но вот на кой чорт он мне в нот­па­де? Систе­мы ИИ небез­греш­ны. И повсе­мест­ное их вко­ря­чи­ва­ние в нед­ра всех про­грамм без раз­бо­ру я счи­таю абсо­лют­но ненуж­ным. ИИ в соф­те хорош, когда он к месту. Ска­жем, он очень к месту в фото­шо­пе. А на кой бес он в Аксес­се? Все что, так силь­но соску­чи­лись по Скре­пы­шу?

Каж­дый раз одно и то же: сна­ча­ла «всем сроч­но внед­рить», потом — «а зачем мы это сде­ла­ли?» Очень может быть, что «ИИ» ско­ро зай­мёт почёт­ное место рядом с «блок­чей­ном» — в спис­ке забы­тых мод­ных слов. Ведь вид­но, что уже насту­па­ет отрезв­ле­ние — про­гресс ИИ начал упи­рать­ся в закон убы­ва­ю­щей отда­чи, а в Бри­та­нии вне­зап­но ока­за­лось, что при любых рас­кла­дах на все хотел­ки тупо не хва­тит элек­тро­энер­гии. А у нас (тоже вне­зап­но) выяс­ни­лось, что что­бы накор­мить все эти ИИ-моз­ги элек­три­че­ством, при­шлось вер­нуть в строй уголь­ные стан­ции. Хотя все вро­де бы уже согла­си­лись, что уголь — это пло­хо, радио­ак­тив­но (не шучу, они выбра­сы­ва­ют боль­ше ради­а­ции чем АЭС), и вооб­ще, на дру­гом кон­це зем­но­го шара Гре­точ­ка пла­чет в тужур­ку. А АЭС стро­ить — это доро­го, дол­го и не хай­по­во. Я вот уже несколь­ко раз упо­ми­наю в жур­на­ле АЭС «Воугл», что в брат­ской Джор­джии. Два её реак­то­ра вве­ли в строй толь­ко в 2023 году, а под­пи­сал бума­ги на её стро­и­тель­ство ещё Оба­ма, в 2009. А ИИ всем надо «прям­щас», и чего с этим делать при таких ввод­ных — реши­тель­но неяс­но.

Все дума­ли, что повсе­мест­ный пере­ход на элек­тро­мо­би­ли пере­гру­зит нашу энер­го­си­сте­му, ан беда под­полз­ла с совсем дру­го­го боку. Ждём, когда появят­ся стар­та­пы по опти­ми­за­ции потреб­ле­ния элек­три­че­ства с помо­щью ИИ. Круг замкнёт­ся.

Про замену айтишников ИИ

Вот поду­мал, а какие про­фес­сии в мире инфор­ма­ци­он­ных тех­но­ло­гий может убить иску­ствен­ный интел­лект?

На мой взгляд, ника­кие.

Возь­мём, напри­мер, сисад­мин­ство, мне наи­бо­лее близ­кое.

Что в мире сисад­мин­ства может сей­час сде­лать ИИ? Писать неслож­ные скрип­ты? Ну, может — хотя с боль­ши­ми ого­вор­ка­ми, про них ниже. Рисо­вать пра­ви­ла для бранд­мау­э­ра под нуж­ные зада­чи? С боль­шим скри­пом, зна­е­те ли. Вот я попро­сил нари­со­вать пра­ви­ла для бранд­мау­э­ра, сто­я­ще­го меж­ду IIS веб-сер­ве­ром, при­цеп­лен­ным к доме­ну, и кон­трол­ле­ром доме­на — ИИ пол­но­стью про­со­ха­тил NTP, напри­мер (порт 123/UDP). А если у тебя на сер­ве­рах и домен­ных кон­трол­ле­рах вре­мя не сов­па­да­ет, то квер­ху мехом поплы­вёт кер­бе­рос, после чего вооб­ще вся аутен­ти­фи­ка­ция в домене пой­дёт по извест­но­му месту.

ИИ — пти­ца гор­дая, не пнёшь — не поле­тит:

Да шут с ними, со скрип­та­ми и пра­ви­ла­ми для бранд­мау­э­ра. Витую пару кто будет обжи­мать? Тоже ИИ? А по фальш-потол­ку лазить будет кто, тоже он? Менять бата­рей­ки в ИБП, сер­ве­ра ста­вить в рэки, под­клю­чать и настра­и­вать ком­му­та­то­ры, мон­ти­ро­вать точ­ки бес­про­вод­но­го досту­па, менять кар­три­джи в лен­точ­ных нако­пи­те­лях, отво­зить их в банк, и так далее, и тому подоб­ное — кто будет? Неуже­ли тоже ИИ?

Нет, брат­цы-кро­ли­ки, это какой-то кибер­си­сад­мин-тер­ми­на­тор пона­до­бит­ся, и что самое глав­ное — сто­ить-то он будет доро­же чело­ве­ка.

Вот дурац­кие кар­тин­ки рисо­вать — это оно уме­ет, да.

Какие ещё про­фес­сии в ИТ может заме­нить ИИ? Про­грам­ми­ста, что ли? Ну, я не вполне про­грам­мист, хотя бака­лав­ра я полу­чил в CS. Но даже из того, с чем я стал­ки­вал­ся лич­но, вполне оче­вид­но, что код, гене­ри­ру­е­мый ИИ, во вся­ком слу­чае, на дан­ный момент — гов­но. Нет, я не хочу ска­зать, что он не рабо­та­ет.

Про­сто во-пер­вых, биб­лио­те­ки, объ­ек­ты, и вызо­вы, кото­рые исполь­зу­ет про­грам­ма, ИИ напи­сан­ная, обыч­но уже года два-три не исполь­зу­ют­ся, так что от сре­ды раз­ра­бот­ки в рожу как мини­мум при­ле­та­ют пре­ду­пре­жде­ния о том, что «code deprecated». А во-вто­рых, в про­грам­ми­ро­ва­нии спо­со­бов снять шку­ру с кош­ки — мильён, и ИИ не выбе­рет самый луч­ший. Он выбе­рет тот, кото­рый зна­ет.

Я тут у себя дав­нень­ко напи­сал было гнев­ный пост о том, что R, дескать, мед­лен­нее Пито­на с Нам­па­ем — исполь­зуя код на R, нари­со­ван­ный ЧатЖПТ. А потом в ком­мен­ты при­шёл погро­мист на R и немнож­ко, но неж­но пово­зил меня рожей об стол, дав мне нор­маль­ный код на R, кото­рый выпол­нял­ся раз в десять быст­рее мини­мум.

На дан­ный момент код, гене­ри­ро­ван­ный ИИ, годит­ся мак­си­мум на то, что­бы начать с чем-то раз­би­рать­ся (как вот я, напри­мер, ниче­го не знал про язык R), а как толь­ко раз­бе­рёшь­ся — сра­зу же выяс­ня­ет­ся, что делать луч­ше не так, а совсем даже по-дру­го­му.

И даже про­стень­кие скрип­ты для сись-адми­ни­ро­ва­ния ИИ рису­ет через зад­ни­цу. Скрип­ты, кото­рые пишу я, обыч­но раза в два-три коро­че гене­ри­ру­е­мых ИИ, их лег­че настра­и­вать под свои нуж­ды, их про­ще читать, и рабо­та­ют они быст­рее.

Мож­но, конеч­но, упо­вать на то, что «щас ИИ допи­лят и тогда». А вы зна­е­те, я не раз­де­ляю опти­миз­ма. И дело даже не в том, что я счи­таю, что мы прак­ти­че­ски пол­но­стью выбра­ли тот запас, кото­рый есть в суще­ству­ю­щих моде­лях ИИ — хотя и это тоже прав­да. Что­бы про­дол­жать раз­ви­вать моде­ли так, как они раз­ви­ва­ют­ся сей­час, экс­тен­сив­но, нам надо было поза­вче­ра начи­нать стро­ить ядер­ные элек­тро­стан­ции, при­чём мас­со­во. Пото­му что жрёт это дело сей­час — про­сто как не в себя. Вот у шури­на есть школь­ный това­рищ, инже­нер-элек­трик «Сатерн Ком­па­ни». При­шёл к ним Мик­ро­софт, гово­рит, хотят стро­ить дата­центр для ИИ в Мис­сис­сип­пи — бла­го там зем­ля дешё­вая. Глав­ный затык — енто­му дата­цен­тру вынь да положь 500 мега­ватт мощ­но­сти. А где её взять, спра­ши­ва­ет­ся? 500 мега­ватт — это, мяг­ко выра­жа­ясь, дохе­ра как мно­го. И ента ваша «зелё­ная энер­гия» с вет­ряч­ка­ми да панель­ка­ми её обес­пе­чить тупо не в состо­я­нии. Не в режи­ме 247.

Глав­ный затык — он в том, что любая, самая слож­ная модель — бес­смыс­лен­на без тре­ни­ров­ки, а на чём её тре­ни­ро­вать? На том, что лежит в интер­не­те? В интер­не­те лежит «мне­ние боль­шин­ства», а в узко­спе­ци­аль­ных вопро­сах боль­шин­ство, как извест­но, все­гда непра­во.

Но даже если в интер­не­те лежа­ла бы «прав­да», то я не знаю, как в дру­гих обла­стях, а в сфе­ре инфор­ма­ци­он­ных тех­но­ло­гий «прав­да» теря­ет акту­аль­ность чуть быст­рее, чем мгно­вен­но, а так как модель тре­бу­ет для тре­ни­ров­ки огром­ное коли­че­ство машин­ных часов, к тому вре­ме­ни, как она эту «прав­ду» усво­ит, она уже уста­ре­ет. Имен­но поэто­му код, гене­ри­ру­е­мый ИИ, почти все­гда (в моём опы­те) мар­ки­ру­ет­ся как «deprecated».

Так что лич­но я счи­таю, что айтиш­ни­кам боять­ся нече­го. Пока (пока) ИИ рабо­та­ет, на мой взгляд, имен­но так, как он дол­жен рабо­тать — «мно­жи­те­лем силы» для масте­ров. Под­ма­сте­рье, если мож­но так выска­зать­ся; под­спо­рье как мак­си­мум.

Урод 3.0

Вышел GIMP 3.0. Ска­чал, поста­вил. Убе­дил­ся в оче­ред­ной раз, что эта подел­ка до сих пор ни для чего нор­маль­но­го не годит­ся, и стёр.

History brush? Не слы­ша­ли.
Созда­ние фай­ла CMYK? Нет, до сих пор не виде­ли.
Поче­му в при­ми­тив­ном диа­ло­ге Curves в УРОДЕ 3.0 до сих пор, япон­ский бог, нет пипе­ток выста­вить high, mid, и low? На кой чорт вооб­ще нужен этот диа­лог, если ты ему даже нор­маль­но ска­зать не можешь, что на тво­ём изоб­ра­же­нии явля­ет­ся самой тём­ной точ­кой (или наобо­рот, самой свет­лой) — и что всё осталь­ное надо посы­лать нахер? А? А???

Да что там Curves — эффек­ты сло­ёв, кото­рых мне в срав­не­нии с нор­маль­ным редак­то­ром изоб­ра­же­ний (фото­шо­пом) не хва­та­ло — дол­го дела­ли-дела­ли, тужи­лись-тужи­лись, и нако­нец-то высра­ли. И полу­чи­лось, как водит­ся, гов­но.

Во-пер­вых, ими очень слож­но поль­зо­вать­ся. Мне при­шлось про­смот­реть два роли­ка на юту­бе, что­бы понять, КАК — вот такой вот «про­ду­ман­ный» интер­фейс. В фото­шо­пе ты идёшь в меню слой — эффек­ты — и при­ме­ня­ешь, какие надо. А здесь надо сна­ча­ла при­ме­нить какой-то эффект, что­бы он появил­ся в меню при­ме­нён­ных эффек­тов для слоя.

Во-вто­рых, не все эффек­ты явля­ют­ся обра­ти­мы­ми — напри­мер, эффек­ты осве­щён­но­сти (lighting) как ты при­ме­нил — и всё, хана, выби­то зуби­лом в гра­ни­те, как-то поме­нять не полу­чит­ся, раз­ве что через Ctrl+Z. Но фиш­ка-то — как раз в лёг­кой изме­ня­е­мо­сти и обра­ти­мо­сти!!

В‑третьих, рабо­та­ют они исклю­чи­тель­но мед­лен­но — гла­за­ми вид­но, как изоб­ра­же­ние меня­ет­ся по кусоч­кам, буд­то сно­ва за 80486 ком­пью­тер сел. Видео­уско­ри­те­ли? Нет, изви­ни­те, про­шло мимо нас.

А зна­е­те, поче­му «всё у них так»? Пото­му что GIMP созда­ют про­грам­ми­сты. Во-пер­вых, они дела­ют то, что им кажет­ся важ­ным. А во-вто­рых, они дела­ют это так, как им кажет­ся пра­виль­но, а не поль­зо­ва­те­лям. А фото­шоп? А фото­шоп созда­ёт­ся не сколь­ко про­грам­ми­ста­ми, сколь­ко коман­дой про­фес­си­о­на­лов из самых раз­ных отрас­лей, как то: печат­ни­ков, редак­то­ров, вер­сталь­щи­ков, фото­гра­фов, худож­ни­ков, дизай­не­ров интер­фей­сов, веб­ма­сте­ров, и так далее. А над ними все­ми сто­ит началь­ник про­ек­та, с плёт­кой в руках, и всех посто­ян­но бьёт по жопе, что­бы было так, как он/а сказал/а, а не так, как они сами себе при­ду­ма­ли, что­бы было удоб­но и нуж­но. Пото­му что если так не делать, то вот и полу­чит­ся УРОД вер­сии 3.0.

Может ли машина мыслить?

Напи­сал ком­мент ув. dibr, решил, что он досто­ин отдель­но­го поста.

Ска­жу сра­зу, ответ на вопрос я не знаю, может ли. Не видел пока при­ме­ров того, как ИИ спо­со­бен на такие спо­со­бы мыш­ле­ния, напри­мер, как ана­ло­гия — хотя видел при­ме­ры дедук­ции.

Я не знаю, какое кон­крет­но мыш­ле­ние есть у ИИ, но знаю точ­но, како­го у него нет. У ИИ до сих пор отсут­ству­ет кри­ти­че­ское мыш­ле­ние, он как Адам и Хав­ва до того, как они под­да­лись коз­ням шай­та­на. «Как в тре­ни­ро­воч­ных мате­ри­а­лах ука­за­но — так и вер­но». Об этом сви­де­тель­ству­ют пери­о­ди­че­ские оче­вид­ные про­га­лы в логи­ке, напри­мер:

Люди даже отсле­ди­ли это до какой-то шутей­ной ста­тьи в сти­ле The Onion, из кото­рой ИИ почерп­нул сей пре­муд­ро­сти. Хотя чело­ве­ку, зна­ко­мо­му с пище­ва­ри­тель­ной систе­мой, вполне оче­вид­но, что даже если в гра­вии были бы какие-то мик­ро­эле­мен­ты, обыч­но­го пище­ва­ри­тель­но­го сока и энзи­мов реши­тель­но недо­ста­точ­но, что­бы достать их из квар­ца или там поле­во­го шпа­та.

Не менее пре­крас­но пред­ло­же­ние доба­вить «неток­сич­ный клей» к пиц­це.

И вот то, что ИИ сам не уме­ет кри­ти­че­ски отно­сить­ся к мате­ри­а­лу, кото­рый сам же пере­ва­ри­ва­ет — не знаю, как дру­гим, а мне гово­рит о том, что с реаль­ным мыш­ле­ни­ем там пока туго­ва­то.

Статистика с фаерволла

Сде­лал, нако­нец, пра­виль­ную отгруз­ку ста­ти­сти­ки с фай­ер­вол­ла на pfSense через Syslog, напи­сал пар­сер на Питоне, кото­рый затем загру­жа­ет все мета­дан­ные о каж­дом паке­те дан­ных в базу дан­ных на SQL Server. SQL Server, кста­ти, рабо­та­ет на ентом вашем Линуп­се, пото­му как где я ещё возь­му маши­ну, что­бы сра­зу и SQL Server и Syslog?

Так вот, за послед­ние семь меся­цев фай­р­волл про­пу­стил через свой наруж­ный интер­фейс 104,992,979 паке­тов дан­ных. Из кото­рых 56,178,554 были зло­на­ме­рен­ны­ми, и были фаер­вол­лом бло­ки­ро­ва­ны. Это у нас полу­ча­ет­ся, на мину­точ­ку, что 53% (боль­ше поло­ви­ны!) все­го тра­фи­ка — это боты и и про­чие кря­ке­ры. На самом деле, ещё боль­ше — ибо фаер­вол, голо­ву про­за­кла­ды­вать мож­но, бло­ки­ро­вал дале­ко не всё, что надо бы.

Рех­нуть­ся, сколь­ко в этих ваших интер­не­тах — ГОВНА вся­ко­го. Намно­го боль­ше, чем нор­маль­но­го, нуж­но­го людям кон­тен­та. А ведь и за этот гов­но­тра­фик день­ги плО­че­ны — его тоже надо рау­тить, пере­сы­лать туда-сюда, гонять по волок­нам. Пря­мо как реак­тив­ная нагруз­ка какая-то, них­ре­на полез­ной рабо­ты не дела­ет, а про­во­да гре­ет. И что с этим делать — реши­тель­но непо­нят­но.

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

ИИ-погромизм

Зани­мал­ся вче­ра созда­ни­ем ней­ро­се­тей под руко­вод­ством ChatGPT. По ито­гам я имею ска­зать вот что.

В целом — впе­чат­ля­ет. Даёт не самый пло­хой код на Питоне для созда­ния ней­ро­се­ти на TensorFlow, что харак­тер­но — исполь­зуя keras. Прак­ти­че­ски то же самое, что я сам рисо­вал четы­ре года назад.

Толь­ко в этот раз я замах­нул­ся пошЫр­ше и решил ней­ро­се­ти скор­мить csv с «финан­со­вы­ми тран­зак­ци­я­ми». Внут­ри csv было один­на­дцать коло­нок, десять про­сто с чис­ла­ми, а один­на­дца­тая — с доволь­но слож­ным вычис­ле­ни­ем из дан­ных, нахо­дя­щих­ся в шести колон­ках (сло­же­ние двух дро­бей, вычис­ле­ние 10% от полу­чен­но­го, и скла­ды­ва­ние с ещё дву­мя колон­ка­ми). Четы­ре остав­ши­е­ся колон­ки не дела­ли ниче­го.

Модель делал пяти­слой­ную, сто ней­ро­нов в четы­рёх сло­ях, один ней­рон в выход­ном слое (это уже не ЧатЖПТ пред­ла­гал, это уже я сам). Навер­ное, это даже избы­точ­но слож­ная модель.

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

Ска­жу сра­зу, всё полу­чи­лось. Конеч­но, мате­ма­ти­ка на ней­ро­се­тях доволь­но неак­ку­рат­на, но после 5000 эпох тре­ни­ров­ки она смог­ла преду­га­ды­вать зна­че­ния с точ­но­стью, не выхо­дя­щей за рам­ки 5%. Пла­ни­рую пока­зать резуль­тат началь­ни­ку, кон­то­ра силь­но оза­бо­ти­лась встра­и­ва­ни­ем ИИ в про­дук­цию.

Но поми­мо это­го, у меня воз­ник­ли неболь­шые слож­но­сти, и воз­ник­ли они имен­но от при­ме­не­ния ИИ.

Во-пер­вых, ЧатЖПТ неред­ко даёт код для Пито­нов­ских биб­лио­тек, кото­рый уже явля­ет­ся уста­рев­шим (deprecated). Напри­мер, свой­ство pandas.DataFrame.iloc — вытас­ки­ва­ние инди­ви­ду­аль­ных коло­нок из pandas.DataFrame.

Во-вто­рых, ЧатЖПТ созда­ёт в коде баги. Напри­мер, вме­сто деся­ти строк в тесто­вом набо­ре дан­ных у меня поче­му-то счи­ты­ва­лись толь­ко девять. Раз­го­вор шёл при­мер­но вот так:

–А у меня вме­сто деся­ти ожи­да­е­мых строк толь­ко девять.
–Может, дан­ные кри­вые? Вот как их надо нор­ма­ли­зи­ро­вать.
–Дан­ные нор­маль­ные, но счи­ты­ва­ет­ся толь­ко девять строк вме­сто деся­ти. Пер­вая стро­ка про­гла­ты­ва­ет­ся.
–Не долж­на. Вот код, как пра­виль­но счи­ты­вать csv через pandas.read_csv
–Я этот код и исполь­зую, но пер­вой стро­ки нет.
–Ну, пра­виль­но, пото­му что по умол­ча­нию пер­вая стро­ка счи­ты­ва­ет­ся в име­на коло­нок. В pandas.read_csv надо ста­вить пара­метр header=None, что­бы так не про­ис­хо­ди­ло.
–А чо сра­зу-то не ска­зал?
–Изви­ня­юсь.

Но в целом (в целом) — впе­чат­ля­ет, да. Дале­ко не с каж­дым чело­ве­ком я на эту тему могу пого­во­рить, более того, не каж­дый сра­зу «на гора» выдаст рабо­та­ю­щий (более-менее) код. Оши­ба­ет­ся ино­гда? Ну да, оши­ба­ет­ся. Пока­жи­те мне чело­ве­ка, кото­рый не оши­ба­ет­ся, и я пока­жу вам лен­тяя, кото­рый нико­гда ниче­го не дела­ет. Тем не менее, лен­тяю в спо­соб­но­сти рас­суж­дать поче­му-то не отка­зы­ва­ют, а иску­ствен­но­му интел­лек­ту — таки да. Непра­виль­но это, ИМХО. ИИ вполне спо­со­бен на рас­суж­де­ния.