Привел, друг. В этой статье расскажу про моё новое приложение OSINT Stividor, покажу как его использовать и какие есть возможности. Я уже рассказывал про ведение заметок при проведении расследований или любом другом сборе информации. Потому повторятся и рассказывать на сколько это важно и необходимо не буду. Сегодня рассмотрим практическую сторону этого вопроса, и почему именно OSINT Stividor может быть максимально полезным в некоторых ситуациях.
OSINT Stividor уже доступен на GitHub: https://github.com/okpulse/osint-stividor
Оно полностью бесплатное, а функционала этой версии уже достаточно для работы над кейсами любого масштаба. Но я не планирую останавливаться, и в будущем там будут появляться новые крутые функции, которые будут ещё больше упрощать работу, в том числе с разными видами данных.
Оглавлениение
С чего бы?
Для начала немного предыстории. Использование приложений для заметок, типа Notion или Obsidian, это хороший вариант чтобы накапливать информацию. Но т.к. это приложения, которые не задумывались именно под OSINT, там например, не хватает автоматизации, сортировок и функций упрощающих анализ. Особенно сильно это чувствуется когда работаешь над какими-то очень масштабными кейсами. Понятное дело, что можно придумать как сделать почти всё, в том же Notion. Но на это нужно время и желание, а их обычно нет.
Есть ещё приложения логирующие действия в браузере. Например Hunchly. Идея хорошая, а иногда прям очень полезная. Но, как говорится, есть нюансы. И, например, я всегда работаю в нескольких браузерах одновременно (два как правило). При чём один из них это всегда Firefox, потому что там удобно переключать прокси. А Hunchly в нём не работает. Ещё, лично мне не нравится, логирование вообще всех посещённых сайтов. Пока найдёшь что-то важное, есть вероятность посетить несколько десятков страниц, которые вообще не нужны. Понятное дело, что можно использовать теги, фильтровать селекторами и т.д., но это не отменяет того факта, что за пару часов работы будет сохранено несколько сотен страниц, которые не нужны и никогда не будут нужны. А если включать захват только на нужных страницах, то смысл этого всего процесса вообще исчезает. Я с таким же успехом могу скриншоты делать сам — количество действий приблизительно одинаковое.
Ну и ещё одно бредовое ограничение в том, что в проект Hunchly нельзя вручную сохранить ссылку из интерфейса приложения, не заходя на сайт. И это наверное главный косяк, из-за которого я и отказался от использования Hunchly.
Подобная ситуация это результат того, что такие приложения делают те кто занимаются бизнесом, а не OSINT. В общем смысл в том, что мне не нравятся те приложения которые есть. Но накидывать на вентилятор это, конечно, интересно, но к решению не приближает, потому я решил сделать своё приложение. В котором учесть все свои хотелки и пожелания. Так появилась идея OSINT Stividor.
Но не сразу, изначально это должен был быть бот в Telegram для сохранения постов из каналов. Принцип простой — пересылаешь ему пост и он записывает его в гугл таблицу, отдельно фиксируя ссылки и сохраняя на диск прикреплённые файлы, добавляя в таблицу ссылку на эти файлы. Но Google не дал API таблиц (API диска кстати дал), потому с ботом ничего не получилось. Пришлось переосмыслить идею, и в итоге появился OSINT Stividor. Ну и кстати описанное сохранение постов, тоже в нём будет в одном из следующих обновлений. Но хватит с предысторией, переходим к самому приложению.
Запуск OSINT Stividor
Запускается всё очень просто, но на всякий случай покажу.
Самый простой способ это скачать из релизов https://github.com/okpulse/osint-stividor/releases/ архив с исполняемым файлом и запускать его. Есть версии под Windows, Linux, MacOS.
Ещё один вариант это скачать репозиторий и запускать из исходников.
git clone https://github.com/okpulse/osint-stividor.git
cd osint-stividor
При таком варианте нужно скачать с официального сайта и установить Go. После этого можно запускать:
go mod tidy
go run ./cmd/server
Сначала скачаються все нужные пакеты (только при первом запуске), а затем откроется браузер и запустится OSINT Stividor. Если, по какой-то причине браузер сам не запустился — запусти и перейди по адресу
http://127.0.0.1:8765
Управление проектами
После запуске будет показано окно управления проектами.

Здесь можно создать новый проект или открыть уже существующий. По умолчанию новый проект создаётся и хранится в каталоге projects в той же папке где лежит приложение. Но можно указать любую другую папку при создании. Также, если у тебя есть папка с проектом который не добавлен, можно нажать «Открыть проект» и выбрать эту папку — проект добавится в список. Все созданные или добавленные проекты перечислены здесь же. Их можно удалять из списка или полностью. При удалении из списка, сами файлы проекта останутся в своей папке. При полном удалении файлы и папка проекта тоже удаляются.
Рабочее пространство OSINT Stividor
После создания нового или открытии уже существующего проекта мы попадаем в основное рабочее пространство.

Справа от названия находится меню выбора языка. Приложение доступно на русском, украинском и английском. Под названием будет имя проекта и путь к его файлам. Справа от имени находятся кнопки открытия папки проекта и возврата к начальному экрану.
Ниже находится область ввода. Если она не нужна, например ты уже собрал нужную информацию и теперь планируешь её изучать, то область ввода можно свернуть, нажав на кнопку в левом верхнем углу, тогда на виду останется только кнопка.
В область ввода можно вписывать или вставлять текст, а также загружать файлы. Файлы могут быть любые, но распознаёт он только фото и видео (о них чуть позже). Вставив нужный текст и добавив файлы, жмёшь кнопку «Сохранить» и вся информация будет добавлена в проект отдельной записью. Вот это важно помнить, нажатие «Сохранить» = новая запись в таблице результатов. При этом запись может содержать любое количество текста и сколько-угодно файлов. Хотя я не советую пихать сразу много всего. Если контекст позволяет, лучше сделать больше записей, так будет легче потом всё это анализировать. Кроме того файлы можно добавлять в область загрузки по одному, каждый раз кликая на неё — они тоже добавятся в журнал только после нажатия кнопки «Сохранить». Все сохранённые файлы будут хранится в папке проекта.
Справа от области ввода находится консоль событий, все твои действия будут отображаться там, в том числе там будут появляться уведомления об ошибках, если они вдруг произойдут. При закрытии проекта консоль событий очищается.
Ниже области ввода, с правой стороны находятся кнопки переключения интерфейсов. Их рассмотрим по отдельности.
Журнал проекта
По мере того как ты будешь сохранять информацию, она будет записываться в таблицу журнала проекта. Журнал — это основное рабочее пространство в котором мы будем анализировать собранную информацию.

Каждой записи присваивается номер, а также записывается дата и время добавления. Если вставленный текст содержит ссылку. она дополнительно появится в столбце ссылок, а рядом с ней будет кнопка веб архива. При нажатии в новом окне откроется Wayback Machine. Ниже кнопка копирования ссылки в буфер обмена.
Рядом с сохранённым текстом, справа от него, будет также кнопка копирования в буфер и кнопка для обозначения записи как важной. Если отметить запись как важную она будет подсвечена красным цветом.
В столбце с датой также есть кнопки: «Теги» и «Связи». Для начала про теги.
Теги

В области ввода есть кнопка «Теги». При нажатии откроется меню управления тегами. Здесь будут перечислены уже созданные теги, а также можно создавать новые и изменять существующие.
При создании нового тега ему нужно придумать название и, опционально, можно добавить цвет и иконку. После чего его нужно сохранить. Все созданные теги будут появляться в области фильтров, под надписью «Журнал проекта» и работают они тоже как фильтры. Т.е. при нажатии на тег в таблице будут показаны только записи отмеченные этим тегом. Любой записи можно присвоить любое количество тегов. Хоть все сразу, если в этом есть смысл.
По такому же принципу работает кнопка «Важное» в области фильтров. При нажатии будут показаны только записи отмеченные как важные.
Кнопка «Сброс» отменяет работу фильтров и возвращает стандартный вид таблицы результатов.
При нажатии кнопки «Теги», появится список уже существующих тегов. Любой из них можно присвоить именно этой записи. Если при создании тега ему был назначен цвет, то запись в таблице будет подсвечена цветом тега.
Выбранные теги будут перечислены под кнопкой тегов, а ниже находится кнопка назначения связей.
Связи между записями

При нажатии на кнопку «Связи» откроется окно в котором будут перечислены все записи таблицы и можно отметить какие из них связаны с текущей записью. Назначенные здесь связи будут визуализированы на графе (о нём будет ниже).
Текущая запись будет считаться родительской и от неё будут идти стрелки к тем записям которые ты отметил чек-боксами в этом окне. Любая запись может ссылаться на любое количество других записей, ровно как и на неё могут ссылаться любые другие записи.
Фильтры по тегам здесь работают также как и в журнале, чтобы можно было быстрее находить нужные записи.
После присвоения связей, под кнопкой появятся иконки с цифрами тех записей которые были отмечены. Эти иконки кликабельны и ведут к соответствующей записи.
Заметки, задачи, профили
Каждой записи в таблице можно добавить заметку, задачи и профили людей и компаний.

- Заметки — при нажатии кнопки откроется окно добавления заметки. Тут, мне кажется, вряд ли нужно что-то дополнительно пояснять;
- Задачи — здесь можно записывать что планируется сделать. Добавленные здесь задачи присваиваются именно этой записи. Если у записи есть не выполненные задачи — на кнопке будет цифра с количеством таких задач. Если среди них есть задачи отмеченные как важные — цифра будет красной.
- Профиль — это карточка с учётными данными. Отдельно есть профиль человека и профиль компании. В карточке профиля предусмотрены стандартные поля под наиболее типичные виды данных. Если их не хватает можно добавлять свои, предварительно вписав название нового поля. В каждом профиле есть кнопка копирования в буфер — копироваться будут только заполненные поля. Если к записи добавлен профиль, то на кнопке в таблице появится иконка человека или компании (или две иконки — если заполнены оба прфиля).
Изображения
Если сохранить изображение — его миниатюра появится в вложениях под записью. Под миниатюрой будут кнопки:
- Открыть — при нажатии откроется папка проекта для хранения изображений;
- Meta — при открытии будут показаны метаданные этого изображения.

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

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

Все профили, как людей так и компаний, которые ты добавил в записи, дополнительно дублируются в сводку профилей. Здесь же можно создавать проектные профили — это те которые не привязаны к какой-либо записи.
Каждый профиль в сводке подписан. Если это профиль записи то сверху указано к какой записи он относится, при нажатии на название нас перекинет к этой записи. Такие профили могут быть созданы только из журнала записей. Если профиль создан в этом окне, то он не привязан к конкретной записи и будет подписан как «Проектный профиль».
Соответственно окно сводки профилей необходимо что бы просматривать все собранные данные на людей и компании которые были обнаружены в ходе работы. Здесь же эту информацию можно изменять. Всё работает точно также как и при заполнении профиля в записях. Т.е. можно добавлять или изменять нужные строки, удалять записи или профили, копировать информацию в буфер. Здесь же можно отметить профиль как важный — он будет подсвечен красным цветом. Это распространяется только на экран сводки профилей и никак не влияет на записи таблицы или работу фильтров.
Граф связей
Следующий пункт в меню интерфейсов это граф связей.

Работает достаточно просто. Как уже упоминалось, здесь визуализируются связи добавленные в таблице записей. Связи могут быть как от одной записи к другой, так и взаимными.
На любую запись на графе можно нажать и в панеле справа появится информация об этой записи. По сути здесь всё тоже самое что и в основной таблице. Точно также есть тест, заметки, вложения (при нажатии на фото или видео тоже будет открываться просмотр), и те же кнопки управления. Т.е. чтобы изменить текст, задачи или теги не нужно возвращаться на основной экран. Здесь же можно менять сами связи — принцип такой же. Единственное чего тут нет — это профилей, потому как это по сути часть отдельной записи и у них есть собственный интерфейс.
Дополнительно каждому узлу на графе можно присвоить название. Оно будет отображаться только здесь. У графа есть ещё некоторые особенности:
- если записи присвоен тег с цветом, такая запись на графе будет иметь цвет этого тега;
- если запись отмечена как важная, то на графе она будет красного цвета;
- при выделении узла на графе, все связи к нему и от него будут подсвечены;
- скрепка в правом верхнем углу означает что к этой записи прикреплён файл;
- цифра в левом верхнем углу каждого узла соответствует номеру записи в таблице.
Естественно граф можно двигать, перетаскивая его, и зумить — можно ползунком, можно колесом мыши. Кроме этого, в правом верхнем углу есть дополнительные кнопки:
- Сброс — положение узлов, самого графа и зум вернутся к первоначальному значению, которое было когда ты открыл граф;
- Скриншот — при нажатии скриншот графа будет сохранён в таблицу записей в виде картинки;
- Развернуть — откроется окно расширенного просмотра, это полезно если на графе много узлов.
Список задач в OSINT Stividor
Все задачи добавленные записям можно посмотреть нажав кнопку «Список задач». Счётчики в верху показывают общее количество задач, и сколько из них выполнено, сколько осталось и сколько важных невыполненных.
Ниже интерфейс разделён на две части. Слева — задачи созданные в таблице результатов и относящиеся к конкретной записи. Здесь их можно менять, отмечать как выполненные или как важные. Справа можно добавлять задачи общие для всего проекта — они не будут присвоены какой-либо записи и будут видны только здесь. В общем списки задач работает по принципу чек-листа, вряд ли с этим у кого-то будут сложности.

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

Ниже поля для ввода запроса расположены счётчики, в которых будет показано сколько раз и где обнаружен запрос. Справа от поля ввода расположены фильтры для указания где именно искать. По умолчанию включен режим «Везде», потому поиск будет происходить в тексте записей, в ссылках, заметках, профилях и задачах. Если нужно, можно выбрать отдельно где именно искать.
Сам поиск работает по всему проекту, но в результатах будут показаны только записи таблицы. Если запрос обнаружен в проектных профилях или проектных задачах — будет показано уведомление.
Итого
Вот такое вот приложение у меня получилось. Это хоть и первая версия, но, как видишь, умеет уже не мало. И, как я уже писал в будущем будет добавлен новый функционал. А раз ты дочитал до этого места, значит тема тебе интересна, а значит интересно узнать, что ещё я планирую добавить. В планах есть:
- отдельный режим для геолокации т.е. фиксация собранной информации при геолокации места;
- аналитические инструменты, такие как автоматическая выборка данных из добавленных текстов (телефоны, почты и т.д.). В том числе и по паттернам добавленным пользователем;
- расширение функционала видео-плеера;
- добавление каталога инструментов, чтобы пользователь мог создать и хранить свою личную подборку инструментов;
- режим подготовки отчёта, чтобы можно было прямо в приложении готовить если не весь отчёт, то как минимум его значительные части.
Это основное что уже задумано. Если и другие идеи, но они пока слишком сырые чтобы их озвучивать. Ну и если есть предложения по функционалу — что ещё можно добавить или может как-то улучшить то что уже есть, пишите на почту: support@hacker-basement.com
Я буду признателен за фидбек, потому как взгляд со стороны всегда полезен в таких вещах. Ну и если есть желание и возможность поддержать разработку финансово, буду особо признателен. Сделать это можно любым удобным способом: https://hacker-basement.com/about/
Твой Pulse.
