Обновить
-6
1

Пользователь

Отправить сообщение

Одноразовые вейпы: как из-за общества потребления тысячи полезных компонентов отправляются в мусорку?

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели30K

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

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

Читать далее

MapStruct: как безобидный метод портит весь маппинг

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели10K

При работе с MapStruct возникает соблазн добавлять небольшие вспомогательные методы прямо в ваш mapper и вызывать их через expression. Однако если такой метод оперирует довольно общими типами (например, String -> String), MapStruct может обнаружить его и применить к другим полям того же типа — даже если вы этого не планировали.

Читать далее

Как прошёл Java Rock Stars Meetup в сентябре (и чего ожидать в декабре)

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.4K

25 сентября в Москве прошёл Java Rock Stars Meetup, в котором было всё: доклады, холивары о будущем Spring в России и много нетворкинга.

Пока готовился обзор прошедшего митапа, мы уже успели организовать новый и заключительный в этом году Java Rock Stars Meetup, который пройдёт 2 декабря в Москве в привычном месте — лофте Casa Picassa.

Регистрируйтесь на митап по ссылке.

А пока присоединяйтесь к нашему ТГ-каналу и чату Java Rock Stars Meetup, чтобы быть в курсе новостей митапа.

Читать далее

В кэше — фотка, в ней payload: новый метод скрытой доставки зловредов

Время на прочтение9 мин
Охват и читатели19K

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

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

По сути, атака умело сочетает две техники: принуждение к локальному исполнению (ClickFix/FileFix) и контрабанду кэша (Cache Smuggling). В статье я подробно разберу каждый из этих приемов и покажу, как можно сделать доставку полезной нагрузки еще более незаметной.

Читать далее

Как SMM Газпрома устроили добровольный «слив» данных клиентов

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели24K

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

NB! Данный пост является информационным, опубликован с целью показать IT-сообществу как несогласованные действия SMM-специалистов могут отразиться на безопасности проектов в целом. Помните, что незаконный сбор персональных данных карается в большинстве стран мира.

Посетить заповедник мамонтов...

Эмуляция «тетриса» Apollo из 90-х и запуск кода на оригинальном железе

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели22K

В этой статье я расскажу о микроконтроллерах Sunplus с ядром 6502 которые использовались в популярных в 90-е «тетрисах» Apollo, а также об их эмуляции. Отдельно опишу способ запуска своего кода на этих играх и в частности проигрыватель «Bad Apple!!», крупнопиксельный кадр из которого показан на КПДВ.

Читать далее

Перед вами первый «торговый автомат» по продаже крепкого алкоголя. Вы не поверите, но ему уже почти три века

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели20K

Представьте, некий работяга в Лондоне в первой половине XVIII века подходит к закрытой двери с рельефным изображением кота, стучит в нее и спрашивает: «Кот, у тебя есть джин?». Если в ответ раздается «Мяу», он кидает в рот коту 2 пенса, и подставляет под трубку, торчащую из лапы кота, свою кружку и ждет, когда потечет джин.

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

Так в чем же тогда смысл сего действа?

Читать далее

Тупик

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели15K

Мат рождается в душе. Больше всего его рождается когда сталкиваешься с чем-то похожим на <подставь свой фреймворк>. Инструмент с прекрасными целями и задачами постепенно превращается во все больший и больший кусок г.. в котором приходиться копаться. Ощущаешь себя жужжащей мухой, летающей вокруг по необходимости.

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

Сейчас все поменялось.
Подключение новой фичи чаще всего присоединяет к твоему коду 100500 дополнительных фиговин, которые мало того, что чаще не нужны, но и которые мешают запустить твой код.
Они подключаются по дефолту сами, и ты ищешь как их отключить. Но так как библиотеки постоянно меняются, это не так просто. Сколько раз подключал <подставь свой фреймворк>, ещё не разу не было одинакового кода. Постоянно меняются названия методов, их параметры, типы.

Раньше было просто. Возьмем для примера <подставь свой фреймворк>. Ты подключал и говорил ему, что нужно делать в первом случае, что во втором, что в третьем.
Сейчас же так просто не работает. Все стало сложнее. Ты указываешь доступный всем метод по старинке, но не тут то было. Клиенты получают в ответ фигу. Ты думаешь, что поменялся синтаксис, ищешь новые незадеприкейчаные методы (которых по количеству уже меньше, чем задеприкейчаных), но все равно клиенты получают фигу. Один и тот же код разрешает пользователям работать с одними запросами, но не разрешает с другими. Уверен, что это как-то объясняется. Просто подключается ещё куча бинов по дефолту, с доп параметрами по дефолту, и т.д. Идеология упрощения.
Но то, что прямо игнорируется команда разработчика, это уже перебор.

Читать далее

Странности в исключениях JVM с точки зрения декомпилятора

Время на прочтение11 мин
Охват и читатели5.8K

Некоторое время назад я немного поэкспериментировала, пытаясь научиться декомпилировать файлы классов Java более эффективно, чем позволяют традиционные инструменты, предназначенные для этого — например, Vineflower. В конце концов, я написала статью, в которой изложила мой подход к декомпиляции потока управления. Мои находки позволили значительно ускорить работу получившегося у меня прототипа.  

На тот момент я полагала, что этот метод не составит труда расширить и на декомпиляцию потока управления, возникающего при обработке исключений — то есть, что ему будут поддаваться блоки try…catch. В ретроспективе признаю: следовало ожидать, что это будет не так просто. Оказывается, здесь возникает множество пограничных случаев, варьирующихся от странного поведения javac до последствий, отражающихся на самой структуре JVM и формате файлов классов. Всё это – серьёзные осложнения. В данном посте я разберу все эти детали, расскажу, почему простые решения не работают, и на каком подходе я в итоге остановилась.

Читать далее

~~Две тильды

Время на прочтение1 мин
Охват и читатели11K
Внезапно встретил такой JS-код:
var a = ~~b;
Сразу вспомнил, что ~ — это битовое дополнение, показалось, что написано просто
var a = b;
Однако битовые операции применимы только к целым числам, поэтому тут ещё неявное приведение типа. Самый короткий способ написать var a = Math.floor(b);?

Но не ведитесь на короткую крутую запись: Math.floor() работает вдвое быстрее (проверил в FF3.6).

~~$x для округления работает и в Перле, причём по времени столько же, сколько int($x). Интересно, что в других языках? В Питоне, наверно, тоже сработает? Upd: не сработало.

Клиент telega сотрудничает с telegram и Павлом Дуровым? Разбираемся

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели38K

В последние недели вокруг неофициального клиента Telega разгорелся скандал — одно из сообществ выяснило что у него имеются связи с VK.

Однако мы наткнулись на информацию куда более любопытную — возможное сотрудничество самой Telega с Telegram.

Мы попытались понять, каким образом Telega получила доступ к функциям, зарезервированным для официальных клиентов Telegram, и почему это может указывать на куда более тесное взаимодействие между ними, чем кажется на первый взгляд.

Читать далее

Реверс-инжиниринг: стартуем прошивку ReadyNAS через QEMU

Время на прочтение12 мин
Охват и читатели9.4K

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

Посмотрел и не зря. Оказалось, что разными моделями ReadyNAS в рамках одной аппаратной архитектуры управляет прошивка на базе Linux — ReadyNAS OS. Причем она доступна для свободного скачивания на сайте производителя. Как по мне — отличная возможность ее изучить и проверить, можно ли запустить такую ОС через открытую систему эмуляции и виртуализации QEMU. Погнали!

Читать далее

«Он же айтишник, у них всем платят по триста»: проверяем легенды IT-рынка с Патриков

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели58K

Айтишники стали новой легендой Патриков. Джуны на S-классе, сеньоры на Бали, миллионеры из 1С: всё звучит красиво, пока не заглянешь в цифры. И мы это сделали.

Читать далее

Хабр умирает, и это не кликбейт

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели76K

Блуждая по Хабру, я всё чаще слышу один и тот же рефрен: «Хабр уже не тот». Статьи не набирают, интерес аудитории угас, а в кулуарах DevRel'ы жалуются, что «продвигаться стало невозможно». Но так ли это на самом деле? Или это классическая «раньше трава была зеленее»?

Читать далее

Искусство кройки и шитья или возможность заменить игры в портативной игровой консоли SUP

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели20K

Всем привет, меня зовут Александр. Увлекаюсь программированием и разработкой электроники в свободное время. Мне бы хотелось поведать Вам, товарищи, историю одного программатора.

Читать далее

Тайна самой дешевой консоли с Ozon

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели57K

Наверняка многие читатели слышали о самой дешевой консоли на маркетплейсах — «Sup». На первый взгляд, это устройство — чудо чудное: цветной дисплей приличного разрешения, целых 500 игр в комплекте, аккумулятор и даже дополнительный геймпад, и всё это за какие-то 400 рублей в розницу.

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

Читать далее

Почему файлы стали меньше: форматы фото и видео (JPEG, HEIC, AV1)

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели20K

Форматы изображений и видео вроде JPEG, HEIC и AV1 давно стали частью нашей повседневности. Мы снимаем на смартфон, пересылаем фото в мессенджерах, заливаем видео в облако — и редко задумываемся, почему одинаковый кадр может весить в три раза меньше, но выглядеть так же.

Рассмотрим, как современные кодеки экономят место, почему файлы стали компактнее и зачем это вообще понадобилось. Детали под катом.

Читать далее

Цифровой звук на PC Speaker

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели16K

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

Уделял я внимание и такому базовому звуковому устройству, как PC Speaker — его наследие до сих пор присутствует в современных ПК. В прошлый раз, однако, речь шла про его способности в области имитации многоголосия в монофонических квадратно-волновых мелодиях.

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

О том, как это работало «под капотом», а также о памятных примерах в играх и программах, и пойдёт речь в сегодняшнем материале.

Читать далее

Демосцена

Время на прочтение26 мин
Охват и читатели19K

"… особую пикантность придаёт тот факт, что всё это по сути бессмысленно..."
/ sq/skrju /



из демо 'We are demo' для Commodore 64, 2020 год)

Чаще всего, попытки объяснить людям, что такое «демосцена», начинаются со слов «компьютерное искусство...». Однако, даже по вопросу о том, что такое искусство, во все времена не было единого мнения. Явление, о котором пойдёт речь, называют искусством скорее в том смысле, в каком говорят об искусстве токаря или плотника, а не скульптора или художника. Что, конечно, не означает, что одно хуже другого.

Слово «демосцена» («demoscene») мало того, что не переводится на русский язык, но даже и на английском имеет не вполне очевидный смысл. Если со словом «demo» всё интуитивно понятно — оно происходит от слова «demonstration» («демонстрация»), то со словом «scene» всё куда сложнее. Своим появлением оно обязано вовсе не театру, как могло бы показаться, а возникшей в конце 1970-х практике нелегального распространения и взлома программного обеспечения, главным образом — компьютерных игр.

MAX изменил правила: публиковать ботов и мини-приложения можно только через верифицированные юрлица РФ

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели26K

С августа MAX официально перевёл публикацию ботов и мини-приложений в бизнес-режим: подключаться к платформе, создавать и выводить в прод можно только через верифицированные организации — юрлица РФ. ИП, самозанятые, физлица и нерезиденты сейчас не допускаются. Узнали мы об этом совсем недавно, после уведомления о деактивации наших ботов и отправке запросов в поддержку MAX по email. Параллельно API переехал на platform-api.max.ru, а токен теперь передаётся исключительно в заголовке Authorization.

В статье — что именно поменялось, как пройти модерацию и не завалиться на комплаенсе.

Читать далее
1
23 ...

Информация

В рейтинге
1 848-й
Зарегистрирован
Активность