Операционная Система «Сивелькирия»: вводное описание

Привет, Хабр.

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

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

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

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

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

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

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

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

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

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

  1. Конечным пользователям — предоставляя полные, удобные, совместимые, переносимые и надёжные решения.
  2. Покупателям программных продуктов — предоставляя гарантии того, что все выбранные ими решения окажутся совместимы между собой и что использование одного конкретного решения, с одной стороны, не ограничит их возможности по использованию смежных продуктов, а с другой — не поставит их в ситуацию, когда из-за неустранимых проблем одной устаревшей системы придётся менять весь стек используемых технологий.
  3. Разработчикам — давая им возможность сосредоточиться на решении тех задач, ради которых затевалась разработка, а также извлечь из повторного использования кода максимально возможную пользу.
  4. Поставщикам программного обеспечения — открывая путь к выпуску на рынок ПО, применимого в максимально широком контексте и, как следствие, подходящего максимально возможному кругу пользователей.
  5. Поставщикам содержимого — позволяя сосредоточиться на предоставлении содержимого, которое автоматически становится доступным максимально широкому кругу лиц в максимально широком контексте, избежав необходимости разработки технических решений, повторяющих уже существующие.

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

Концепция ОС «Сивелькирия»

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

  1. Приложение.
  2. Процесс.
  3. Файл как область данных на диске.
  4. Сквозная файловая система, навигация по которой ограничена лишь правами доступа.
  5. Командная строка как среда для запуска отдельных приложений.
  6. Универсальные скрипты.
  7. Доступность базового API операционной системы любому компоненту.
  8. Возможность прямого переноса стандартных библиотек большинства современных языков программирования. Как следствие, возможность прямого переноса существующего ПО с других операционных систем, кроме отдельных случаев.
  9. Поддержка языков программирования без объектной ориентации.

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

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

  1. Операционная система «Сивелькирия» является объектно-ориентированной в том смысле, что она предоставляет объектные интерфейсы для выражения всех понятий предметной области, с которыми может работать ПО, выполняемое в рамках данной ОС. Все сущности, с которыми ведётся работа в рамках прикладных или системных программ, должны быть представлены в виде объектов, реализующих один или более интерфейсов, определённых операционной системой. Обмен данными за пределами этой структуры не допускается. Данные, получаемые из внешних источников, оборачиваются в данные интерфейсы в точке входа.
  2. Единицей распространения программного кода является модуль. Разница между модулями, предоставляющими прикладную функциональность, и модулями, выполняющими функции системного уровня, минимальна или отсутствует.
  3. Операционная система содержит библиотеку прототипов модулей, выделенных по функциональному признаку. Каждый прототип определяет, какие функции предоставляет модуль и какими входными и выходными данными он оперирует (в терминах объектных интерфейсов). Каждый модуль реализует один (и только один) прототип. Прототипы организованы так, чтобы каждый модуль выполнял одну (и только одну) функцию вне зависимости от происхождения входных и назначения выходных данных.
  4. Порядок загрузки и выгрузки модулей и вызова функций из них, компоновка модулей и их взаимодействие, организация, приоритеты и синхронизация потоков, время жизни объектов данных и способы их обработки определяются операционной системой. Реализации модулей и объектов данных не делают на этот счёт никаких предположений за пределами гарантий, дающихся в определении интерфейсов и прототипов.
  5. Каждому модулю доступны только те данные и способы взаимодействия с операционной системой, которые необходимы для выполнения его функции (определяемой прототипом). Ни один модуль не имеет доступа ко всем функциям операционной системы. Дублирование функций, уже возложенных на определённый прототип, в рамках модуля, относящегося к другому прототипу, не допускается.
  6. Разработка интерфейсов данных и прототипов модулей ведётся непрерывно, совместными усилиями разработчиков программ и разработчиков операционной системы. Интерфейсы и прототипы изменяются и дополняются по мере необходимости.

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

ссылка на оригинал статьи https://habr.com/ru/post/486488/

Хабр Викли #37 / Можно ли писать музыку «на коленке», каков идеальный начальник, коронавирус vs ИИ, тяга к звездам

Поговорили о низком пороге входа в творческие профессии и Билли Айлиш, о том как должен строить работу начальник, чтобы от него не уходили. И про коронавирус тоже (простите!). А под конец — о том, как Макука Нколосо мечтал о космосе. Если вам есть, что добавить, или хотите поспорить, записывайте нам сообщения через бота t.me/habrpodcast_bot — мы включим вас в следующий выпуск.

В этом выпуске


Могли обсудить, но не обсудили:


Еще мы упоминали в подкасте:


Где еще можно послушать:

  1. Эппл-подкасты
  2. Спотифай
  3. Саундклауд
  4. Яндекс-музыка
  5. Телеграм
  6. ВК
  7. Ютуб
  8. Оверкаст
  9. Покеткаст
  10. Кастбокс
  11. Гугл-подкасты
  12. РСС


Участники

Звукорежиссеры
Сергей Дмитриев,
Камиль Шаймарданов

Продюсеры
Лев Пикалёв
Далер Алиёров, daleraliyorov


Подкаст сделан при помощи «Подкастерской».


Прошлые выпуски


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


ссылка на оригинал статьи https://habr.com/ru/company/habr/blog/483216/

Игра, управляемая лицом, в масках Инстаграм, или двойной клик глазами

Что за бред, подумаете вы. Что за бессмысленный набор слов? Но, увы или ура — кому как, сегодня это уже не бред, а реальность. Речь в статье пойдет о написанной мной для Инстаграм игре, в которой в качестве контроллера используется ваше лицо, а точнее, не только оно, но иногда и вся голова. Перемещение по игровому полю производится посредством поворота и наклона головы, а выбор действия — открытием рта либо двойным «кликом» (морганием) глазами. Double blink, наверно, стоило бы его назвать…

О дивный новый мир! Вероятно, хипстеры будущего займутся разработкой скриптов для генерации красивого разноцветного дыма за своими легковыми космическими капсулами или написанием шейдеров для придания интересных визуальных эффектов черным вратам персонального телепорта, типа падающих снежинок (Web 100.0) или фрактального тумана (WebGL 100.0) или… Нет, пожалуй, у меня не хватит фантазии представить себе, какой ерундой можно было бы заняться в будущем: я пытаюсь мыслить слишком логично. Но лет 30 назад мы точно, ни в каком сне, ни при каких условиях не смогли бы даже подумать, что сегодня мы будем создавать маски для социальной сети под названием Инстаграм. И более того — что внутри этих масок появятся полноценные игры. Мне стало страшно и интересно. В общем, страшно интересно. И, как вы уже поняли, я не удержался и тоже написал такую игру. Разумеется, для того, чтобы поиграть в нее, у вас должен быть смартфон на Android или iOS с фронтальной камерой и установленным приложением Инстаграм.

Эта игра — «Крестики-нолики». Вообще, это одна из первых игр, которую я создал в своей жизни, а, может быть, даже самая первая — я сейчас уже точно не вспомню. Но я писал ее еще на Паскале, затем перетащил тот старый алгоритм в Delphi. После этого игра, конечно, появилась также и в вебе, на моем сайте: ну а куда же на своей персональной страничке без своих персональных крестиков-ноликов… И вот теперь пришла пора запихнуть эту эпичную игру еще и в Инстаграм. В общем, если бы я был в этой игре крестиком или ноликом (скорее, наверно, ноликом), то я бы мог много поведать о своей долгой, интересной жизни…

Что еще за маски такие?

Для начала — краткий исторический экскурс. Маски в Инстаграм появились благодаря белорусской команде, разработавшей приложение для селфи MSQRD. После того, как это приложение купил Facebook, команда уже внутри корпорации продолжила работу по интеграции своей технологии в продукты Facebook. Так появилась платформа, предлагающая функции дополненной реальности, Spark AR. В августе 2019-го платформа вышла из статуса беты и стала доступна для всех пользователей, которые теперь могут создавать контент дополненной реальности для Facebook и Instagram.

Маски были задуманы как фильтры для придания забавных эффектов своей физиономии с последующим размещением селфи в социальной сети. Что касается игр в масках, то я нашел их не так много. Есть Flying Face, аналог Flappy Bird, где по экрану летит птичка, и вам нужно не дать ей врезаться в препятствия, моргая в нужные моменты. Еще видел игру, где нужно ловить ртом падающую сверху вниз еду. Шутер, типа Invaders. И 3D раннер, где персонаж бежит по улице города и перепрыгивает через препятствия. Возможно, есть и еще какие-то. В целом, тема довольно новая.

Процесс создания контента происходит в среде разработки Spark AR Studio, которую можно бесплатно скачать для Windows. Также, стоит скачать и приложение Spark AR Player для тестирования создаваемых вами эффектов на мобильных устройствах Andrioid или iOS, для которых, эти эффекты, собственно говоря, и предназначены. Соединение с компьютером происходит по USB кабелю, по крайней мере, в моем случае с Android смартфоном. После загрузки маски через компонент Facebook /sparkarhub и прохождения модерации ваша маска (или игра) станет доступна для всех пользователей Инстаграм из Интернета. Маску можно будет получить по прямой ссылке или со страницы ее создателя в Инстаграм.

Разобраться в том, как работать в Spark AR Studio совсем не сложно. Я не буду подробно останавливаться на этом, тем более, что в Интернете полно уроков на данную тему. Отмечу только, что существуют два пути разработки более-менее интерактивного приложения, предполагающего нечто большее, чем просто наложение на лицо каких-то статических спрайтов: это создание так называемых патчей и написание скриптов. Первый способ визуально напоминает работу с материалами в 3D редакторе, а второй — это просто программирование на Javascript с использованием специализированного api. Я выбрал второй вариант. Впрочем, никто не запрещает совмещать оба способа: из скриптов есть возможность доступа ко всему, что творится в патчах.

Графика

Итак, для начала неплохо бы создать некоторые графические элементы, которые будут использоваться в игре. Открываем любимую программу 3D моделирования и творим. Я использую Blender. В принципе, можно создать просто отдельные спрайты, а затем задать им некую логику поведения средствами Spark AR и не использовать 3D редактор вообще. Но я решил сделать объемные фигурки крестиков и ноликов, поэтому без подобного редактора было уже не обойтись.

Первым делом нужно создать 2D текстуры. Объединим все текстуры в один атлас.

Текстурный атлас

Теперь о 3D моделях. В качестве игрового 3D пространства используется плоскость из двух треугольников, на которые натягивается разметка поля (вот тот большой сетчатый фрагмент из текстурного атласа). Сам атлас — с прозрачным альфа-каналом. В поле будет вставляться 9 квадратиков синего цвета, тоже состоящих из двух треугольников каждый. Также, помимо девяти синих, 3D модель будет содержать в тех же координатах по 9 зеленых и красных квадратиков, которые при старте игры будут скрыты. Смысл в том, что в нормальном состоянии цвет всех квадратов поля — синий, а зеленый и красный используются в качестве курсора для выбора позиции, в которую требуется установить соответственно крестик или нолик. Кроме того, зеленый и красный цвета используются для подсветки выигравшего ряда из трех клеток в конце каждого раунда. Достаточно было бы, конечно, использовать 9 синих и всего по 3 зеленых и красных квадратика, но тогда пришлось бы, помимо отображения / скрытия, задать им еще и некую логику перемещения. Мне показалось, что просто скрывать и отображать их без какого-либо оперирования координатами в пространстве будет легче, да и 3D модель это нагрузит несущественно.

Игровое поле

В игре позиции трех квадратиков в каждой из девяти групп, разумеется совпадают. Здесь я просто в одной из клеток рассредоточил их по вертикали, чтобы наглядно продемонстрировать, из чего состоит 3D модель в целом. Обратите внимание, что квадратикам заданы имена (на рисунке в списке справа) определенным образом: от b11 до b33, от g11 до g33 и от r11 до r33, где каждая цифра изменяется в диапазоне от 1 до 3. Иными словами, буква обозначает цвет, а цифры — строку и столбец. Это нужно для доступа к квадратикам (мешам, в терминологии 3D) по именам из скрипта, чтобы было удобно скрывать и отображать их.

Затем я смоделировал сами фигурки крестиков и ноликов, расположив их также парами в каждой клетке. (Для наглядности приподнял один из ноликов.) Не смотрите на то, что их текстура пока такая «веселенькая». Я это сделал для удобства наложения UV развертки. Затем в текстурном атласе я заменил текстуры фигур на более спокойные, которые вы можете наблюдать в самой игре.

Игровые фигуры

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

Экспортируем все 3D модели (все три, то есть, поле, фигуры и стрелки) в формат FBX, который требует Spark AR Studio.

Импорт в Spark AR Studio

Сначала запустим Spark AR Studio и импортируем туда 3D модели. Они появятся в списке Assets слева внизу. Заодно создадим для своего лица тематическую маску с боевой раскраской в виде «татуировок» крестика и нолика на лице. О том, как создать текстурированную маску, можно узнать из тысяч уроков в глобальной сети или из официальной документации по платформе, не буду заострять на этом внимание. Вкратце: скачиваем «болванку», открываем ее в любимом графическом редакторе, рисуем что-нибудь свое поверх, сохраняем, импортируем картинку в Spark AR Studio, настраиваем параметры материала и текстуры.

Перетащим из Assets наши модели в список Scene выше. Причем, нам нужно, чтобы они рендерились в определенном порядке: сначала поле (field.fbx), затем модели фигур (fieldxo.fbx) и, наконец, срелки (arrows.fbx). Кроме того, на самом нижнем слое будет еще faceTracker с faceMesh — это маска для вашего лица. Вероятно, можно закинуть модели на сцену в любом порядке, однако, я намереваюсь отключить для всех материалов (кроме фигурок) сортировку по глубине — Depth Test и Write to Depth Buffer (в свойствах материалов), поэтому пусть они рендерятся в заданном мной вручную порядке: маска — поле — фигурки — стрелки.

В материалах каждого из слоев зададим Blend Mode = Alpha, чтобы объекты стали прозрачными в тех частях, где это задано в текстуре. А текстурам зададим Filtering = Medium для сглаживания. (При выборе из списка слева материала или текстуры в правой части окна будут отображаться все доступные для них свойства.)

Наконец, добавим в Assets (кликнув внизу слева +Add Asset) элемент Script. И помимо 3D моделей, в списке появится script.js, по клику на который откроется ваш внешний текстовый редактор скриптов. При сохранении в редакторе происходит рестарт вашей программы в Spark AR Studio.

Программирование

В начале скрипта подключим модули, которые нам потребуются в данном проекте. Это сцена, отслеживание лица, модули для работы со временем, звуком и анимацией.

const Scene = require('Scene'); const FaceTracking = require('FaceTracking'); const Time = require('Time'); const Audio = require('Audio'); const Animation = require('Animation');

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

Доступ к именованному фрагменту 3D модели (мешу), например, к синему квадратику в первой строке, втором столбце игрового поля:

Scene.root.find('b12');

(Вспомним, b12 — так мы именовали данный меш в 3D редакторе.)

Доступ к крестику в данной позиции:

Scene.root.find('x12');

Сокрытие нолика (o), постановка крестика (x) и окрашивание в зеленый цвет (g) ячейки поля ’32’ (третья строка второй столбец):

// figure Scene.root.find('o32').hidden = true; Scene.root.find('x32').hidden = false; // background Scene.root.find('b32').hidden = true; Scene.root.find('g32').hidden = false; Scene.root.find('r32').hidden = true;

Зеленый крестик с зеленой подсветкой в поле ’32’

Подпишемся на события поворота и наклона головы, чтобы перемещаться по полю.

//vert: fov+ back- FaceTracking.face(0).cameraTransform.rotationX.monitor().subscribe(function(event) { 	var v = event.newValue; 	... });  //hor: rt+ dn- FaceTracking.face(0).cameraTransform.rotationY.monitor().subscribe(function(event) { 	var v = event.newValue; 	... });

Здесь все очень просто. Берем из события значения поворота или наклона головы (event.newValue) и проверяем, выходят ли они за определенный диапазон. Если да — то смещаем курсор (зеленый квадратик) визуально в нужном направлении. Отрицательное значение поворота головы соответствует ее повороту влево, положительное — вправо. Аналогично — для наклона головы вперед-назад для движения по строкам. Весь диапазон — это от -1 до +1. Таким образом можно реализовать перемещение курсора и…

И тут меня осенило

Я вдруг понял, что управлять курсором на поле тем способом, который я выбрал, неудобно: нужно поворачивать голову для перемещения на одну клетку, затем возвращать голову в исходное положение, затем снова поворачивать ее для следующего шага и так далее. А почему бы просто не использовать дробные значения поворота головы в стороны и наклона вперед-назад для того, чтобы сразу сфокусироваться на нужной клетке поля? То есть, как бы указывать курсору его позицию взглядом, а, точнее, направлением головы. А то первый способ представляет собой слишком усердную разминку для шеи. Физкультура — это, конечно, хорошо, но не до такой же степени. Естественно, будем запоминать текущую позицию где-нибудь в ap.cur={x:1,y:1}, чтобы стирать курсор в предыдущей позиции и сохранять координаты новой позиции, необходимой впоследствии для «клика». Кстати, визуальные стрелки для указания направления движения курсора теперь не нужны: одну 3D модель (arrows.fbx) выбрасываем из проекта. Также, можно стереть изображение стрелки и с текстуры.

«Дабл блинк»?

А теперь мы добрались до самого интересного. Двойной клик глазами. Признайтесь, вы хотели сделать это с того момента, как узнали о нем в начале статьи? Теперь вы будете рассказывать своим знакомым о том, что мышь уже устарела и что сегодня для клика используется двойное моргание! Double blink. Почему двойное? Все просто: одинарное человек делает непроизвольно периодически, поэтому навешивать какие-либо события на одиночный блинк было бы садизмом.

В Spark AR существует события leftEye.openness и rightEye.openness, подписавшись на которые, можно получить величину открытия каждого глаза в event.newValue в диапазоне от 0 до 1. Будем считать глаз закрытым при значении менее 0.1. И вызовем функцию обработки «блинка» ap.blink1() (ap — это неймспейс, мне просто так удобнее).

//leftEye FaceTracking.face(0).leftEye.openness.monitor().subscribe(function(event) { 	if  (event.newValue < 0.1) { 		ap.blink1(); 	}; });  //leftEye FaceTracking.face(0).rightEye.openness.monitor().subscribe(function(event) { 	if  (event.newValue < 0.1) { 		ap.blink1(); 	}; });

В самой функции обработки моргания определим минимальный интервал между морганиями 200 миллисекунд для того, чтобы эта функция не срабатывала сразу дважды при моргании обоими глазами, так как ее вызов повешен на каждый глаз. Думаю, понятно. Также, определим максимальное время двойного моргания — 1 сек. Если укладываемся в этот диапазон, то сработает функция action(), которая отобразит крестик в текущей позиции. Заодно повесим action() и на событие открытия рта mouth.openness — чтобы у игрока был выбор, ставить ли крестик по двойному морганию или по открытию рта.

blink1:function () { 	var tmNew = Date.now(); 	if  (tmNew - ap.blinkStart > 200) { 		ap.blinkCount++; 		if  (ap.blinkCount > 1) { 			//action 			if (tmNew - ap.blinkStart < 1000) { 				ap.action(); 			}; 			ap.blinkCount = 0; 			ap.blinkStart = 0; 		} else { 			ap.blinkStart = tmNew; 		}; 	}; },  action:function() { 	if  (ap.fProc == false) { 		ap.fProc = true; 		xo.putx(); 	}; },  //mouth FaceTracking.face(0).mouth.openness.monitor().subscribe(function(event) { 	if  (event.newValue > 0.2) { 		ap.action(); 	}; });

Звуки

Их я нашел в разделах роялти-фри на различных сайтах звуковых эффектов. Важная деталь: Spark AR требует звуковые файлы определенного формата, а именно, M4A, моно, 44.1 КГц, 16 бит. Онлайн-конвертеры из wav и mp3 в m4a в ассортименте присутствуют в глобальной сети. Я добавил звук к четырем событиям: ходу, выигрышу крестиков, выигрышу ноликов и ничьей. Общий объем всех звуков после конвертации составил 105 Кб.

Для использования звуков в скрипте надо подключить в скрипте аудиомодуль, добавить на сцену нужное количество динамиков по количеству звуков (у меня получилось Speaker0, Speaker1, Speaker2, Speaker3), добавить в Assets модуль Playback Controllers, создать в нем соответственно количеству звуков нужное число подпунктов audioPlaybackController и привязать к каждому динамику свой звук.

После этого проиграть звук из скрипта можно будет следующим образом (на примере звука клика):

var audioClick = Audio.getPlaybackController('audioPlaybackControllerClick'); audioClick.reset(); audioClick.setPlaying(true);

Финальный билд

Для создания билдов под все поддерживаемые мобильные устройства (Android, iOs) надо просто нажать File -> Export. Объем игры под каждую мобильную платформу со всеми 3D моделями и текстурами в моем случае составил порядка 1 Мб. Затем нужно зайти через браузер на Spark AR Hub в Facebook /sparkarhub и загрузить туда экспортированный файл. Также требуется заполнить описание, ключевые слова для поиска и загрузить демонстрационное видео. Причем, оно должно быть снято на телефон через камеру Инстаграм. Для этого в хабе существует раздел «Предпросмотр камеры», содержащий ссылку. Эту ссылку можно открыть на мобильном устройстве. Запустится приложение Инстаграм и в нем откроется ваша маска (игра). Ссылку можно отправить для тестирования также всем своим друзьям, у которых, конечно же, должен быть смартфон с установленным приложением Инстаграм. До завершения процесса модерации маска не будет видна всем пользователям и они пока не смогут добавлять ее в список своих эффектов, она будет видна лишь по этой ссылке.

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

Через три дня игру одобрили, предварительно переместив ее в раздел «Camera Styles». Честно говоря, я не помню, в какой раздел я помещал ее изначально (а раздел, или, иначе говоря, категорию, нужно было выбрать обязательно). Это не очевидно, поскольку не существует раздела игр для Инстаграм. Но, ладно, теперь будем знать, куда нужно помещать новые игры. Если игры будут появляться и в дальнейшем, то, вероятно, Инстаграму стоит добавить новый раздел.

Итог

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

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

ссылка на оригинал статьи https://habr.com/ru/post/486498/

Как новичок 3D принтер покупал. Выбор, настройка, проблемы и решение практических задач

image

Чем их больше на рынке появляется 3D-принтеров, тем ниже цены — сейчас устройство начального уровня можно купить за $200–300.

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

Какой принтер был нужен?

Учитывая то, что я почти ничего не знал о 3D-принтерах (кроме нескольких статей, прочитанных здесь же, на Хабре), важными моментами стали:

  • Работоспособность принтера «из коробки». Я видел несколько статей с описанием того, сколько требуется времени на настройку «простого китайского принтера». Его нужно собрать из большого количества деталей, причем не факт, что среди них не попадется бракованных. Собрав, можно провозиться с девайсом пару дней, а потом окажется, что он по какой-то причине не работает. Короче, мне нужен был принтер, который не нужно собирать, и который может работать сразу после подключения.
  • Он не должен быть слишком дорогим. Серьезно, я новичок, я не был уверен, что после пары дней не заброшу девайс. И принтер за 500–600 евро был бы слишком дорогой игрушкой. Так что я был готов потратить пару сотен, не больше.
  • Он не должен быть слишком большим. Перед покупкой я выделил под установку принтера немного места, где-то 50*50 см. Поэтому принтер должен был без проблем встать на выделенную площадку.
  • Он не должен быть слишком сложным в обслуживании. Этот пункт тесно связан с первым. Не хотелось тратить кучу времени на эксплуатацию и профилактические работы — времени катастрофически не хватает, так что постоянно ликвидировать возникающие глюки — не вариант.
  • Хотелось получить принтер с WiFi, это было не критично, но важно.

Что я в итоге купил?

Модель Geeetech E180. Ее показал Google после запроса «3D-принтер для новичка». В выдаче были и другие модели, но этот понравился дизайном и наличием WiFi.

Разработчики этого принтера собрали на него деньги при помощи Kickstarter и пару лет назад он появился в свободной продаже. Его цена — от 200 до 350 евро, в зависимости от компании, которая его продает и магазина.

Купил на eBay, начальная цена составляла 200 евро, но продавец согласился сбросить 50 евро, так что общая цена — 150.

Характеристики принтера:

  • Технология печати: FDM
  • Размеры рабочего пространства: 130 x 130 x 130 мм
  • Точность печати: 0,05 мм
  • Точность позиционирования: X / Y 0,11 мм, Z 0,0025 мм
  • Скорость печати: 80–110 мм/с
  • Диаметр нити: 1,75 мм
  • Диаметр сопла: 0,4 мм
  • Поддерживаемый материал: производителем заявлен PLA, но может работать и с другими материалами
  • Операционная система: Windows
  • Программное обеспечение для управления: EasyPrint 3D
  • Формат файла: .STL, G-код
  • Максимальная температура экструдера: 230 °C
  • Источник питания: DC 12В 6A
  • Подключение: WiFi, USB, TF-карта (поддержка автономной печати)
  • Дисплей: 3,2-дюймовый полноцветный сенсорный
  • Шасси: металлическая пластина + литье под давлением (портативный консольный 3D-принтер)
  • Рабочий стол: пластина из алюминиевого сплава
  • XYZ Стержни: износостойкая, винт из нержавеющей стали и свинца (ось Z)
  • Шаговые двигатели: ступенчатый угол 1.8 градуса с 1/16 микро-степпинг

Распаковка и настройка

Прежде, чем настраивать, я посмотрел несколько обзоров и тестов принтера. Если бы не они, я бы сам не справился, объяснение в инструкции невнятное. Настройка несложная, но не для новичка.

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

Проблемы

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

Я убил несколько субботних часов на то, чтобы разобраться в причинах. Пытался искать объяснение в сети, но решения похожих проблем мне не подошли.

Радость от покупки улетучилась в первые пару часов возни. Хотелось принтер, «который просто работает», но не получилось. В итоге я понял, что не идет подача волокна — просто не работал механизм подачи, скрытый под пластиковой крышкой. Не работал он потому, что составные элементы не вращались. Движения не было вообще.

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

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

Потом было еще несколько мелких проблем:

  • Криво откалиброванный стол. Это привело к перекосу стола, и печатающая головка в одном месте тесно прижималась к поверхности. В итоге пластик не мог выдавиться из головки, что приводило к солидным дефектам печати;
  • Невозможность прямой печати скачанных из интернета моделек. Будучи новичком, я думал, что все работает, как с обычным принтером — скачал документ, отправил на печать. Оказывается, необходим еще и слайсинг. Повторяться не буду, что это и зачем нужно прекрасно описано в этой статье на Хабре;
  • Несовместимость слайсеров с моделью принтера. В слайсере нужно задавать размер рабочего стола принтера. Некоторые слайсеры почему-то не хотели работать с размерами моего принтера (13*13*13 см). Какие-то вообще крашились (включая родное приложение принтера), какие-то не «понимали» размеры. В итоге остановился на ideaMaker;
  • Отсутствие WiFi. Как оказалось, существует две разновидности E180 — одна с интегрированным модулем WiFi, вторая — без модуля, его нужно докупать. У продавца надпись «нужен отдельный модуль» была нанесена на одной из фотографий принтера, мелко и на французском языке (все остальное описание было на английском). Не мошенничество, но близко к тому. Модуль решил не докупать, не очень он и нужен;
  • Долгое время печати. Я думал, что на печать уходит несколько десятков минут. К тому, что крупные модели могут печататься по 6-8 часов я оказался не готов. Здесь сам виноват — невнимательно смотрел обзоры.

Практическое использование

Покупал я принтер не для игры, хотелось получить устройство, которое позволит создавать нужные в быту вещи, а не бежать в магазин. До покупки я наметил то, что хотел создать:
Рычажок отделения бака с водой в роботе-пылесосе iRobot Scooba, обзор ремонта которого я публиковал на Хабре. Его родная ручка поломалась, тратить деньги на покупку новой (они относительно редкие, поскольку Scooba больше не выпускаются и дорогие) не хотелось.

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

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

Стойка для паяльника. Нужна просто удобная стойка, с которой паяльник не будет падать, как с китайской подставки, которую я как-то купил.

Выдавливатель для тюбика с пастой. Да, вещь не самая нужная, но практичная.

Подставка для iPhone. Удобно, есть отверстие для кабеля, усиление звука.

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

Стилус для Nintendo DS Lite. У меня долгое время лежала игровая консоль, купленная на барахолке. Стилус потерялся, и я (и моя дочка) играли, используя стилус от КПК. Недавно нашел модель стилуса для консоли, распечатал — получилось идеально. В разъем входит, как фабричный.

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

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

В сети очень много готовых моделей. Если нужна какая-то деталь или вещь, в 90% случаев можно найти все, что требуется.

Неприятные мелочи

Печатаемые детали далеко не идеальны. В некоторых случаях возникает деформация некоторых элементов и приходится «допиливать» вручную, при помощи ножа и, собственно, напильника. Это случается не так часто, но хотелось бы, чтобы напечатанная деталь не требовала доработки (да, я знаю, что этого можно добиться, купив профессиональный 3D принтер).

Иногда детали распечатываются, но почему-то не совпадает реальный и заявленный размер. Так, я несколько раз пытался печатать разные диспенсеры для аккумуляторов АА и ААА, но готовые диспенсеры почему-то не подходили. Диаметр отверстий, в которые вставляются батарейки, был всегда несколько меньше диаметра самих батареек. Я так и не понял, то ли проблема с моей стороны, то ли модель проблемная. В качестве решения — можно просто увеличивать масштаб детали в слайсере, процентов на 10. Но жаль потраченного пластика — ведь узнать, получится качественная деталь или нет, можно только после того, как готова солидная ее часть.

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

Для того, чтобы разрабатывать что-то свое, нужно знание CAD, хотя бы на элементарном уровне. В противном случае придется искать готовые объекты на сайтах, где размещаются созданные кем-то модели. В итоге я так и не нашел крышку для батареек для одного из пультов. Разработать ее сам я не в состоянии — времени на освоение CAD почти нет.

Размер рабочего стола моего принтера невелик. Так что не все объекты, которые я хотел бы напечатать, можно реализовать технически. В частности, я хотел распечатать другую модель штатива для микроскопа. Но не вышло, поскольку она больше, чем стол принтера.

Fin

Доволен ли я, как новичок, принтером? Да, очень. Он оправдал мои ожидания почти полностью. Правда, нужно учитывать, что принтер достался мне относительно недорого. Если бы я его купил за, скажем, 300-400 евро, то был бы менее доволен приобретением. Главное то, что при помощи 3D принтера можно решать практические задачи, это уже далеко не просто игрушка. Мнение об “игрушке” приходилось слышать от многих.

Ну а теперь вопрос — а что полезного для быта или работы печатаете на своих принтерах вы?

ссылка на оригинал статьи https://habr.com/ru/post/481230/

Facebook плачет, Social Links смеется, Maltego курит

И снова здравствуйте, дорогие друзья. Очень рад, что вы следите за публикациями и пришли прочесть новую статью из цикла про Maltego. Изначально, я планировал объединять плагины и делать обзор на 2-3 сразу. Однако, окунувшись в первый же дополнительный продукт для Maltego, а именно Social Links, я вдруг осознал всю тщетность данного пути.

Если не читали предыдущие статьи, то обязательно ознакомьтесь с ними: Maltego часть 1 и часть 2. Там мы рассматривали, что же такое Maltego и как оно выглядит.

Теперь же давайте сразу к интересному – к поиску по соцсетям. И начнем мы с самой большой – Facebook. В сборе информации нам поможет дополнение для Maltego под названием Social Links.


Как это работает

Сначала краткий экскурс в то, как это работает. Social Links предлагает свой API для улучшения возможностей Maltego по поиску информации о людях, компаниях, событиях и т.п.

Как сообщает официальный сайт компании:

С помощью данного расширения для Maltego (именно коммерческой версии) вы можете искать информацию в более чем 50 социальных сетях, базах данных и источниках Dark Net. Вам доступно более 700 методов поиска информации, усиленных возможностями по визуальному распознаванию лиц и поиску с геопривязкой.

То есть дополнение действует на «территории» таких социальных сетей, как: Facebook, Instagram, LinkedIn, Twitter, Skype, ВКонтакте, Одноклассники, YouTube. И даже распространяется на мессенджеры (например, Telegram, Signal). А ещё тут:

  • Поиск по Dark Net — это более 30 форумов без регистрации и СМС;
  • базы данных с открытым доступом: Companies House, Companies OC, Google Companies, OCCRP, Offshores;
  • доступна интеграция с различными API других поисковых систем: Pipl, Bitcoinwhoswho, Securitytrails, Censys, Shodan, ZoomEye и др.

Это еще не всё.

Первая мысль

Плюс ко всему вышеперечисленному нам еще доступна БД компании Social Links, которая вроде бы уже составляет порядка 7 TB информации, собранной из открытых источников (e-mail, номера телефонов, адреса и явки, но, к сожалению, без паролей. Пока что).

Вторая мысль

Сказать, что я немного был ошарашен таким объемом возможностей – это значит тактично промолчать. Но, как говорится, на словах-то Лев Толстой, а на деле – давайте разбираться…

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

Очень важный disclaimer!

MALTEGO и все его надстройки – ЭТО НЕ ВОЛШЕБНАЯ КНОПКА, которую нажал и получил любую инфу о человеке, системе, компании… Данный инструмент, как и любой другой, будет эффективен только в руках человека, который знаком хотя бы с основами OSINT и анализа данных из открытых источников. Если кажется, что один клик и вся информации у вас на ладони – забудьте.

Почта

Для начала посмотрим, что может показать Social Links если, мы знаем только почту человека, и сможем ли мы сразу найти его в Facebook.

С ходу, разумеется, найти мой профиль по одному лишь e-mail не вышло. Оно и понятно. Адрес почты у меня скрыт настройками приватности Facebook.

Многие, кто занимался OSINT более 1 раза, согласятся со мной, что искать информацию на человека, который хотя бы несколько лет следует базовым принципам цифровой гигиены – то еще занятие. Но, как говорится, чем выше сложность, тем больше интерес)

Первый результат был получен от Transform, который конвертирует e-mail в профиль Skype. Попадание 100% — Скайп мой.

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

Теперь давайте попытаемся выгрузить максимум информации из профиля Skype. С помощью 3-х Transforms мы конвертировали информацию из профиля Skype в Entities, с которыми теперь можем дальше работать. Также всю информацию о профиле мы можем посмотреть на вкладке Properties в свойствах Entitie.

И тут мое внимание привлекла Entitie формата Alias… Все люди ленивые в той или иной степени. Я, в данном случае, не стал исключением. Как многие из вас уже догадались, Alias – это никнейм или применительно к соцсети Facebook – ID.

Штирлиц понял, что совершил ошибку еще раньше чем это понял Мюллер…

Запустив Transform – [Facebook] Get Profile, Maltego был найден мой профиль в Facebook.

Для тех, кто не понял, что произошло, поясню: Мой Skype и Facebook ID одинаковы. Это одна из базовых методик OSINT, при которой мы имеем предположительный никнейм или список никнеймов, связанных с человеком, и проверяем все популярные сервисы на наличие пользователей с теми же самыми никами. С высокой долей вероятности мы найдем соответствия и как итог – профили пользователя в разных соцсетях.

Прим. автора: кстати, есть много сервисов, которые могут делать подобную проверку. Например: Namech_k.

Аккаунт Facebook

Итак, теперь у нас есть аккаунт Facebook. Давайте попробуем некоторые интересные Transforms. Например, давайте узнаем кто из тех, кто есть у меня в друзьях, подписан на Ольгу Бузову.

Вот, кстати, вам лайфхак по работе с Maltego. Если вы не уверены, что в правильной форме заполнили поля в свойствах Entitie, то просто возьмите ссылку на аккаунт человека и используйте Entitie URL. С помощью Transform получите Entitie нужного типа и через нее получите искомую Entitie профиля социальной сети. Пример можете посмотреть на рисунке с аккаунтом Ольги.

Как итог таких вот действий мы имеем корректно выгруженную Entitie профиля социальной сети Ольги Бузовой.

Ну а теперь начнем отлов «друзей». Усилий потребовалось немного. Выгружаем список фоловеров Ольги и мой список друзей. Остальное Maltego сделает за меня.

Есть попадание.

Простая и эффективная методика поиска аффилированности кого/чего-либо с кем/чем-либо посредством Maltego. Проблемы начинают возникать, когда таких связей не одна, а например, 100 или 1000. Тогда граф начинает принимать сложные формы химических элементов.

Для примера демонстрации данной проблемы достаточно просто отключить группировку однотипных Entities в коллекции на вкладке Collections и посмотреть, как будет выглядеть полная версия графа всех фоловеров Ольги и моих друзей.

Прим. автора: это, на мой взгляд, одна из самых главных проблем, с которой вы столкнетесь при проведении OSINT через Maltego. Нужно обязательно постоянно чистить граф от малоинформативных Entities, иначе вы рискуете утонуть в куче информации. Еще данная проблема частично решается покупкой хорошей мышки и БОЛЬШОГО монитора. А лучше двух.

Тут Social Links готова протянуть нам руку помощи. Например, метод поиска общих друзей между двумя профилями Facebook можно упростить, используя Entitie под названием Facebook Mutual Friends. Эта Entitie позволяет нам по двум Facebook ID выгрузить ТОЛЬКО общих друзей для данных профилей. Без выгрузки профилей всех остальных пользователей. Посредством этой методики мы можем оптимизировать граф в зависимости от задач поиска информации.

Как же это выглядит вживую?

Вариант 1 – Выгрузка всех друзей и Maltego строит связи.

Вариант 2 – Выгрузка общих друзей через Entitie Facebook Mutual Friends.

Таким образом, мы уменьшили количество выведенных результатов на граф и избавили себя от необходимости удаления ненужных Entities.

Но не одними списками друзей живы Transforms для Facebook. Также с помощью отдельных Transforms мы можем:

  • Выгрузить список постов, фото, аккаунтов, которые лайкнул пользователь;
  • Выгружать альбомы, посты, фоловеров, комментаторов и т.п. для конкретного пользователя, страницы, мероприятия, поста, фото и т.п.;
  • осуществлять поиск фото, постов, пользователей, групп, мероприятий по ключевым фразам и временным промежуткам;
  • делать то же самое, но по геолокации;
  • искать пользователей по фото с применением внутренних механизмов Face Recognition через сервис Social Links (об этом поговорим в отдельной статье);
  • для организаций — выполнять поиск аккаунтов, которые указывали данную организацию как место работы;
  • конвертировать информацию из профиля пользователя, группы, мероприятия и т.п. в Entities на граф для последующего использования;
  • выполнять запрос с отложенной обработкой (О них чуть ниже).

По умолчанию, окно работы Transforms ограничено двумя минутами. Если мы знаем, что время выгрузки информации будет больше двух минут, то мы можем отправить задачу на сервер Social Links и ждать результата. Время выполнения может достигать 1 часа, но и применяются данные отложенные Transforms только в случае большого объема данных под выгрузку. Например, нам нужно выгрузить список всех фоловеров с аккаунта блогера миллионника.

С полным списком всех доступных Transforms вы можете ознакомиться тут. Разумеется, итог применения данных Transforms зависит от того, как много методов OSINT вы знаете и насколько хорошо вы можете их комбинировать. Подчеркну еще раз: Maltego и Social Links – не волшебная кнопка, которую нажал и получил полное досье на человека.

PIPL

Теперь давайте поговорим про интеграцию со сторонними API на примере Transforms для поиска людей посредством сервиса Pipl. Для этой цели у нас существует отдельная Entitie под названием Pipl Search. Свойства данной Entitie вы можете видеть на рисунке.

Итак, как многие из вас уже в курсе, поисковик Pipl стал платным и для его интеграции в Social Links потребуется API ключ. Тут уже дело житейское – заходим на сайт Pipl, регистрируемся, получаем ключ и добавляем в настройках Maltego.

Особо хочу отметить именно ту опцию, которую я выделил на снимке экрана выше. Поставив галочку в графе Top Match, вы получите в выдаче только результаты, которые попали в ПОЛНОЕ соответствие введенным критериям. Иными словами, если вы ввели ФИО и e-mail, то без этой галочки вы получите все результаты по совпадению отдельно имени, отдельно фамилии и отдельно e-mail. Если поставили галочку Top Match, то только аккаунты, у которых все 3 критерия совпадут. Очень полезно, если в аккаунте Pipl у вас настроена оплата за результаты поиска.

Однако!

Частенько при простановке данной галочки (Top Match) вы можете получить нулевую поисковую выдачу. Даже по известным людям. Дело в том, что данная функция в поисковике Pipl является пока что экспериментальной и может работать некорректно.

Дополнительно Pipl предоставляет файл в формате JSON с результатами своей поисковой выдачи, где есть все, что он вынес на граф.

Прим. Автора: очень интересная деталь состоит в том, что поисковый сервис Pipl работает по принципу «ЧТО ПОПАЛО В ИНТЕРНЕТ, ТО ОСТАЕТСЯ ТАМ НАВСЕГДА». Например, в профиле Facebook у вас когда-то стояла информация, что вы работаете в компании А, и ваш профиль был проиндексирован со стороны сервиса Pipl.
Далее, вы вдруг решили немножко заняться корпоративным шпионажем у компании B и удалили информацию везде, где только можно, о том, что вы были сотрудником компании А, а затем с чистой совестью пошли на собеседование в компанию B.

Но вдруг вас не берут на работу туда. Вы начинаете разбираться. И оказывается, что даже в случае удаления информации из своего профиля в соцсетях и даже после новой индексации этого профиля сервисом Pipl, данные о работе в компании А внутри Pipl были бережно сохранены и выданы нужным людям по запросу в компании B. «ЧТО ПОПАЛО В ИНТЕРНЕТ, ТО ОСТАЕТСЯ ТАМ НАВСЕГДА».

Ещё и про Цукерберга

По славной традиции, какая же статья про Facebook может быть без упоминания Цукерберга. Вот давайте его и поищем. Кстати, не забываем в поисковом запросе выставить галочку на параметре AND if selected. Данный параметр устанавливает «И» между всеми значениями. По умолчанию, применяется значение «ИЛИ». Применение «ИЛИ» приведет к тому, что у нас будет общая выдача по людям с именем Марк + все люди с фамилией Цукерберг, а мы-то ищем конкретно только Марков Цукербергов 🙂

Тут мы видим очень яркий пример того, что часто встречается в OSINT. Даже по такой известной и однозначной личности поисковик Pipl выдает аж 21 фейк.

При этом, я заметил очень интересную деталь. В Pipl, на внутреннем профиле пользователя, по непонятным мне причинам, записана куча ID фейковых страниц Цукерберга, помимо верного.

Поэтому, если мы попытаемся применить Transform [Facebook] Search Person, то перед нами, в прямом смысле, разверзнутся врата OSINT-АДА.

Ну или давайте вот так, для пущей драматичности происходящего…

Вот, собственно, и все на сегодня. Не пропустите новые статьи по теме Maltego. Дальше мы рассмотрим, что же там по поиску в других соцсетях. Обязательно затронем VK, Одноклассники и Instagram. Поговорим о возможности поиска аккаунтов и людей по фотографии (Аналог Find Face только в экосистеме Maltego), посмотрим поиск по геолокации. Ну и на десерт самое интересное – узнаем, что же может предложить Social Links по части поиска в Dark Net.

И самое главное — помните! Вся информация выкладывается в данных статьях…

ссылка на оригинал статьи https://habr.com/ru/company/tomhunter/blog/486338/