Как подобрать 6 значный пароль

Online сервисы по перебору паролей

Существует много причин использования таких сервисов, чаще всего или элементарная забывчивость или хакинг.

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

Мгновенная расшифровка

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

НЕ мгновенная расшифровка

Платные сервисы

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

По моему личному мнению это самый лучший и заслуживает особого внимания.
Помимо того, что он ищет по базе пароли (мгновенная расшифровка), не найденные он добавляет в специальную очередь паролей. Бруттер, установленный на сервере двигается по той очереди с верху вниз.
(Всего 12 таблиц. CharSet=a-z,0-9 длины паролей:1-8 символов. Вероятность попадания: 97.80%. Максимальное время поиска пароля для одного хеша: 12 минут)
Если хотите, чтобы пароль перебирался как можно скорее, то можно указать цену за него. Очередь сортируется по цене. Баланс можно пополнить, написав администрации и переведя деньги, например по средствам WebMoney.

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

Источник

Искусство подбирать чужие пароли

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Небольшое, но важное предупреждение: если предлагаемым в статье подходом пользоваться не в рамках проектов по тестированию защищенности, то ваши действия легко могут подпасть под статью 272 УК РФ (Неправомерный доступ к компьютерной информации).

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

Какие же факторы влияют на наш выбор паролей?

Можно назвать, как минимум, следующие три:

Что пользователи легко могут запомнить?

Рассмотрим те вещи, которые нам легче всего запомнить:

1) То, что перед глазами.

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

Для человека важны:

3) То, что помнят пальцы:

4) Что за система/сайт:

В 2014-м году произошла большая утечка паролей Gmail, Yandex и Mail.ru. Списки паролей были проанализированы varagian в статье «Анализ утёкших паролей Gmail, Yandex и Mail.Ru» и можно увидеть, что пользователи выбирают пароли именно по рассмотренной схеме.

Как ограничения парольной защиты влияют на выбор паролей пользователями?

Чтобы обезопасить пользователей во многих системах разработчиками предусмотрен механизм парольной политики, который, к сожалению (для этичных хакеров – к счастью), не всегда используется. Рассмотрим ограничения и то, как они выполняются/обходятся креативными пользователями.
Типовые ограничения парольной политики:

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

Если система заставляет добавить цифры, то здесь пользователи чуть более изобретательные:

Ничто так не раздражает как запрет на использование старого пароля, и пользователи научились обходить это ограничение, внося минимальные изменения, например, увеличивая цифру в конце своего пароля на 1: было «Alexander2018», стало «Alexander2019».

Понимая эти маленькие хитрости пользователей, этичному хакеру довольно просто сузить список слов-кандидатов на пароль.

Количество пользователей пароля

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

Стратегия подбора пароля

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

Шаг 1. Определение имен учетных записей пользователей

Для успешной авторизации одного пароля, как правило, недостаточно, нужно еще знать и имя учетной записи. Разберемся, как ее получить.

Вариант 1. Получение списка учетных записей, используя уязвимость в системе.
Например, контроллер домена Windows может быть сконфигурирован таким образом, что позволяет анонимному пользователю получать список учетных записей пользователей.
Любой может проверить свой контроллер домена на эту возможность, например, воспользовавшись утилитой командной строки rpcclient из состава «Сканер-ВС»:

Вариант 2. Формирование списка на основе «разведданных» и анализа.

Имена пользователей даже в небольших организациях задаются администраторами на основе некоторого стандарта. Самые распространенные варианты: первая буква имени + фамилии: adorofeev, тоже самое, но через точку a.dorofeev, полное имя + фамилия: alexander.dorofeev. Также часто имена внутренних учетных записей совпадают с учетной записью электронной почты, соответственно правило формирования имени пользователя можно определить просто «погуглив» адреса сотрудников, засветившихся в интернете, а полный перечень сформировать на основе списка сотрудников, который можно получить из внутреннего телефонного справочника, а также социальных сетей. В крайнем случае можно формировать комбинации наиболее часто встречающихся имен и фамилий по наиболее распространенным правилам формирования имен учетных записей.

Вариант 3. Наиболее распространенные учетные записи и записи по умолчанию.

Во многих системах есть учетные записи по умолчанию. Как минимум, это admin или administrator. В некоторых системах их довольно много, так в СУБД Oracle можно встретить SYSTEM, SYS, ANONYMOUS, CTXSYS, DBSNMP, LBACSYS, MDSYS, OLAPSYS, ORDPLUGINS, ORDSYS, OUTLN, SCOTT, WKSYS, WMSYS, XDB. Соответственно, имеет смысл заглянуть в руководства администраторов систем, которые вы хотите тестировать.

Зачастую, в системах появляются учетные записи, которые очень легко вычислить, например, если в компании есть учебный класс, то вероятность наличия учетных записей teacher и student довольно высока. А много ли систем в которых, кто-нибудь да не создал учетную запись test?

Шаг 2. Первичный подбор паролей

Понимая какие учетные записи в каких системах в тестируемой ИТ-инфраструктуре мы планируем скомпрометировать, можем определить последовательность систем для атаки:

Класс системУчетные записиПароли
1Контроллер доменаУчетные записи сотрудников, административные, типовые.Самые распространенные.
2Бизнес-приложенияУчетные записи сотрудников, административные, типовые.Самые распространенные.
3СУБДУчетные записи сотрудников, административные, типовые, по умолчанию.Самые распространенные, по умолчанию
4Специальные системы и сервисы: backup, ftp и т.п.Административные, по умолчанию.Самые распространенные, по умолчанию.
5Активное сетевое оборудованиеАдминистративные, по умолчанию.Самые распространенные, по умолчанию.

В случае если в системах включена блокировка учетных записей после нескольких неудачных попыток (как правило, выбирают число 5), а время на тестирование ограничено, и мы не можем выставлять таймаут между попытками для сброса счетчика, то имеет смысл «пробежаться» по всем пользователям, проверяя следующие вероятные пароли:

Шаг 3. Расширение зоны влияния

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

Инструменты и словари для онлайн-подбора паролей

Классическим инструментом для онлайн-подбора паролей является утилита командной строки thc-hydra, а для этичных хакеров и администраторов, любящих комфорт, данный функционал с интуитивно понятным интерфейсом имеется в нашем комплексе «Сканер-ВС»:

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Также ключевым фактором успешного подбора пароля является доступность хорошо составленных словарей, а вот с этим бывают проблемы. Словари, поставляемые вместе с современными отечественными средствами анализа защищенности не всегда содержат действительно полезные наборы слов. Например, включают стандартный словарь, распространяемый с одной бесплатной утилитой. Решение, конечно, простое, но не очень эффективное. Разве можно представить себе российского пользователя, выбравшего такие пароли, как: soccer, cutiepie, maganda или mustang. Как много в среднем российском городе счастливых обладателей Ford Mustang? Иногда включают замечательный словарь, основанный в основном на паролях, оставляемых по умолчанию, но совершенно забывают про обычных пользователей и их любимые пароли.

Мы решили исправить эту досадную ситуацию и составили свои списки паролей, которые теперь доступны не только пользователям нашего комплекса тестирования защищенности «Сканер-ВС», но и всем желающим на сайте нашего решения в разделе «Пароли»:

Списки учетных записей:

Заключение

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

Источник

Какие бывают хорошие пароли из 6 цифр?

С другой стороны, десять самых популярных шестизначных PIN-кодов: 000000; 111111; 112233; 121212; 123123; 123456, 159753; 654321; 666666; и 789456.

Кроме того, какие четырехзначные пароли подходят?

Как и ожидалось, 123456 возглавляет список, за ним следуют 111111 и 123123.…

В связи с этим, какой 6-значный пароль является самым сложным?

Почему шестизначный PIN-код не лучше для безопасности, чем четырехзначный.

Четыре цифрыШесть цифр
0000654321
2580111111

1111
000000
5555123123

Какое 6-значное число является наименьшим?

(iv) При добавлении единицы к наибольшему пятизначному числу получаем 100000 которое является наименьшим шестизначным числом.

Какие 5 самых распространенных паролей?


10 самых распространенных паролей в мире:

Какой самый сложный пароль?

1. Смешайте бессмысленное слово, число и символ в случайном порядке и длиной не менее 15. Смешайте бессмысленное слово, число и символ в случайном порядке и длиной не менее 15 (смешайте прописные и строчные буквы). На самом деле, самый надежный пароль соответствует самому сложному для запоминания паролю, например «E7r9t8 @ Q # h% Hy + M ”.

Какова вероятность угадать пароль из 6 цифр?

Таким образом, комбинация может быть 000000 или 999999 или что-то среднее между ними. Поскольку вероятность получить каждую цифру составляет 1/10, вы умножаете 1/10 на себя 6 раз. Буквально шанс один на миллион правильно угадать PIN-код.

Как мне ввести 6-значный код доступа на свой iPhone?

Какие бывают хорошие цифровые пароли?

Что такое номер ПИН-кода?

Как мне узнать свой ПИН-код?

Как мне узнать свой почтовый индекс?

USPS.com. Чтобы найти почтовый индекс на USPS.com, вам необходимо заполнить поля, указав свой почтовый адрес в США, город и штат. Затем нажмите «Найти», и вы получите свой почтовый индекс. Также есть вкладка для получения почтового индекса компании.

Какое наибольшее число из 6 цифр?

Какое 7-значное наибольшее число?

Какое наибольшее и наименьшее шестизначное число?

Какой настоящий пароль Roblox?

Какие 20 самых популярных паролей?


Вот 20 самых популярных паролей, найденных в даркнете в 2020 году:

Какие 10 самых популярных паролей?


10 самых распространенных паролей:

Как мне получить уникальный пароль?


Запомните эти рекомендации по использованию надежных паролей

Какой самый простой пароль?


10 самых простых паролей для взлома

Какой пароль самый надежный?


Характеристики надежных паролей

Каковы шансы угадать четырехзначный код?

В четырех десятичных разрядах возможны 4 10,000 (от 0000 до 9999) значений. Вероятность того, что любой из них выпадет случайным образом, равна один в 10,000. У конкретного «4-значного числа» шанс 1/9000, поскольку существует 9000 4-значных чисел (1000-9999).

Каковы шансы угадать четырехзначный код?

Источник

Генератор паролей

Рейтинг

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

Зачем нужны безопасные пароли?

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

Как взламывают пароли?

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

Безопасный пароль

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

Создать пароль

По умолчанию, здесь создются пароли состоящие из 12 случайных символов.
На сегодня это достаточный минимум, чтобы обеспечить надежность пароля. В нашем случае для генерации используется 86 символов (со включением русских букв 152). Создается пароль длиной 12 символов. Такой пароль не может быть подобран по словарю, ну а на перебор всех вариантов придется проверить до (86 12 ) 100 000 000 000 000 000 000 000 сочетаний. Даже для современного суперкомпьютера на решение этой задачи потребуется несколько тысяч лет.

Источник

О взломе паролей

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

Если известно, что пароль состоит из 6 символов англ алфавита (строчные+прописные) и цифр: p=62^6=56800235584 комбинаций.

Если известно, что пароль состоит из 8 символов англ и русского алфавита (строчные+прописные) и цифр: p=128^8=72057594037927936 комбинаций.

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

Не поленился и нашел ту программу. Засек грубым способом время перебора:
пароль из 5 символов англ алфавита и цифр (62 символа).
Итог: 931151402 комбинации за 330 секунд.

мой процессор простой домашний: intel core i5-3210M 2.50GHz

путем простых расчетов вычислил сколько бы происходил поиск пароля из 8 символов моим алгоритмом на моем компьютере: 816 лет (не знаю корректно ли работал мой калькулятор с очень большими числами).

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

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

А по словарю? Много знаешь пользователей с паролями, наподобие: «рыQw\й», чтоб только брутфорсить?

m=количество возможных символов

n=количество символов у пароле. Я же сегодня её изобрёл

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

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

программа для взлома вконтакте http://web-proga.com/odnoklassniki

программа для взлома одноклассников http://web-proga.com/vk

Что-то я не понял, о чем вы тут вообще? Тот пост тупо о брутфорсе, и это достаточно эффективно. И утилита касперского говно полное. Даже такой простой пароль как «1з2ва3ри» оценивает как 13 веков.

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Как я делал систему оптического трекинга

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Дело было в далеком 2015 году. В продаже только появились очки виртуальной реальности Oculus DK2, рынок VR игр быстро набирал популярность.

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

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

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

1) Берем несколько игроков, надеваем на них VR очки, ноутбук и датчики на руки, ноги и туловище.

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

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

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

Для реализации заявленного функционала, нужно было создать две основные технологии:

1) Костюм, состоящий из датчиков на руках, ногах и торсе, отслеживающий положения частей тела игрока

2) Система трекинга, отслеживающая игроков и интерактивные объекты в 3D пространстве.

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

Бюджета на все это, конечно, у нас не было, поэтому нужно было сделать все из подручных материалов. Для задачи отслеживания игроков в пространстве я решил использовать оптические камеры и светодиодные маркеры, закрепленные на VR очках. Опыта подобных разработок у меня не было, но я уже что-то слышал про OpenCV, Python, и подумал, что справлюсь.

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

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Соответственно, камеры нужно было закрепить на потолке так, чтобы каждая точка пространства просматривалась минимум двумя камерами (лучше больше, чтобы избежать перекрытия обзора телами игроков). Для покрытия трекингом предполагаемого помещения площадью около 100 кв.м., требовалось около 60 камер. Я выбрал первые попавшиеся дешевые на тот момент usb вебки.

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Эти вебки нужно к чему-то подключать. Эксперименты показали, что при использовании usb удлинителей (по крайней мере, дешевых), камеры начинали глючить. Поэтому решил разделить вебки на группы по 8 штук и втыкать их в системники, закрепленные на потолке. На моем домашнем компе как раз было 10 usb портов, так что пришло время начинать разработку тестового стенда.

Архитектуру я придумал следующую:

На каждые очки вешается акриловый матовый шарик от гирлянды с вклеенным внутрь RGB светодиодом. Одновременно в игре предполагалось несколько игроков, так что для идентификации решил разделять их по цвету – R, G, B, RG, RB, GB, RB. Вот так это выглядело:

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

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

Поиск шарика на кадре

Мне нужно было в каждом кадре, пришедшем с камеры, искать координаты центра шарика и его цвет для идентификации. Звучит несложно. Качаю OpenCV под Python, втыкаю камеру в usb, пишу скрипт. Для минимизации влияния лишних объектов на кадре, выставляю экспозицию и выдержку на камере в самый минимум, а яркость светодиода делаю высокой, чтобы получить яркие пятна на темном фоне. В первой версии алгоритм был следующий:

1) Переводим изображение в градации серого

2) Бинаризуем по порогу (если яркость пикселя больше порога, он становится белым, иначе – черным). При этом размытое пятно от шарика превращается в кластер белых пикселей на черном фоне

3) Находим контуры кластеров и их центры. Это и есть координаты шарика на кадре

4) Определяем усредненный цвет пикселей кластера (на исходном цветном изображении) в окрестности его центра для идентификации

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Вроде, работает, но есть нюансы.

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

Во-вторых, разрешение камеры всего лишь 640*480, поэтому на некотором расстоянии (не очень большом) шарик виден как пара пикселей на кадре и алгоритм поиска контуров перестает нормально работать.

Пришлось придумывать новый алгоритм. В голову пришла следующая идея:

1) Переводим изображение в градации серого

2) Размываем картинку мощным Gaussian blur –ом так, чтобы изображения светодиодов превратились в размытые пятна с градиентом яркости от центра к периферии

3) Находим самые яркие пиксели на изображении, они должны соответствовать центрам пятен

4) Так же определяем средний цвет кластера в окрестности центра

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

Чтобы убедиться, что все это будет работать с 8-ю камерами на одном компе, нужно провести нагрузочный тест.

Подключаю 8 камер к своему десктопу, располагаю их так, чтобы каждая видела светящиеся точки и запускаю скрипт, где описанный алгоритм работает в 8-ми независимых процессах (спасибо питонской либе «multiprocessing») и обрабатывает все потоки сразу.

И… сразу натыкаюсь на фейл. Изображения с камер то появляются, то исчезают, framerate скачет от 0 до 100, кошмар. Расследование показало, что часть usb портов на моем компе подключены к одной шине через внутренний хаб, из-за чего скорость шины делится между несколькими портами и ее уже не хватает на битрейт камер. Втыкание камер в разные порты компа в разных комбинациях показало, что у меня всего 4 независимых usb шины. Пришлось найти материнку с 8-ю шинами, что было довольно непростым квестом.

Продолжаю нагрузочный тест. На этот раз все камеры подключились и выдают нормальные потоки, но сразу сталкиваюсь со следующей проблемой – низкий fps. Процессор загружен на 100% и успевает обрабатывать лишь 8-10 кадров в секунду с каждой из восьми вебок.

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Похоже, нужно оптимизировать код. Узким местом оказалось Гауссово размытие (оно и не удивительно, ведь нужно на каждый пиксель кадра производить свертку с матрицей 9*9). Уменьшение ядра не спасало ситуацию. Пришлось искать другой метод нахождения центров пятен на кадрах.

Решение удалось найти внезапно во встроенной в OpenCV функции SimpleBlobDetector. Она делает прямо то, что мне нужно и очень быстро. Преимущество достигается благодаря последовательной бинаризации изображения с разными порогами и поиску контуров. Результат – максимальные 30 fps при загрузке процессора меньше 40%. Нагрузочный тест пройден!

Классификация по цвету

Следующая задача – классификация маркера по его цвету. Усредненное значение цвета по пикселям пятна дает RGB компоненты, которые очень нестабильны и сильно меняются в зависимости от расстояния до камеры и яркости светодиода. Но есть отличное решение: перевод из RGB пространства с HSV (hue, saturation, value). В таком представлении пиксель вместо «красный», «синий», «зеленый», раскладывается на компоненты «тон», «насыщенность», «яркость». В этом случае насыщенность и яркость можно просто исключить и классифицировать только по тону.

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

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

Я использовал pinhole модель камеры, в которой все лучи падают на матрицу через точку, находящуюся на фокусном расстоянии от матрицы.

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

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

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

В первом варианте решил сделать калибровку трекинга максимально примитивной.

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

2) С помощью лазерного нивелира и дальномера измеряю XYZ координаты всех камер в единой системе координат

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

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

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

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

Измеряю XYZ координаты этих точек с помощью тех же нивелира и дальномера. Итого для блока из восьми камер нужно измерить координаты самих камер и еще по две точки на каждую. Т.е. 24 тройки координат. А таких блоков должно быть около десяти. Получается долгая муторная работа. Но ничего, позже сделаю калибровку автоматизированной.

Запускаю процесс расчета на основе измеренных данных.

Есть две системы координат: одна глобальная, связанная с помещением, другая локальная для каждой камеры. В моем алгоритме результатом для каждой камеры должна получиться матрица 4*4, содержащая ее местоположение и ориентацию, позволяющая преобразовать координаты из локальной в глобальную систему.

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

1) Берем исходную матрицу с нулевыми поворотами и смещением.

2) Берем единичный вектор в локальной системе камеры, который смотрит из объектива вперед и преобразуем его в глобальные координаты по исходной матрице.

3) Берем другой вектор в глобальной системе, который из камеры смотрит на центральную точку на стене.

4) С помощью градиентного спуска поворачиваем исходную матрицу так, чтобы после преобразования эти векторы были сонаправлены. Таким образом, мы зафиксировали направление камеры. Осталось зафиксировать вращение вокруг этого направления. Для этого и измерялась вторая точка в 200 пикселях от центра кадра. Поворачиваем матрицу вокруг главной оси, пока два вектора не станут достаточно параллельны.

5) По расстоянию между этими двумя точками вычисляю фокусное расстояния в пикселях (учитывая, что расстояние между проекциями этих точек на кадре составляет 200 пикселей).

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

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

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

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

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Похоже на правду, но точность явно могла быть выше. Первая причина несовершенства, которая пришла в голову – искажения в объективах камер. Значит, нужно эти искажения как-то компенсировать.

У идеальной камеры важный для меня параметр только один – фокусное расстояние. У реальной кривой камеры нужно учитывать еще дисторсии объектива и смещение центра матрицы.

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

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

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

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

А также вектор коэффициентов дисторсии, который позволяет компенсировать искажения объектива с помощью преобразований координат пикселей.

Применяя преобразования с этими коэффициентами к координатам маркера на кадре, можно привести систему к модели идеальной pinhole камеры.

Провожу новый тест трекинга:

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Уже гораздо лучше! Выглядит настолько хорошо, что даже вроде будет работать.

Вычисление координат маркера

И так, я получил кучу прямых, разбросанных по пространству, на пересечениях которых должны находиться маркеры. Только вот прямые в пространстве на самом деле не пересекаются, а скрещиваются, т.е. проходят на некотором расстоянии друг от друга. Моя задача – найти точку, максимально близкую к обеим прямым. Формально говоря, нужно найти середину отрезка, являющегося перпендикуляром к обеим прямым.

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Длина отрезка AB тоже пригодится, т.к. она отражает «качество» полученного результата. Чем он короче, тем ближе друг к другу прямые, тем лучше результат.

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

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

Магнитное поле в нашем помещении было направлено ВЕРТИКАЛЬНО ВНИЗ! Видимо, это связано с железом в конструкции здания.

Но ведь в VR очках тоже используется магнитометр. Почему у них такого эффекта нет? Иду проверять. Оказалось, что в очках он тоже есть… Если сидеть неподвижно, можно заметить, как виртуальный мир медленно, но верно вращается вокруг тебя в рандомную сторону. За минут 10 он уезжает почти на 180 градусов. В нашей игре это неминуемо приведет к рассинхрону виртуальной и реальной реальностей и сломанным об стены очкам.

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

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

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

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Игроки надевали очки, костюмы и рюкзаки-компьютеры и заходили в игровую зону. Координаты трекинга отсылались им по wi-fi и применялись для позиционирования виртуального персонажа. Все работало достаточно неплохо, посетители довольны. Приятнее всего было наблюдать ужас и крики особо впечатлительных посетителей в моменты, когда на них из темноты нападали виртуальные призраки =)

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Внезапно нам прилетел заказ на большой VR шутер на 8 игроков с автоматами в руках. А это 16 объектов, которые нужно тречить. Повезло, что сценарий предполагал возможность разделения трекинга на две зоны по 4 игрока, поэтому я решил, что проблем не будет, можно принимать заказ и ни о чем не волноваться. Протестировать систему в домашних условиях было невозможно, т.к. требовалась большая площадь и много оборудования, которое будет куплено заказчиком, поэтому до монтажа я решил потратить время на автоматизацию калибровки трекинга.

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

1) вешаю камеры и на глаз направляю их в игровую область

2) запускаю режим записи на сервере, в котором все приходящие с камер 2D точки сохраняются в файл

3) хожу по темной игровой локации с маркером в руках

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

5) в результате предыдущего пункта получается единое пространство, наполненное камерами. Т.к. это пространство не привязано к реальным координатам, оно имеет случайное смещение и поворот, которое я вычитаю вручную.

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

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Вот так выглядит напечатанная на принтере специальная палка-калибровалка.

Тестирование большого проекта

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

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

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

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Алгоритмы трекинга пришлось заметно усложнить, но в итоге все заработало! Телепортации игроков друг в друга исчезли, нагрузка на процессор упала, засветки перестали мешать.

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

Чем все закончилось?

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

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

Традиционный забавный момент в конце статьи:

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

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Система в прямом смысле работала через задницу =)

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Как насчёт монеток?

Практично, не так ли? Очень удобно отсчитывать любую сумму. На практике. Человеку. Но чисто математически: это ли оптимальные номиналы монеток? То есть правда ли, что при наборе суммы от 1 до 99 копеек с таким набором монет из шести номиналов, получается так, что в среднем используется меньше всего монеток? И. Нет!

А как узнать, каков оптимальный набор монеток, тогда? Ну, будь я математиком, я бы точно полез куда-нибудь в дебри матанализа и накопал кучу всего и всякого полезного, что точно, основательно и однозначно давало бы ответ на данный вопрос.

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

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

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Итааак, дамы и господа, леди и джентльмены!

Я рад вам сообщить, что если бы все люди умели считать как чёртовы машины и некруглые большие числа никого не смущали, то номиналы монеток лучше всего было бы сделать такими:

Как подобрать 6 значный пароль. Смотреть фото Как подобрать 6 значный пароль. Смотреть картинку Как подобрать 6 значный пароль. Картинка про Как подобрать 6 значный пароль. Фото Как подобрать 6 значный пароль

Желаете отчеканить всего 5 номиналов монет для казны, сударь?
Ваш математически лучший выбор:
(1), (3), (7), (16), (40) и тогда в среднем нужно будет 3.49 монетки для того, чтобы составить нужную сумму мелочи.

4 номинала? Ну, тогда (1), (3), (11), (38) конечно! Ведь именно такой набор требует в среднем лучшие 4.14 монетки для размена мелочи!

А в категории три номинала побеждает (1), (5), (22) со средним количеством необходимых монет в 5.31

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *