11 инструментов исследования данных с открытым исходным кодом, которые вам следует знать в 2023 году

11 лучших программ с открытым исходным кодом в 2020 году

Поддержка сообщества

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

Для продвижения проекта можно использовать:

  • Блоги;
  • Краткие обзоры, видеообзоры и уроки;
  • Рассылку;
  • Социальные сети;
  • Сотрудничество с аналогичными или смежными проектами и их совместное продвижение.

По мере роста сообщества вы можете предоставить участникам, майнтейнерам и пользователям больше способов для взаимодействия, например:

  • Вики-сайты с документацией, поддерживаемые сообществом;
  • Форумы для обсуждения функций и возникших проблем;
  • Список для электронной рассылки.

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

Помимо всего вышеперечисленного важно всегда оставаться вежливым, проявлять уважение к тем пользователям, которые заинтересовались вашим проектом и участием в нём. Github

Github

Pagination

Можно создавать запросы для постраничного извлечения сущности:

Page<User> findByName(String name, Pageable pageable);

Ниже пример использования: в запросе передается PageRequest.of(0,2) с номером страницы и количеством элементов на странице:

@Test
void t10() {
    Page<User> userPage = userDao.findByName("John",PageRequest.of(0,2));
    Assertions.assertEquals(2, userPage.getTotalElements());
}

Страницы нумеруются с 0.

Генерируемый SQL:

Hibernate: select user0_.id as id1_1_, user0_.name as name2_1_ from user user0_ where user0_.name=? limit ?
Hibernate: select count(user0_.id) as col_0_0_ from user user0_ where user0_.name=?

Стоит отметить, что метод постраничного получения всех подряд сущностей уже есть в PagingAndSortingRepository:

public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {
...
      Page<T> findAll(Pageable pageable);
...
}

License

GitHub — soxoj/maigret: Collect a dossier on a person by username from thousands of sites
Collect a dossier on a person by username from thousands of sites — GitHub — soxoj/maigret: Collect a dossier on a person by username from thousands of sites

GitHubsoxoj

MIT
Sherlock
Sherlock has 4 repositories available. Follow their code on GitHub.

GitHub

MIT
sdushantha — Overview
Creator of Sherlock from the @sherlock-project. sdushantha has 26 repositories available. Follow their code on GitHub.

GitHub

Original Creator of Sherlock Project
Maigret OSINT bot
Check accounts by username on 1500 sites. Based on maigret CLI tool https://t.me/osint_mindset/47

Telegram

Premade telegram bot

By soxoj

Составление документации

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

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

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

  • README.md: краткое описание проекта и его целей.
  • CONTRIBUTING.md: инструкции для разработчиков, которые хотят принять участие в создании программы.
  • Лицензия программы (прочитать о создании лицензии программ с открытым исходным кодом можно здесь).

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

  • Общее руководство для пользователей.
  • Мануалы, которые описывают разные варианты использования программы.
  • Часто задаваемые вопросы.
  • Мануалы по устранению неполадок.
  • Примечания к релизам (описание выявленных багов и прочая полезная информация).
  • Описание функций, которые вы собираетесь добавить в следующих релизах.
  • Видеоуроки.

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

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

Составляя документацию, переходите от общего к частному: сначала объясните общее назначение и функции программы, а затем подробно опишите каждую функцию.

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

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

Пишите документацию так, будто вы пишете её для разработчика, которого нужно быстро ввести в курс дела.

Поиск данных об уязвимостях и индикаторов компрометации

7.1 Онлайн-сервисы

  • MITRE CVE — поисковик, база данных и общепринятый классификатор уязвимостей.

  • NIST NVD — поиск по официальной американской правительственной базе данных об уязвимостях.

  • GitHub Advisory Database — база данных уязвимостей, включающая CVE и рекомендации по безопасности.

  • CVEDetails, osv.dev, VulDB, maltiverse — еще ряд источников данных об уязвимостях и индикаторах компрометации.

  • opencve.io — поисковик CVE со встроенными оповещениями о новых угрозах.

  • security.snyk.io и Mend Vulnerability Database, Vulncode-DB — базы данных уязвимостей с открытым исходным кодом.

  • Cloudvulndb — проект, который аккумулирует уязвимости и проблемы безопасности поставщиков облачных услуг.

  • Vulnerability Database — система для поиска информации об актуальных угрозах.

  • Rapid7 — DB — база данных, которая содержит детали более чем 180 тыс. уязвимостей и 4 тыс. эксплойтов. Все эксплойты включены в Metasploit.

  • Exploit DB — CVE-совместимый архив общедоступных эксплойтов и уязвимого программного обеспечения.

  • sploitus — поисковик по эксплойтам и хакерским инструментам.

Сортировка: orderBy и Sort

Найти пользователей, что имя содержит заданную строку и упорядочить результат по имени:

List<User> findByNameContainingOrderByNameAsc(String str);

Или передать в параметре объект Sort:

List<User> findByNameContaining(String str, Sort sort);

Пример использования второго метода:

@Test
void t12() {
    Sort sort = Sort.by(Sort.Direction.ASC, "name");
    List<User> users= userDao.findByNameContaining("e", sort);
    Assertions.assertEquals(2,users.size());
    Assertions.assertEquals("Artem",users.get(0).getName());
}

Оба метода генерируют одинаковый SQL:

select user0_.id as id1_1_, user0_.name as name2_1_ 
from user user0_ 
where user0_.name like ? escape ? 
order by user0_.name asc

Что, если я хочу изменить лицензию своего проекта?

Большинству проектов не потребуется менять лицензии. Но иногда обстоятельства меняются.

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

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

Существующая лицензия вашего проекта. Если существующая лицензия вашего проекта совместима с лицензией, на которую вы хотите перейти, вы можете просто начать использовать новую лицензию. Это потому, что если лицензия A совместима с лицензией B, вы будете соблюдать условия A, соблюдая условия B (но не обязательно наоборот). Поэтому, если вы в настоящее время используете разрешительную лицензию (например, MIT), вы можете перейти на лицензию с дополнительными условиями, при условии, что вы сохраняете копию лицензии MIT и любые связанные уведомления об авторских правах (т.е. продолжаете соблюдать минимальные условия лицензии MIT). Но если ваша текущая лицензия не разрешающая (например, авторское лево или у вас нет лицензии) и вы не являетесь единственным владельцем авторских прав, вы не можете просто изменить лицензию вашего проекта на MIT. По сути, с разрешающей лицензией правообладатели проекта заранее дали разрешение на изменение лицензий.

Существующие правообладатели вашего проекта. Если вы являетесь единственным участником своего проекта, то вы или ваша компания являетесь единственным правообладателем проекта. Вы можете добавить или изменить любую лицензию, которую захотите вы или ваша компания. В противном случае могут быть другие правообладатели, с которыми вам потребуется согласие для изменения лицензий. Кто они? Люди, у которых есть коммиты в вашем проекте, — хорошее место для начала. Но в некоторых случаях авторские права принадлежат работодателям этих людей. В некоторых случаях люди будут вносить только минимальный вклад, но не существует жесткого правила, согласно которому вклады с использованием определенного количества строк кода не подлежат авторскому праву. Что делать? Это зависит. Для относительно небольшого и молодого проекта может оказаться целесообразным убедить всех существующих участников согласиться на изменение лицензии в ишью или пул-реквесте. Для крупных и долгоживущих проектов вам, возможно, придется искать множество участников и даже их наследников. Mozilla потребовались годы (2001-2006), чтобы перелицензировать Firefox, Thunderbird и сопутствующее программное обеспечение.

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

Поиск по никнейму

WhatsMyName — это не прос­то сер­вис, а целый ком­байн, который ищет по 280 сер­висам!

Здесь мож­но сор­тировать сер­висы по катего­риям, а еще есть воз­можность экспор­тировать резуль­тат поис­ка (URL най­ден­ных про­филей) в нес­коль­ких фор­матах.

Сер­вис Usersearch.org пре­дос­тавля­ет поиск не толь­ко по популяр­ным соц­сетям, но и по темати­чес­ким форумам и сай­там зна­комств.

SuIP.biz — пос­тоян­но обновля­емая и обширная база сер­висов с удоб­ной выдачей. Вре­мя про­вер­ки — где‑то одна‑две минуты. Минус — деления на катего­рии нет.

По завер­шении поис­ка мож­но ска­чать отчет в фор­мате PDF.

Instant Username Search — сер­вис с быс­трой про­вер­кой по популяр­ным и не очень сер­висам. У него в базе встре­чают­ся инте­рес­ные темати­чес­кие сай­ты, вро­де MyAnimeList и Last.fm.

Checkuser ищет по неболь­шому спис­ку сай­тов, а кро­ме того, поз­воля­ет про­верять занятость домен­ного име­ни.

На сам поиск ухо­дит при­мер­но минута. Еди­ный спи­сок ссы­лок из резуль­татов получить нель­зя.

Namechekup исполь­зует обширный спи­сок сер­висов для про­вер­ки, которая, кста­ти, не занима­ет мно­го вре­мени.

По­лучить все ссыл­ки разом здесь тоже нель­зя.

Спи­сок веб‑сер­висов у Namecheckr неболь­шой, но и про­вер­ка очень быс­трая. Сами сер­висы по боль­шей час­ти популяр­ные и не очень соц­сети. Про­веря­ет и некото­рые домены.

От­дель­но сущес­тву­ет сер­вис‑двой­ник под незамыс­ловатым наз­вани­ем Namech_k. Он про­верят упо­мина­ние кон­крет­ного юзер­ней­ма по десят­кам сай­тов. К тому же у сер­виса есть свой API, что­бы мож­но было вызывать из скрип­тов.

В репози­тории нашего сооте­чес­твен­ника (и авто­ра статьи в «Хакере») Soxoj есть боль­шой спи­сок про­верок, которые могут быть полез­ны для интернет‑розыс­ка, и сер­висов поис­ка по ник­ней­му — спа­сибо ему! Здесь соб­раны такие ути­литы, как Sherlock, Maigret, Snoop, sherlock-go и Investigo, каж­дая из которых зареко­мен­довала себя как неп­лохой инс­тру­мент для поис­ка и сбо­ра откры­тых дан­ных.

От­дель­но хотелось бы выделить и упо­мянуть ути­литу Maigret.

Она поз­воля­ет собирать досье на челове­ка по име­ни поль­зовате­ля, про­веряя наличие учет­ных записей на огромном количес­тве сай­тов (более 2300) и собирая всю информа­цию с дос­тупных стра­ниц. Не исполь­зует никаких клю­чей API. Это, кста­ти, форк дру­гой OSINT-ути­литы — Sherlock. Обра­ти вни­мание, что по умол­чанию поиск запус­кает­ся не по всем сай­там, а толь­ко по 500 самых популяр­ных.

info

Чи­тай так­же: «Про­бей меня пол­ностью! Кто, как и за сколь­ко про­бива­ет пер­сональ­ные дан­ные в Рос­сии», «Бо­ты ата­куют. Тес­тиру­ем телег­рам‑боты для поис­ка пер­сональ­ных дан­ных»

Предыстория

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

Как описывают специалисты, суть нового сервиса заключается в том, что программа направляет запрос, содержащий юзернейм, в Telegram, и далее приложение выдаёт следуюшие данные пользователя — ID и номер телефона, фамилию и имя.

Для уверенности в работоспособности системы журналисты «Известий» попросили показать работу «Криптоскан» в действии на одном из своих редакторов. Утверждается, что номер телефона совпал, а имя и фамилия — нет, так как в мессенджере пользователь может придумать себе любой псевдоним, не указывая достоверные данные.

Полезные советы

Совет №1

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

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

Совет №2

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

Совет №3

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

Snoop Project один из самых перспективных OSINT-инструментов по поиску никнеймов.

Is your life slideshow? Ask Snoop.Snoop project is developed without taking into account the opinions of the NSA and their friends,that is, it is available to the average user.

• English readme

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

Сравнение индексаций БД-никнеймов подобных инструментов:

Платформа Поддержка
GNU/Linux
Windows 7/10 (32/64)
Android (Termux)
macOS
IOS
WSL

Модель

Класс User:

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private long id;
    private String name;
    @OneToMany(mappedBy = "user")
    private Set<Account> accounts;
    
    // getters/setters/constructors
}

У пользователя может быть несколько счетов: они хранятся в коллекции accounts.

Класс Account:

@Entity
public class Account {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private long id;
    private String name;
    private long amount;

    @ManyToOne
    private User user;

   // getters/setters/constructors
}

Заполним таблицы данными.

Данные

Данные находятся в файле data.sql. Скрипт data.sql (и schema.sql) запускается благодаря настройке в файле application.properties:

spring.datasource.initialization-mode=always

Итак, с помощью файла data.sql добавим 5 пользователей (два с именем John). Они получат последовательные автоматически сгенерированные id с 1 по 5. 

insert into user (name) values ('Ivan');
insert into user (name) values ('John');
insert into user (name) values ('Petr');
insert into user (name) values ('John');
insert into user (name) values ('Artem');

Только для пользователей с id=1 и id=2 добавим счета:

insert into account (name, amount, user_id) values ('ac1Iv', 10, 1);
insert into account (name, amount, user_id) values ('ac2Iv', 11, 1);
insert into account (name, amount, user_id) values ('ac3Iv', 120, 1);
insert into account (name, amount,  user_id) values ('ac4Iv', 0, 1);

insert into account (name, amount,  user_id) values ('ac1J', 50, 2);
insert into account (name, amount,  user_id) values ('ac2J', 20, 2);
insert into account (name, amount,  user_id) values ('ac3J', 100, 2);

Набор цифровых профилей

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

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

На ПК изоляцию профилей удобно выполнять через разные рабочие столы или отдельные виртуальные машины.

Telegram и другие мессенджеры тоже поддерживают быстрое переключение между разными аккаунтами.

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

Загрузка исходного кода

Загрузка репозитория с GitHub занимает всего два клика.

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

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

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

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

О безопасности Open Source

Организация Linux Foundation совместно с GitHub, Google, IBM, JPMorgan Chase, Microsoft, NCC Group, OWASP Foundation и Red Hat учредила новый совместный проект OpenSSF (Open Source Security Foundation), целью которого является повышение безопасности ПО с открытым кодом. OpenSSF продолжает развитие инициатив Core Infrastructure Initiative и Open Source Security Coalition и включает в свои функции:

  • раскрытие информации об уязвимостях и распространение исправлений;
  • разработку инструментов для обеспечения безопасности;
  • разработку и публикацию лучших практик по ИБ при организации разработки;
  • выявление угроз в открытом ПО, аудит и усиление ИБ критически важных открытых проектов;
  • организацию идентификации и подтверждения личности разработчиков для исключения внесения нелегитимных изменений в код.

Это — новый проект, и все процессы пока находятся в инкубационном статусе. К проекту уже присоединились GitLab, HackerOne, Intel, Uber, VMware, ElevenPaths, Okta, Purdue, SAFECode, StackHawk и Trail of Bits.

Linux Foundation’s Core Infrastructure Initiative (CII) и Гарвардская лаборатория инноваций (Laboratory for Innovation Science at Harvard, LISH) в начале 2020 года выпустили вторую перепись важного ПО с открытым кодом (Census II of Open Source Software), в которой исследуются наиболее важные и часто используемые свободно распространяемые пакеты по вопросам ИБ. В том числе пропагандируется подход на основе гигиены доставки компонентов в свой код и их использования (Supply Chain Hygiene), которая подразумевает следующие принципы:

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

Также существует ряд проектов, занимающихся регулярным исследованием уровня защищённости открытого ПО. Например, проект Coverity в сотрудничестве со Стэнфордским университетом, а ныне анализатор кода компании Synopsys — яркий пример предприятия по систематическим исследованиям Open Source и один из лидеров в данном сегменте. Компания проводит автоматическое обнаружение дефектов и критических типов ошибок в открытом ПО, уровень качества и безопасности в их идеологии измеряется ступенями. Ступени не имеют окончательного значения и могут изменяться по мере того, как Coverity выпускает новые инструменты. Ранги основаны на прогрессе исправления проблем, обнаруженных по результатам анализа, и степени сотрудничества разработчика ПО с Coverity. Ранги начинаются со ступени 0 и в настоящее время идут до ступени 2:

  • Ступень 0. Проект был проанализирован инфраструктурой Coverity Scan, но ни один представитель сообщества ПО с открытым исходным кодом не сообщил о результатах.
  • Ступень 1. Происходит сотрудничество между Coverity и командой разработчиков. ПО анализируется с помощью подмножества функций сканирования, чтобы не перегружать команду разработчиков.
  • Ступень 2. Было проанализировано 11 проектов, получивших статус «Rung 2», в результате чего в первый год сканирования было достигнуто нулевое значение количества дефектов. Эти проекты — AMANDA, ntp, OpenPAM, OpenVPN, Overdose, Perl, PHP, Postfix, Python, Samba и tcl.

Ресурс Coverity открыт, и с его помощью можно проверить необходимый пакет Open Source на наличие опасных уязвимостей и уровень поддержки проекта разработчиками. Пример анализа для одного из пакетов bind приведён на рис. 7.

Рисунок 7. Анализ ПО bind через проект Synopsys Coverity

Есть несколько аналогичных проектов, занимающихся регулярным тестированием приложений и библиотек Open Source — например, PVS-Studio. Для веб-приложений существует сообщество Open Web Application Security Project (OWASP) — открытый проект по обеспечению их безопасности.

Учетная запись для резервного копирования

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

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

=# CREATE USER bkpuser WITH PASSWORD ‘bkppasswd’;

* мы создадим учетную запись bkpuser с паролем bkppasswd.

Предоставляем права на подключения к базе

=# GRANT CONNECT ON DATABASE database TO bkpuser;

* в данном примере к базе database.

Подключаемся к базе (в нашем примере database):

=# \c database

Даем права на все последовательности в схеме:

=# GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO bkpuser;

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

Поиск по электронной почте и логинам

3.1 Онлайн-сервисы

  • Snusbase — индексирует информацию из утечек и дает доступ к поиску по скомпрометированным адресам электронной почты, логинам, именам, IP-адресам, телефонам и хешам паролей.

  • have i been pwned? — поисковик по утечкам данных. Позволяет проверить, в каких инцидентах участвовал конкретный адрес электронной почты.

  • whatsmyname — поиск учетных записей в различных сервисах по логину. В основе сервиса лежит общедоступный JSON.

  • User Searcher — бесплатный инструмент, который поможет найти пользователя по логину на более чем 2 тыс. веб-сайтов.

  • CheckUserNames, , Namecheckr, peekyou, usersearch — онлайн-сервисы для поиска аккаунтов пользователя по логину.

Примеры использования Get-ADUser

Давайте покажем ещё несколько полезных примеров команд для запросов пользователей Active Directory с помощью различных фильтров. Вы можете объединить их, чтобы получить необходимый список пользовательских объектов AD:

Отобразить пользователей AD, имя которых начинается с Joe:

Get-ADUser -Filter {name -like "Joe*"}

Вы можете использовать PowerShell для расчёта общего количества учётных записей пользователей в Active Directory:

Get-ADUser -Filter {SamAccountName -like "*"} | Measure-Object

Вывод списка пользователей и их свойств, размещённых в определённом организационном подразделении (контейнере) в данном случае это OU=Finance,OU=UserAccounts,DC=FABRIKAM,DC=COM:

Get-ADUser -Filter * -SearchBase "OU=Finance,OU=UserAccounts,DC=FABRIKAM,DC=COM"

Найти отключённые учётные записи пользователей Active Directory:

Get-ADUser -Filter {Enabled -eq "False"} | Select-Object SamAccountName,Name,Surname,GivenName | Format-Table

Вы можете проверить дату создания учётной записи пользователя Active Directory с помощью команды:

Get-ADUser -Filter * -Properties Name,WhenCreated | Select name,whenCreated

Вы можете получить список недавно добавленных пользователей Active Directory, созданных за последние 24 часа:

$lastday = ((Get-Date).AddDays(-1))
Get-ADUser -filter {(whencreated -ge $lastday)}

Вывести список учётных записей с просроченным паролем (вы можете настроить параметры истечения срока действия пароля в политике паролей домена):

Get-ADUser -Filter {Enabled -eq $True} -Properties name,passwordExpired | Where-Object {$_.PasswordExpired}| Select-Object name,passwordexpired

Командлеты Get-ADUser и Add-ADGroupMember можно использовать для создания динамических групп пользователей AD (в зависимости от города, должности, отдела и прочего).

Задача: для списка учётных записей, которые хранятся в текстовом файле (по одной учётной записи в строке), вам необходимо получить название компании пользователя из AD и сохранить его в файл CSV (вы можете легко импортировать этот файл в Excel).

Import-Csv c:\ps\users_list.csv | ForEach {
	Get-ADUser -Identity $_.user -Properties Name,Company |
	Select-Object Name,Company |
	Export-CSV c:\ps\users_ad_list.csv -Append -Encoding UTF8
}

Пользователи, которые не меняли свои пароли в течение последних 90 дней:

$90_Days = (Get-Date).adddays(-90)
Get-ADUser -Filter {(passwordlastset -le $90_days)}

Чтобы получить фотографию пользователя из Active Directory и сохранить её в файле jpg, выполните следующие команды:

$usr = Get-ADUser sjoe -Properties thumbnailPhoto
$usr.thumbnailPhoto | Set-Content sjoe.jpg -Encoding byte

Чтобы получить список групп AD, членом которых является учётная запись пользователя:

Get-AdUser MiAl -Properties memberof | Select-Object memberof -ExpandProperty memberof

Перечислить пользователей из OU, которые являются членами определённой группы безопасности домена:

Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=hackware,DC=ru' -Filter * -Properties memberof | Where-Object {($_.memberof -like "*CEO*")}

Перечислить компьютеры домена, на которых пользователю разрешён вход.

Get-ADUser MiAl -Properties LogonWorkstations | Format-List Name,LogonWorkstations

Чтобы искать компьютеры и фильтровать компьютеры по их свойствам в Active Directory, вы можете использовать другой командлет – Get-ADComputer.

Поддержка новых разработчиков

Чем больше вы поощряете участие и внесение вклада в ваш проект, тем больше разработчиков захочет к нему присоединиться. Чтобы новички понимали, с чего начать, добавьте в документацию файл CONTRIBUTING.md и сошлитесь на этот файл в README.md.

Файл CONTRIBUTING.md должен содержать всю необходимую информацию, которую должен знать разработчик, желающий внести свой вклад в проект. Это может быть пошаговое руководство, контрольный список для разработчиков, в общем – любой удобный формат, позволяющий объяснить разработчику, как именно нужно писать код и создавать pull-запросы.

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

Также рекомендуется поддерживать список авторов и разработчиков проекта. Вы можете предложить разработчикам вносить свои имена в список самостоятельно (даже если пользователь просто поправил опечатки в документации – это достойно похвалы и внесения его имени в список).

Телеграм боты для пробива

  1. Глаз Бога — этот бот уже стал легендой. Если в этом боте нет инфы, то 70% что в других ее тоже нет. Сервис платный, но покажет часть результата.
  2. Info Baza –– украинских аналог Глаза Бога. Базы содержат только жителей Украины!
  3. Поиск по ID –– поисковик информации данных о людях по ID Telegram и Вконтакте
  4. Quick OSINT —  может найти комментарии пользователя, проанализировать его друзей и фотографии
  5. Insight –– Бот выдает интересы пользователей по телеграм аккаунту. Вывод делает на основе базы каналов и чатов на которые подписан пользователь. Если честно без понятия откуда у них это инфа.
  6. Username_to_id_bot — показывает ID акканта/канала/чата в телеграм.
  7. Поиск по номеру – поисковая система поиска номеров телефона и других данных по открытым источникам.
  8. BTC Searcher — производит поиск данных о владельце биткоин кошелька.
  9. UniversalSearchBot — выдает ссылки на гугл аккаунты, вебархивы, карты сбербанка, номер телефона, аккаунты яндекса.
  10. PasswordSearchBot — показывает пароли по email адресу.
  11. Iptools_robot — поиск информации об ip адресе, владельце домена и многое другое. Больше 30 вариантов поиска.
  12. Neuroperson_bot — с помощью нейросетей бот генерирует фото несуществующего человека и его личные данные, такие как: ФИО, банковские карты, номер телефона, домашний адрес с индексом и т.д.
  13. MotherSearchBot –– поисковик по телеграму.
  14. Egrul_bot — присылает информацию о российских компаниях и индивидуальных предпринимателях.

Как всё это совместить

Вот несколько простых правил, которые позволят вам работать, не опасаясь неприятностей с законом:

Пройдите хотя бы минимальный ликбез по авторскому праву

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

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

Поиск по номеру телефона

SpravkaRU.Net — весь­ма объ­емный телефон­ный спра­воч­ник, который может искать так­же по ФИО.

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

Microsoft поз­воля­ет про­верять при­вяз­ку номера к акка­унту на сай­те account.live.com. Этим мож­но поль­зовать­ся!

По­мимо это­го, ути­лита может генери­ровать спи­сок номеров и переби­рать сер­висы на наличие номера телефо­на (где он ука­зан в про­филе).

Бот last4mailbot най­дет пос­ледние четыре циф­ры номера телефо­на кли­ента Сбер­банка.

Простейший пример — поиск пользователей по имени — find

Чтобы декларировать методы, необходимо расширить CrudRepository (или JpaRepository).

Сначала найдем пользователей по имени:

public interface UserRepository extends JpaRepository<User, Long> {

    List<User> findByName(String str);
    // другие методы
}

В консоли отобразится запрос, который сгенерировал Spring Data:

select user0_.id as id1_1_, user0_.name as name2_1_ 
   from user user0_ 
where user0_.name=?

Сгенерированный SQL отображается благодаря настройке:

spring.jpa.show-sql=true

Помимо find…, есть также ключевые слова get…query…, read… — все они имеют один и тот же смысл.

Можно также писать findAll…, findUsers.., findUser..

То есть наш метод можно записать любым из возможных вариантов:

List<User> getByName(String name);
List<User> queryByName(String name);
List<User> readByName(String name);

List<User> findAllByName(String name);
List<User> findUserByName(String name);
List<User> findUsersByName(String name);

Вышеперечисленные методы генерируют тот же самый запрос.

Понравилась статья? Поделиться с друзьями:
Быть в курсе нового
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: