Как стать автором
Обновить
1
0
Кудинов Петр @PitBeast

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

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

Как я прогнозирую полярные сияния с помощью открытых данных, Python и облачного сервера

Время на прочтение27 мин
Количество просмотров8.4K

Доводилось ли вам наблюдать полярное сияние? В окрестностях Санкт-Петербурга это не такое уж и редкое явление, но многие мои друзья и знакомые его ни разу не видели. Как оказалось, они не знают, когда, куда и при каких обстоятельствах отправиться, чтобы его застать. Это побудило меня впервые написать код на Python, чтобы решить проблему. В этой статье расскажу, как я автоматизировал оценку состояния магнитосферы Земли и запустил Telegram-бота на облачном сервере, чтобы получать информацию о предстоящих полярных сияниях.
Читать дальше →
Всего голосов 56: ↑56 и ↓0+75
Комментарии4

«Гончие и шакалы». Найдена древнейшая настольная игра человечества, которой тысячи лет

Время на прочтение5 мин
Количество просмотров7.3K

Источник: arstechnica.net

Долгое время считалось, что древняя настольная игра, известная как «Гончие и шакалы», появилась в Египте. Однако последние археологические находки пошатнули уверенность ученых. Скорее всего, «Гончие и шакалы» была известна в более древние времена, о чем свидетельствует недавно найденная на территории современного Азербайджана версия игровой доски. Подробности под катом!
Читать дальше →
Всего голосов 36: ↑35 и ↓1+49
Комментарии32

Погружение в Smali. До и После. Decompile-Change-Build

Время на прочтение6 мин
Количество просмотров5.1K

В этой статье я позволю себе немного отклониться от темы, непосредственно касающейся Smali. Сегодня немного о том, откуда приходит Smali и куда возвращается. Поговорим о разборке и сборке файлов APK.
Статья предназначена для людей, которые знают основы разработки приложений под OS Android. Кто считает себя "речным котиком" и "морским мурзиком" в этом деле может спокойно пропустить эту статью мимо глаз.

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

В помощь тем, кто погружается в Smali

Время на прочтение7 мин
Количество просмотров4.2K

Целевая аудитория этой статьи — люди, которые решили заняться исследованием .apk файлов, имеющие опыт разработки под Android и знакомые с основами синтаксиса Smali. Эта статья является оригинальной и ранее нигде не публиковалась. При копировании, прошу указывать ссылку на этот источник.

Поскольку устройства, использующие операционную систему Android сегодня устойчиво сохраняют лидерство на рынке, программы для них не пишет разве что самый ленивый мобильный разработчик. Иногда программы ведут себя так, как мы этого ожидаем, а иногда (все чаще) не совсем так. И тогда, у пользователя программного продукта, особенно если он сам занимается разработкой, появляется ожидаемый интерес, и ему хочется понять почему программа делает то или это. Тогда пользователь, с чисто научно-позновательной целью, решает произвести вскрытие субъекта. Тут то на помощь ему и приходит множество инструментов для изучения файлов .apk.

Мой стандартный хирургический набор, на сегодняшний день, состоит из таких инструментов:
apktool - для декомпиляции и сборки apk
jadx-gui - когда хочется получить код приложения (или, что чаще — часть кода) в виде Java.
Bytecode Viewer — когда хочется получить код в виде Java, используя разные декомпиляторы, что дает иногда весьма интересные результаты.
zipalign — утилита из состава Android Studio, предназначенная для выравнивания содержимого файлов, упакованных в .apk.
apksigner - утилита из состава Android Studio, предназначенная для подписи исследуемого файла, и успешного его запуска на устройстве.

средства автоматизации собственной разработки — накапливаются с опытом. Иногда возникает столько рутинной работы, типа заменить A на B во всех файлах, что руки опускаются. Но, мы не из тех, кто сдается. И поэтому, исключительно из-за своей лени пишем утилиты, которые, собственно и позволяют нам лениться ). Однако, для меня, основными инструментами все же являются: файловый менеджер с хорошо организованным внутрифайловым поиском ( я использую Krusader, потому что Ubuntu), и редактор с какой-никакой подсветкой синтаксиса (я использую Kate, потому что Ubuntu).

На основании своего опыта исследования классических .apk (когда программа написана на Java или Kotlin c UI на xml шаблонах), ответственно заявляю, что получить из оригинального .apk рабочий проект Android Studio МОЖНО! И я говорю далеко не про Hello World. Но и тут есть свои особенности. Все зависит от того, насколько автор программы позаботился о защите ее кода. По моим наблюдениям до 80% программ уровня ширпотреба не имеют никакой защиты кроме примитивной обфускации.

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

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Где и как искать этот ваш SSRF: первые шаги в багхантинге

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров3.3K

Привет, меня зовут Олег Уланов (aka brain). Я занимаюсь пентестами веб-приложений и активно участвую в багбаунти, зарабатывая на чужих ошибках. Свой путь в наступательной безопасности я начал совсем недавно, но, несмотря на это, меньше чем за год мне удалось ворваться в топ-10 исследователей на Standoff Bug Bounty (сейчас я на 5-м месте — можете проверить 😉).

В своем дебютном посте кратко расскажу об уязвимости с подделкой запросов на стороне сервера (SSRF) и ее видах, покажу, как обнаруживать этот баг и почему его стоит искать даже на статических сайтах, а заодно подсвечу особенности работы с Burp Suite, Collaborator Everywhere и Wappalyzer. Статья будет полезна для прокачки скилов и поможет легче и быстрее обнаруживать SSRF в сервисах, размещенных на площадках багбаунти.

Начнем хантить баги?
Всего голосов 11: ↑9 и ↓2+10
Комментарии0

Зачем в iPhone чип, который убивает FaceID

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров53K

Разбирался я в низкоуровневой работе камер iPhone, и дошёл до FaceID — системы распознавания лиц, используемой Apple для разблокировки смартфона. И наткнулся внутри на интересную вещь: чип, единственное предназначение которого в том, чтобы вывести из строя FaceID. Навсегда.

О том, как в iPhone вообще работает FaceID, где там этот чип стоит, что именно он делает, зачем его сделали таким злым, и как в ремонте справляются с этой напастью — под катом!

Читать далее
Всего голосов 641: ↑640 и ↓1+758
Комментарии177

Симкод — современный язык ассемблера

Время на прочтение33 мин
Количество просмотров16K

Начну с определений.

Симкод — это последовательность симкоманд.

Симкоманда — это символьная машинная макрокоманда с Си-подобным синтаксисом.

Например, ассемблерной команде add rax, rbx соответствует симкоманда rax += rbx.

Симкод позволяет выразить любой ассемблерный код [и как следствие машинный], только в более человекочитаемом виде. Однако, симкод не пытается назначить символьное обозначение для абсолютно каждой ассемблерной команды — те команды ассемблера, которые не имеют символьной записи, оставляются как есть. Таким образом, симкод является надмножеством ассемблера.
Читать дальше →
Всего голосов 56: ↑51 и ↓5+61
Комментарии50

Импульсный (Пере)Магничиватель для неодима

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров17K

Импульсный (пере-)магничиватель для неодимовых магнитов (из HDD). Много конденсаторов, толстый тиристор, пыщ-пыдыщ, всё как мы любим.

Читать далее
Всего голосов 113: ↑113 и ↓0+114
Комментарии116

Работа с файлами в ОС CP/M на компьютере «Profi»

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров1.4K

В предыдущий раз пришлось уделить внимание и бегло рассмотреть работу с файлами в ОС CP/M. А так как «Быстро, хорошо не бывает» (с) было приято решение о необходимости подробного и основательного разбора данного вопроса, так что бы в будущих статьях не тратить на него время и место.

Статья была опубликована в 2020 году в 28 номере журнала по ZX Spectrum'у "ЗаRulem Печатное Слово".

Статья написана в соавторстве с Вадимом Чертковым.

Читать далее
Всего голосов 13: ↑10 и ↓3+12
Комментарии8

Большие простые числа: преобразование Фурье

Время на прочтение10 мин
Количество просмотров12K

В одной из предыдущих статей я рассказал о математических алгоритмах, позволяющих проверить простоту очень большого числа. Но в основе всех тех алгоритмов лежит одна базовая операция — перемножение двух больших чисел. Именно операции длинного умножения занимают 99,9% времени выполнения любого теста простоты. Как же умножение реализуется на практике? Говорят, что при помощи быстрого преобразования Фурье. Но беглое прочтение Википедии вызывает недоумение. Какое отношение преобразование Фурье имеет к умножению целых чисел? Давайте разбираться.

Читать далее
Всего голосов 40: ↑40 и ↓0+52
Комментарии22

Создание аналога Google Photos на собственном сервере

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров32K

Создание собственного облачного хранилища с автоматическим менеджером фотографий.

Изучение опенсорс софта, нацеленного на автоматический менеджинг фотографий, сравнение софта между собой, установка на тестовый сервер, просмотр с разных устройств.

Читать далее
Всего голосов 23: ↑21 и ↓2+26
Комментарии81

Подборка игр с низкоуровневым программированием

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

TL;DR

Игры от Zachtronics:

TIS-100, EXAPUNKS, SHENZHEN I/O

Про создание процессора от логических элементов и до написания кода на ассемблере: браузерная бесплатная nandgame.com, более продвинутая Turing complete.

Если Вам нравится какая-то игра из перечисленных - наверно, и остальные тоже подойдут. В каждую из них я наиграл по 30+ часов, получил кучу удовольствия и научился чему-то новому.

Подробности
Всего голосов 67: ↑66 и ↓1+79
Комментарии26

Проблемы с логикой у LLM и с доверием не только у LLM

Уровень сложностиПростой
Время на прочтение21 мин
Количество просмотров5.5K

Проблемы качества базы данных LLM[1] и необучаемости LLM в силу ограничения размеров контекстного окна сводятся к одной проблеме никак с LLM не связанной — оценке доверия к публикациям и их авторам вообще. Вторая проблема — LLM не умеет решать простые логические задачи легко решаемые грамотными людьми, что свидетельствует о сходстве LLM с неграмотными людьми неспособными к абстрактному мышлению. В ближайшем будущем LLM не сможет достичь уровня логического мышления грамотного человека, зато LLM обладает большими чем у человека способностями к эриксоновскому гипнозу, а значит и к мошенничеству.

Читать далее
Всего голосов 20: ↑19 и ↓1+24
Комментарии26

Lane margining: как оценить качество PCIe-соединения без дополнительной аппаратуры

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров5.7K

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

Долгое время без специального дорогостоящего инструмента нельзя было убедиться в устойчивости линка: что он не пропадает при малейших воздействиях температуры, влажности или любопытных лапок. То есть нелегко было узнать количественный запас по уровню сигнала, насколько он близок к границе потери различимости физических уровней — а значит, и разрыва соединения. Эта безнадежная ситуация изменилась с появлением четвертого поколения стандарта PCIe.

Читать далее
Всего голосов 50: ↑50 и ↓0+60
Комментарии22

Diagnocat: как искусственный интеллект облегчает жизнь стоматологам и пациентам

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1.7K

Искусственный интеллект стал одной из самых горячих тем последние несколько лет. ChatGPT пишет книги и дипломные работы, DALL-E создает картины по текстовому описанию, стриминговые сервисы, такие как Кинопоиск, используют искусственный интеллект для создания рекомендации, голосовые помощники отвечают на почти любые запросы пользователей. Медицина и стоматология не стали исключением – искусственный интеллект меняет практику врачей. Согласно исследованию, опубликованному в Journal of Dental Sciences, благодаря интеграции технологии искусственного интеллекта и систем цифровой визуализации, стоматологи теперь могут быстрее анализировать рентген- и  КТ-снимки, а также выявлять проблемы со здоровьем полости рта: кариес, потерю костной ткани или развитие инфекции. 

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

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

Читать далее
Всего голосов 5: ↑3 и ↓2+3
Комментарии3

Фильтр Блума

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров11K



У каждого разработчика есть набор инструментов для решения различных задач. Однако со временем возникает необходимость расширять этот набор, чтобы эффективно справляться с более сложными задачами. В этой статье я хочу познакомить вас с инструментом, которым вы, скорее всего, раньше не пользовались. И хотя он подходит для решения узкого спектра задач, его использование может оказаться весьма полезным. Знакомьтесь — "фильтр Блума" (Bloom filter).

Читать дальше →
Всего голосов 44: ↑41 и ↓3+53
Комментарии16

Гайд: чем снимать видео дома. Подборка оборудования от 11 000₽ до 420 000₽

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

Я снимаю кинофестивали, шины от поставщика Формулы-1 и даже робота-хирурга прямо в операционной. Но снимал и из багажника, в студии-каморке, и начинал с подручных средств. Поэтому решил собрать 3 комплекта для съемок под разный бюджет: от бабушкиной пенсии до зарплаты айтишника.

Читать далее
Всего голосов 48: ↑43 и ↓5+54
Комментарии74

Основы кодирования аудио с потерями. Тестирование бета-версии Opus 1.3

Время на прочтение18 мин
Количество просмотров65K
image

0. Об авторе


Всем привет, меня зовут Максим Логвинов и я студент Харьковского Национального университета радиоэлектроники.

Меня всегда интересовали звук и музыка. Я сам любил писать электронную танцевальную музыку и мне всегда было интересно, как человеку, который недостаточно хорошо разбирается в высоких материях математики, узнать, что же происходит со звуком в компьютере: как он пишется, сжимается, какие для этого существуют технологии и так далее. Ведь со школьной скамьи и физики я понимал, что звук — он «аналоговый»: его мало того что нужно преобразовать в цифровой (для чего необходимы такие устройства как АЦП), но его нужно как-то сохранить. А ещё лучше, чтобы эта музыка занимала поменьше дискового пространства, чтобы можно было поместить в скупую папку побольше музыки. И чтобы звучала хорошо, без всяких слышимых артефактов сжатия. Музыкант ведь. Натренированное ухо, не лишённое музыкального слуха, достаточно сложно обмануть методами, которые используются для компрессии звука с потерями — по крайней мере, на достаточно низких битрейтах. Ишь, какой привередливый.

А давайте посмотрим, что из себя представляет звук, как он кодируется и какие инструменты используются для этого самого кодирования. Более того, поэкспериментируем с битрейтами одного из самых продвинутых на сегодняшний день кодеков — Opus и оценим, что и с какими циферками можно закодировать, чтобы и рыбку съесть, и… Собственно, просто почему бы и нет? Почему бы не попытаться описать простым языком не только то, как хранится и кодируется аудио компьютером, но и протестировать один из лучших кодеков на сегодняшний день? Особенно, если речь идёт о сверхнизких битрейтах, где практически все существующие кодеки начинают творить невероятные вещи со звуком в попытках уложиться в малый размер файла. Если хочется отвлечься от рутины и узнать, какие выводы были получены при тестировании нового кодека — добро пожаловать под кат.
Читать дальше →
Всего голосов 35: ↑35 и ↓0+35
Комментарии23

Раздача файлов на смартфоны без интернета. Опенсорсные альтернативы AirDrop

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров14K


Формулировка задачи. У нас есть настольный компьютер и мобильные устройства под Android. Задача простая — как быстро перебросить файлы с компьютера на телефоны и планшеты. Например, скачанные подкасты и HD-фильмы 1080p, файлы apk для установки, рабочие файлы с персоналки, бэкапы. Хранилище телефона можно использовать как резервный внешний диск или как «беспроводную» флешку, которая работает по Wi-Fi.

Конечно, можно это сделать через веб-сервисы Wormhole/PairDrop/FilePizza, через телеграм/вайбер или инструменты синхронизации ПК и смартфона, такие как syncthing. Да, это удобно и привычно. Но процесс можно 1) ускорить; 2) избавиться от подключения к интернету. То есть файлы будут передаваться напрямую между устройствами, как Apple AirDrop, только лучше.
Читать дальше →
Всего голосов 41: ↑40 и ↓1+57
Комментарии68

Преобразование Уолша-Адамара

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров14K

На сайте hackerrank.com есть отличная задача. По заданному массиву short[] A; найти максимальное количество его подмассивов, xor элементов которых будет одинаковым. Сам этот xor тоже нужно найти.

Максимальная длина массива равна 105, так что квадратичный алгоритм не укладывается в лимит по времени исполнения. Я в своё время с этой задачей не справился и сдался, решив подсмотреть авторское решение. И в этот момент я понял почему не справился — автор предлагал решать задачу через дискретное преобразование Фурье.

Читать далее
Всего голосов 64: ↑64 и ↓0+64
Комментарии5
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Новосибирск, Новосибирская обл., Россия
Дата рождения
Зарегистрирован
Активность