Записи с меткой «программизды»

За последние годы софт неимоверно распух. И ладно бы это был какой-нибудь MathCAD или дизайнерский пакет — там действительно овер 9к всяких возможностей, действий и натсроек. Но как, как ??! всратые часы с будильником и секундомером на последнем андроиде запросто могут весить более 200 Мб, при этом 4 реализованные там функции точно такие же, как и много-много лет назад — там по сути не поменялось НИЧЕГО, кроме улетевшего в космос размера.

С другой стороны — есть крайне красивые и изящные вещи, например вот этот код бубликом.

Раскапывая редкий софт, иногда удаётся найти настоящие шедевры.

Например, вот такое описание:
Bsp2Wad.exe by Geoff Phillips (c) 1997 Version 2
(bug for Erased texture fixed)

This program, written in assembler, lifts all the textures out of a BSP file
as used in Quake, and creates a texture file (.WAD) ready for use
in Worldcraft or some other editor.

To run, simply type BSP2WAD file.bsp and instantly (because it’s a fast piece
of assembler code, and not any of this high-level «%&!^) you have your wad file.
You can also specify an output filename, so BSP2WAD file.bsp blob.wad.

—————————————————————————
;tamper protection: the isitsame value for this exe is «Managers shake baldly
with a book», if you want isitsame.exe to check this, go to my page

Rights reserved. This program may be freely distributed, but not may sold
or released with other packages without my prior consent.
Worldcraft is a trademark of Ben Morris, and Quake is a trademark of ID
software.

Contact binky@DeathsDoor.com or write to 9 The Don, Bletchley Milton Keynes
MK3 7PX England. If Bletchley sounds a dull place, just remember it was
here that Colossus was built during World War 2, Turing, Enigma blah blah.

Disclaimer: If this program causes you any injury or loss, tough. Use at
your risk, though it’s hard to see what on earth this program could do with
simple file handling.

Конвертер текстур для их миграции между игровыми движками/картами.
А вот собственно bsp2wad.exe.gz.base64:
H4sIAAAAAAACA+1VX2xTVRj/7mlXoHRrQUQfsJwty4BMJxnm+lLngEFBYc4xx1RMuOu9lza0vc3t
vdsaTQSBZOw0DYm++EiKiZmbGaSJa2dGt8YOJIsLGByTB5kmFmsiSU02EFfPuS1D479347kP3/m+
+53f9/t+OX/2v3YdKgAAw6OoWHwTHaNzB3SBk1oO/h//9VFp7cSNDVvx5ldCoqBJ4ha8q09TBY+G
NalP01UpjGVVCeAdB9qw7PNL2BfUFHxwewuutHZHsHt/m9fn9/tCYdztCx6NNLdIguYNtyiK2uBR
ApXW2krrAUVVIzioaFgKKvoRL/YowR4pqPmUoODHASmgqBEjcXupgqSqiooVj0dXVUnEoq76gkew
Kgkis2FFVz3SkzgkqV6BlvVpm8IGuLDM8d/BelWfxqwohakVGJXyopCqdPulwMMVvT7NizUvazyk
azii6FiLhCSx1Jru8UjhsKz7/ZFSWyrV8AGJ3YoaEDRGq5EJZgAEhYDU0B0O4deVstMriG9gA63D
K/y5GbyXVqfS0gz4Ep+P3ohNjALEZmMzUWcP+vStmjER1d/YmXhhunoMHIk909X2d1aa4u1o2buH
4h0PvR9RvBOlABKr6IL73PgQl3TBxWNQN1DR+J1psS67i4P6RTd1XVhbdIH95GVkOD1r+839K1wN
OiLXdu52z/9wewRlzZBdAS8u2Vdf1daSuayb6826kZB1m8Ss2wzWtFZDazAwOn2MAv5cglrVv2Kn
e75wO4jo8tQQNwrPTVeHTbc7UHwfSt2nvmvbZSPiRvFWxBPnPsTHnO2MeHIDJJ5nnWxCq9P2k9VI
Pvs4yHz8EJ2sY5PDiMzIEzkHuTQKO1hiJQNoRUmAlA3KsbvcA9AOA/RmsQR6i2OgX3P8lCWIgMJN
WURkowdlnDrDMvs5zrFoF2LHh4/3If4076dAlk5apilYguQJjcnDxi+2qH+JQhXpIpnMyvxZEckf
ybzJeRjJ/GmnlyoqT+Qd5IrBqczwILfc8eZyxy0GuSZOPusAeaGOdjuRs8gmSy1rO8QwKSpHCcuj
LZQc88jfoN8F2oOGOPijtsWizB9vCtGnACBcwZOqECqVvgysdAbIJf5Ek4ZAW/1y0sxEKcgfvGrI
y/ZUM0t9rwRN69s/mZD5LZYQevt9vljVh+ynbi3JY0y331FqLVFSvQYJecoCQE9LI1WJqhU3Q0mu
+EpI2qBcg7Ulor/AqCVf0BQK1IlYXr4+JUB+XWoA8vbUV5C3pmxcvuLMmdQA07YHsTOQOsQxk7cZ
kZTL8Iw5EybRNF3N4JmNWdpRYi+zHWXbadhR2Ddd3TaydbCrbSZX+nJW6Kq158ww4h3MuKyq2fxs
Htm2DmYumi7AGhgpLg+AzVSpTuOplVD7DpKLpiscULWRdm6y2CCWJlUWIHdfIgu/Fs61jT4DbVei
mejsHnoDpC/aIemgaIWP3WSBZPYYkfNmkl2YuZaLztXPhM3R2fqr174x3YnNkSkjOmlE00Z0MTY5
NDDTOkwu7R6YrF1yjegVQ4XBvMV1QQ8Uzg1Mfshp58cbuaqNxGmG+9uu0sRvHyGTpkwsPUwWTxSL
2po67on5wvF7cEdbf3wSHPmb0XRzLH3iJwf9Qfnk50mGNK0EwlvBdIezIHjKwS6vNN0F92LXyfe/
kM8aik8nmscQJNdD9PPYXGoDRzUtMk0Fz9HybYp9YXq/qqoeohvrVM27Nf/8cv8GWISU9dYIAAA=

Дамп этой проги весит меньше, чем CSS-ка, которой стилизована эта страничка !
Прога весом чуть более 2 килобайт, которой нужен только DOS или аналогичное окружение.

Конечно, по фамилии автора вы её найдёте, например тут:
https://valvedev.info/archives/theforge/files/files.html

Но просто по названию — уже скорее всего не сразу.

Вот есть у меня ощущение (и не только у меня), что разработка софта свернула куда-то не туда, и помимо специалистов по внедрению / интеграции могут остро потребоваться специалисты по вынедрению и дезинтеграции, ибо в авгиевы конюшни накопленного кода Геракл так и не зашёл.
😀

Очень давно, ещё когда Windows XP была актуальной какбы операционкой, вживую довелось наблюдать, как действительно неопытные пользователи пытались использовать MS Excel (97 версии !!) для такой казалось бы простой задачи, как ведение списка посетителей на проходной предприятия.

Людям, хорошо знакомым с компьютером, очень сложно понять, в чем может быть проблема — казалось бы, набивай новые данные в новые строчки, да и нормально, в чём, казалось бы, могут быть вообще проблемы на такой простой задаче ?

(далее…)

Иногда в глубинных и древних, но не отмерших слоях интернета удаётся откопать лютые шедевры.

Например, код на си, оформленный бубликом, который при компляции даёт прогу, при запуске которой в ASCII-графике выводится анимированный трёхмерный бублик.
(далее…)

Одно время один мой коллега активно топил за ZFS, пытаясь меня убедить, что вот эта ФС — это собственно наступившее светлое будущее, куда надо мигрировать уже вот прям сейчас. В этой заметке я немного поделюсь своим более чем скромным опытом её использования буквально на паре машинок.
(далее…)

Местами поднимается много хайпа на тему того, что мол классический http/1.1 поверх классического TCP (даже в https-tls варианте) — не совсем труЪ, и надо бы что-то свежее-модное-молодёжное шустренько внедрить.
(далее…)

Сразу три крупных сервиса — facebook, whatsapp и instagram не работают с 7 вечера по Москве.

Ссылка на DownDetector: https://downdetector.ru/ne-rabotaet/facebook/karta/


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

Причём трейсы и пинги до их сетей проходят, а вот DNS резолвится каждый раз в разные адреса, на этих адресах nmap видит открытые порты 80 и 443, но сами сайты не открываются, мобильные приложения не работают, вместо котиков и гламурных дев инстаграм показывается скучное сообщение «5xx Server Error» или «Oops, an error occurred.»

Судя по всему, кто-то из местных сетевых / девопсовых кибер-шаманов неудачно махнул бубном ансиблом, эпически завалив все продакшон-сервисы пейсбука оптом, качественно и надолго.
Это к вопросу о том, почему я предпочитаю распределённые системы типа токса и джаббера, а не вот это вот всё гламурное непотребство.

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

Представляю, какой там сейчас кипиш, особенно если у сотрудников фейсбука вся рабочая переписка шла в вотсаппе. =)

P.S. Около часа ночи начал оживать инстаграм — точнее, стала открываться веб-морда, залогиниться пока нельзя. Да и не советовал бы я туда логиниться до выяснения всех обстоятельств. Особенно тем, у кого один пароль на все учётки =)

Всем привет. Некоторое время назад я писал про плохие сценарии двухфакторной аутентификации, и как это можно попробовать исправить. Настало время немного покодить.
(далее…)

Всем привет. Сегодня я расскажу про одну особенность некоторых управляемых свитчей D-Link.
Если вам интересны такие железки — продолжение под катом.
(далее…)

прекрасная картинка, достойная быть вывешенной в рамочке:

charset visual detect

лурк в этом плане прекрасен.

UTF-8 наше всё, короче. Да, она внутренне сложна, число байт и число символов в ней могут иметь разные соотношения, но это того стоит.

Довелось тут немного поремонтировать телефон 📱, и после сброса настроек обнаружил такое неприятное поведение — раз в примерно минуту издавался звук уведомления. При этом он не соответствовал звуку из настроек и гасился только уменьшением громкости звука типа «мультимедиа».
(далее…)

Понадобилось тут получить от дизайнера одну картинку в SVG.
Оказалось, что после перехода на версию CorelDraw под MacOS с сохранением svg есть проблемы — файл создаётся, но при открытии в браузере пишет ошибку такого типа:

This page contains the following errors:

error on line 20 at column 2: Encoding error
Below is a rendering of the page up to the first error.

Корень проблемы оказался в русскоязычных именах внутренних объектов, да ещё и сохранённых в кривой кодировке:

Убираем из значений атрибутов строчки с не-английскими символами — и наш SVG сразу же начинает работать как надо и везде отображаться.
Кошмар разных кривых кодировок, пришедший к нам ещё из эпохи DOS, был бережно сохранён в системах windows до наших дней и будет ещё долго аукаться подобными проблемами на ровном месте.

Если значение проблемного атрибута написать по-русски, но в UTF-8 — всё работает как надо.
Но лучше внутри таких штук избегать не-английских символов — в этом случае риск нарваться на проблемы гораздо меньше.

Слышали такую фразу, что сейчас «не во что играть», хотя казалось бы, и выпускается много чего, и мощное железо есть ?
Да, я в курсе, что у разработчиков постоянно вечный дедлайн и горят сроки, а у менеджмента вечное совокупление на планёрках и постоянно горит жопа. Однако иногда даже в крупных ААА-проектах попадается такая дичайшая халтура, что не заметить это невозможно, и тут жопа начинает гореть уже у игроков.
Я рассмотрю такую базовую для любой игры вещь, как анимация передвижения персонажа.
(далее…)

Я крайне редко рекомендую какие-то другие ресурсы явно.

Однако наткнулся тут на блог одного программиста, в чтение статей которого провалился на пол-ночи.

Вычислительная фотография
(я даже термин такой не встречал до этого, очень зачётно про современный пост-процессинг в фотокамерах)

Про не-умный дом
(ну это стандартная боль, нет устоявшихся открытых стандартов = пиздец)

и

про машинное обучение
Тут просто очень хорошо изложено про виды всего этого ИИ-хозяйства.

Всем привет. Сегодня мы поговорим про двухфакторную аутентификацию, или если более широко — о дополнительных способах усиления / защиты аккаунта через дополнительные факторы аутентификации.
Если вам интересна эта тема, и вам таки есть что скрывать, например данные вашей банковской карточки, приглашаю вас в избу-читальню.
(далее…)

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

Стояла у нас на объекте камера — вот такой вот каркам. И в какой-то момент видеосервер перестал писать с неё данные. При этом IP-адрес есть, веб-морда открывается, но никакие пароли — ни наши, ни стандартные- не подходят. На самой камере снаружи никаких кнопок сброса не наблюдается.

Помня про пляски с хиквиженом, я решил прикола ради позвонить в поддержку. Оказалось, что эти крендели сброс пароля теперь классифицируют как «перепрошивка», стоит это 500 р. в их сервисе. На мои возражения, что прошивка там вполне жива, и слетели именно парольные настройки, а я хочу тупо восстановить доступ, мне начали заливать в уши ебанутую хуйню «типа про безопасность».

Мол, если у вас её спиздят, то злоумышленник может её использовать после сброса ! Я аж охуел, это прям фсб головного мозга какое-то.

На мой вопрос, что мешает злоумышленнику сбросить её за 500р. в их же сервисе или просто продать её на запчасти, и о какой вообще безопасности на объекте можно говорить, если там можно камеру просто безнаказанно отковырять, эти крендели мы ничего не ответили. А теперь собственно про безопасность, как её вижу я.

На это дивной камере открыта целая пачка портов:


PORT STATE SERVICE
80/tcp open http
407/tcp open timbuktu
443/tcp open https
554/tcp open rtsp
787/tcp open qsc
8000/tcp open http-alt

На порт 407 можно зайти телнетом и увидеть какой-то странный трейс прямо вот так сразу, без всякой авторизации:
[Trace]: AVStreamGetAVDataThread 581: gTransFormStatusFunc[8](1) == 0
[Trace]: AVStreamGetAVDataThread 581: gTransFormStatusFunc[8](2) == 0
[Trace]: AVStreamGetAVDataThread 725: Index = 0 Endflag == 255
[Trace]: AVStreamGetAVDataThread 727: VideoPos = 0
[Trace]: AVStreamGetAVDataThread 581: gTransFormStatusFunc[8](1) == 0
[Trace]: AVStreamGetAVDataThread 581: gTransFormStatusFunc[8](2) == 0
[Trace]: AVStreamGetAVDataThread 581: gTransFormStatusFunc[8](1) == 0
[Trace]: AVStreamGetAVDataThread 725: Index = 0 Endflag == 255
[Trace]: AVStreamGetAVDataThread 727: VideoPos = 0

Не удивлюсь, если и на порту 787 чего интересное найдется.

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

В случае с каркамом 2889 все оказалось проще — кнопка спрятана внутри герметичного корпуса. Так что откручиваем внешнее стопорное кольцо, извлекаем саму круглую камеру, и с помощью маленького ключа-шестигранника выкручиваем три винтика сзади. После снятия задней крышки видим кнопочку:

Internal reset button
for carcam 2889P


Выключаем питание, зажимаем кнопку, включаем питание (при зажатой кнопке!), держим 15 секунд, вуаля. И вот за вот это действо сервис хочет 500р , рассказывая тупые баечки про безопасность.

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

Некоторые особо охуевшие конторки хотят скан паспорта. За сброс настроек, ага.

Запомните : вы не обязаны делиться своими перс-данными, тем более такими, как скан-паспорта, со всякими левыми говноконторами, не осилившими кнопку резет, чтобы восстановить доступ к своему же железу!

Кстати, российский закон о персональных данных и европейский GDPR прямо запрещают подобное.

Так что хакайте это сраное говножелезо как только можно, и в паблик, всё в паблик.

Заметочка 1 : прошивка сраное говно, веб-интерфейс работает только в ие после установки сторонних компонентов. Использовать веб-морду строго внутри виртуальной машины!

Заметочка 2 : Китайское железо откровенно бэкдорнутое, и может остукиваться китайцам. Размещайте камеры в изолированных вланах, не имеющих никакого выхода в интернеты. Доступ до своего ntp-сервера и сервера видеонаблюдения более чем достаточен.

Небольшая заметка о железе, его устаревании и проприетарных технологиях.
(далее…)

В камерах и DVR (IP-видеорегистраторы) hikvision похоже нашли новую багу. Пару лет назад я уже писал очень матерно-ругательную статью про эти железки, но сейчас проблема приобрела серьёзный размах — наблюдались массовые взломы таких систем, сброс настроек (даже при сильных паролях), DDoS-атаки с них (DNS-/NTP-усиление) и использование хакнутого оборудования для атак на другие сети / подбор паролей к сервисам (telnet, ssh, vnc, rdp — точно) и прочему непотребству.

Что интересно, бевардовские камеры и даже длинки, висевшие в тех же сетях, не постарадали, так что проблема чисто хиквижена. Всем срочно патчиться, менять пароли, по возможно выносить IP-камеры в более защищённые сегменты сети.

Если вам нужно повесить камеру на внешний адрес, то НЕ НАДО прифигачивать её сразу внешний адрес напрямую — ни в IPv4, ни в IPv6. Если есть роутер — затащите её за этот роутер и сделайте Port-forward для RTSP вида :

TCP+UDP: xy554 --> 192.168.x.y:554

Для получения видеопотока этого более чем достаточно. Если камера оказалась единственной на объекте (бывает такое) — применить IP-whitelist. Правда если этот вайтлист на камере обслуживает только веб-доступ, но не применяется для доступа по телнет/ссш (да, вам не приглючилось, телнет там живее всех живых и доступен на куче девайсов через интернеты) или иному кривому порту — то может не помочь.

Так что в случае хиквижена — именно big, именно факинг и именно фейл, и именно с секурити.

Программирующим на JS за еду будут небезынтересны такие штуки:
http://utf-8.jp/public/aaencode.html
http://www.jsfuck.com/

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

Демка. ASCII-арт. На JavaScript. Однострочником.

n=setInterval("for(n+=7,i=k,P='p.\\n';i-=1/k;P+=P[i%2?(i%2*j-j+n/k^j)&1:2])j=k/i;p.innerHTML=P",k=64)

Если у вас так или иначе реализован мониторинг, то в какой-то момент возникнет разделение событий и сведений мониторинга по степени важности. И почти наверняка вам потребуется отобразить данные из одной системы в другой системе. Суть данной статьи — как вытащить интересующие графики нагрузки, созданные системой Grafana, во внешнюю самописную систему максимально простым способом, например, для отображения на публичном сайте или в любой другой системе.
(далее…)

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

(далее…)

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

После небольшого зависона эта фраза вызывает у многих айтишников разрыв хихикалки.

И вот сегодня, в новостях вижу:

Microsoft выпустила патч для патча, но он по-прежнему не работает.
Microsoft выпустила обновление KB3193494 для Windows 10, призванное исправить проблемы с установкой предыдущего патча KB3189866, однако с его установкой, оказывается, также не все гладко.

13 сентября нынешнего года Microsoft выпустила обновление KB3189866, однако вскоре пользователи стали сообщать о внезапном прекращении процесса инсталляции патча на 45% или 95%. Проблема оказалась повсеместной, поэтому компании пришлось срочно выпускать новое обновление. Обновление KB3193494 содержит те же улучшения, что и KB3189866, но должно работать уже без проблем.

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

«После установки KB3193494 мои сетевые драйверы стали недоступными. После удаления обновления все вернулось в норму. Если KB3193494 установить снова, проблема возвращается», — сообщил один из пользователей форума на сайте Microsoft. Насколько распространена данная проблема, не известно.

http://www.securitylab.ru/news/483918.php

P.S. Учитывая, как микрософт начинает нагибать хомячков с принудительной телеметрией — это я от венды удачно свинтил несколько лет тому назад 😀 😀

Небольшой релаксовый скрипт:

#!/bin/bash

str="I will use backups, white-list SRP and non-admin accounts on Windows BEFORE da_vinci_code infection!";

while true;
do
   for (( i=0; $i<${#str}; i=$(($i+1)) ))
   do
      echo -n "${str:$i:1}";
      sleep 0.1;
   done
   sleep 0.4;
   echo "";
done

Занятнейший, лулзовейший баг в яббл-иос с достаточно лютыми последствиями. Если в ябблодевайсе (iphone, ipad) выставить дату на начало Unix-эпохи — то есть на 1 января 1970 года, то там то ли какие-то даты становятся отрицательными, то ли ещё что-то ломается. 😀 😀 😀

Чудной девайс почти моментально превращается в кирпич, которому не помогают ни ребут, ни включение/выключение, ни даже обновление через кривую анальную сраку itunes + DFU.

Отсутствие полноценно реализованной аппаратной кнопки резета и неизвлекаемый штатным способом аккумулятор не позволяют решить проблему быстро.

Советы от уже опробовавших баг на себе очень занятны:
— запретить в новых версиях иос ставить столь давние даты (sic! всё бы им чего-нибудь запретить 😀 )
— Подождать!!, пока сядет аккум.

Последний совет особенно гуманен. Дело в том, что девайс зависает на этапе «белое яблочко на чёрном экране» — то есть когда радиомодули, графический ускоритель и прочее жрущее энергию железо не активировано. Почти черный OLED-дисплей жрёт не столь много. Так что ждать естественного саморазряда даже тощего аккума из ябблодевайса в такой ситуации придётся долго.

Особенно будет зачётно, если таймер питается не просто от основного аккума, но и дополнительно поддержан от какого-нибудь smd-суперконденсатора — ждать сброса часов придется вечность.

Так что если вы — заядлый попаданец, которого может через темпоральную аномалию закинуть в прошлое — айфон с собой не берите 😀 😀

P.S. Телеканал «Дождь» рассказал об этом в какой-то очередной педераче. Некоторые долбы сразу же попробовали. Сервис-центры ликуют.