Предугадывание
Vložit
- čas přidán 29. 08. 2024
- #soer #itubeteam
Основной канал для общения и публикации новых видео - Телегарм - t.me/softwaree...
Спонсорство - donate.s0er.ru
Сайт платным контентом - soer.pro
Зеркало для видео Дзен Видео - zen.yandex.ru/...
GitHub - github.com/soe...
Чат для программистов - / discord
Группа ВК - codeart...
Еще больше закрытых материалов на www.patreon.com/soersoft
Вы знали, что я пишу книгу? Так вот первая глава уже доступна для патронов.
В универе на криптографии повторяли подобное) прям в универ захотелось вернуться))
Спасибо большое
Грамотный мужик, лайк
надо было написать
Угадываю значения RAND 10 ЧАСОВ
(челлендж)
Подряд.
@@turtle207 о, это слово волшебное, многое меняет
Всё, пошел деньги на онлайн казино закину и "обанкрочу" ево!
Я теперь знаю секрет!
Отличная подача материала, спасибо!
обанкротили?)
@@user-md1yv6vs9v неа, у них алгоритм другой, более умные они. Тоже походу смотрят канал Соера! :)
В долги залез, кредит взял, кредит чтоб покрыть кредит и тот проиграл. Овечаю, все на зеро поставил, а выпало двойное зеро!
1. Нужно знать не только последовательность из 7 получившихся чисел, но и коэффициенты самой формулы.
2. В современной криптографии используются ключи длинной 1024 бит и более - т.е. число из 128 цифр. Подставьте число такого размера в переменную m и попробуйте дождаться результата вычислений. А ключ размером 2^31 и в RSA подберётся за секунды.
Автор сказал что методы используются другие в криптографии. И угадать таким способом не получится
Спасибо! Все по теме! Удачи и успехов во Всем!
Здорово, всё гениальное - просто. ;)
Под конец даже жутко стало. Спасибо большое. Это очень полезная информация
от чего?))
Артём Загурский от того на сколько функция rand предсказуема.
Даёшь больше практики!
Очень интересный контент!
ДА! ДА! ДА! Брат, ты меня не подвел!
Привет!
Отличное видео. Однозначно лайк!
На тебе окуляры с "технологией" Blue Block?
Расскажи что-то о них: где покупал? за сколько? стоит ли использовать в работе? глаза меньше устают? когда надеваешь? можно ли использовать в быту (например, во время вождения автомобиля)?
😏 но очень интересно
Извиняюсь что не по теме видео пишу, но в своем видео, где вы рассказывали об оценках своего диплома, вы сказали что фронтендером можно стать за несколько месяцев курсов, а инженером только после университета.
Поэтому у меня создалось впечатление что вы перепутали такие понятия как фронтендер и верстак. Ибо сейчас охват работа выполняемы на фронтендер гораздо шире чем бональное формошлепство, взять к примеру работу с 3d графикой и webgl. Для некоторых задач приходится вспоминать курсы векторной алгебры и матанализа.
Для рулетки связь с количеством и суммой выигрышей совсем не обязательна, чтобы помешать выиграть игроку (как считают многие). Для генерации псевдослучайных чисел можно взять ГПСЧ представленный в видео, затем добавить влияние абсолютно любых событий на seet. Например, учитывать время нажатия игроком кнопки Spin, время входа в рулетку, время прошедшее с момента входа, время между ходами, среднее время между ходами, количество посещений казино игроком за всё время игры, среднее время между посещениями, его персональные данные, имя компьютера, название и версию ОС, с которой он зашел, IP. И так до бесконечности. И таким способом, рулетку невозможно будет предугадать. Заметьте, я ни слова не говорил об учёте депозита игрока и его успешности, количестве выигрышей и их размере, это совсем необязательно для защиты от взлома рулетки.
наконец-то конкретика пошла
Если я правильно понял работу данного алгоритма, в случае если 3 числа совпали, а 4-ое число нет, алгоритм продолжить сравнивать не возвращаясь на 3 позиции назад. Это упрощение для простоты понимания или доказано что можно действовать данным образом, или я чего-то не понимаю?
Алгоритм ищет место где совпадает все 7 цифр.
@@S0ERDEVSВопрос подразумевает следующее:
Если нашлось совпадение 3 чисел (места в массиве например i+101, i+102, i+103 - это те числа которые совпали) а 4-ое (i+104) не совпало. Следующая позиция начала поиска будет i+102 или i+104 или i+105?
Ответ знаю, но пусть отвечает мастер :)
Анзар Щ.,вы правы, алгоритм пройдёт мимо. Например в ряде 1, 4, 1, 4, 1, 7, 18, ... ищем ряд 1, 4, 1, 7, 18, ...
Даже двух повторений достаточно чтобы не найти, например в ряде 1, 1, 1, 23, 12, 2, 5 ищем 1, 1, 23, 12, 2, 5
Приведённый в видео алгоритм не найдёт ряд.
Блин, вчера не понял вопрос. А он действительно очень хороший.На самом деле Вы правильно сказали, что нужно возвращаться, либо доказать, что такой вариант невозможен. Ну либо взять больше начальных цифр и выбрать из них "срединку", чтобы быть уверенным, что в первоначальной последовательности нет коллизии.
@@S0ERDEVS Ну это КМП какой-то
Полезное видео
спасибо
можно ли предугадать генерацию от 0-999999 пользуясь вашим методом?
круто!
Здравствуйте. Не могли бы вы подсказать, как определить, сколько чисел нужно сгенерировать, чтобы точно угадывать все последующие числа? Я имею в виду, из каких соотношений было получено, что, зная 7 чисел, мы точно можем определять все последующие числа в данном примере?
так чтобы (количество чисел^сколько может быть значений)>= всего значений в массиве
03:35 - а все таки, как это посчитать?
Edit: Вот нашел что-то, кажется, подходящее: books.google.ru/books?id=mmrdCgAAQBAJ&pg=PA39#v=onepage&q&f=false страница 39, пример 2.6 но в нашем случае то мы размер изначального вот этого огромного массива (sample space) не знаем. Мы вообще об этом массиве ничего не знаем, кроме того что вот этот, предположим, subset из 7 значений в нем точно *(?)* совпадает [n, n, n, ... n, { *23* , *35* , *0* , *7* , *35* , *19* , *10* } , n, etc...] Значит, надо найти, какова вероятность того что второго такого совпадения нет. И если все так, то формула из книги *[1 - P(n)]* вполне подходит, но вот "sample space" млин 😐.
Короче я словил "Nerd Sniping". S0ER помоги выбраться :)
Edit 2: Окок. Посыпаю голову пеплом. Не сразу дошло что было первое видео по теме. Ну пускай, будем считать, что это число 2147483646. Но Wolfram Alpha эту формулу с такими значениями, для n = 7, считать отказывается 😁
Edit 3: Ну или я затупил. А мне кажется что я затупил
Вы случайно не нашли ответ на этот вопрос?) Меня просто тоже очень интересует, как понять, при каком количестве сгенерированных значений однозначно определена текущая позиция рандома
Красава! И как успехи?
такой годный контент, но так все сложно, я еще массивы не выучила (
Перед получением рандом числа надо сменить сид и это метод уже не работает
Здравствуйте я хотел спросить, я не программист ,вы могли бы подсказать как угадать следующую цифру путем если на бумаге с ручкой умножение или деление и все такое, зная 7 предыдущих цифр, как это сделать подскажите пожалуйста, заранее спасибо
здравствуйте, меня очень заинтересовала ваша тема можно ли связаться как то с вами?
ого, неожиданно
Здравствуйте, я не программист, чисто любительски.. Вы могли бы по ряду реально (на мой взгляд) рандомных цифр (0-9) в 10 000 знаков, к примеру, найти закономерность? Если да (или можно попробовать) - как с Вами связаться через почту? С уважением, Денис.
А где такое накодить самому можно, интересно попробовать самостоятельно такое, глядишь казино в гта взломаю, хахах) думаю random в pawno такой же примитивный )
А что его там ломать? Все работает.
Ну так мы же можем это взломать, только если знаем значение "a" и "m". Тогда асимптотика будет что-то вроде O(m * SIZE) (за пару секунд если "m" как на видео). Как бы мы это взломали если не знали бы "a" и "m"? Все равно важный рандом должен быть только на сервере, потому что если делать его на стороне клиента, то мы можем тот же seed реверснуть и без перебора взломать.
В том и смысл, что нельзя использовать конгруэнтный метод, т.к. подходящих для него значений для хорошей статистики - всего лишь несколько и они давно известны. Есть возможность попробовать каждый из них. Если в каком-то серьезном проекте не дай боже использовался rand на конгруэнтном методе, а злоумышленнику прям очень-очень надо, то он все эти варианты a и m переберет и взломает алгоритм.
Где найти заранее известные значения рассказывалось в предыдущем ролике.
@@ffelicius если злоумышленнику будет неизвестно кроме сида еще a и m, и он решит их перебирать, это займет очень много времени. Особенно если мы увеличим диапазон этих штук. Например сделаем m = не 7FFFFFFF, а больше. Даже сейчас перебор работает несколько секунд, а если учесть, что мы не знаем a и m, он будет работать ГОРАЗДО дольше.
@@user-jw6rx3yd5u еще раз, комбинаций a и m, которые используются в конгруэнтных методах мало - порядка десяти штук. Не так много. Для злоумышленника несколько часов, потраченных на взлом - не проблема, если результат того стоит.
@@ffelicius а, я понял. Просто не смотрел прошлое видео. Но все-таки мы можем пожертвовать длиной последовательности неповторяющихся вариантов, дабы не брать константы из базы и, допустим, длина последовательности будет в пару раз меньше, зато мы сами будем генерировать константы. Так?
@@user-jw6rx3yd5u проблема в том, что с математической точки зрения подобрать хорошие константы - задача нетривиальная вот совсем. Длина последовательности уменьшится далеко не в пару раз. Последовательности будут ну очень короткими. Слишком. Длина последовательности будет всего в пару десятков, если повезет. Именно поэтому специальные умные люди - математики их подбирают. Именно поэтому база этих чисел и существует, потому что ты сам такие константы фиг сгенерируешь.
Продолжай и без лайков интересно
Вспомнил как несколько лет назад в одной онлайн игре точно так же предсказывал значения рулетки. Серверов в этой игре было много, они программировались на pawn. В этом языке встроенный rand() использовал 32-битный сид и инициализировался текущим временем на сервере. Первой моей идеей было написать на pawn программку, которая бы искала сид сервера, исходя из приблизительного времени его запуска (учитывая таймзону) и набора чисел, выпавших в рулетке; но эта идея была отброшена после того, как поигравшись с rand() я обнаружил, что минут за 6 непрерывной генерации случайных значений, с немалой вероятностью сид повторялся!
На следующий день я уже работал с самой реализацией функции pawn_rand() на C. Случайные числа использовались не только в казино, в процессе кручения рулетки rand() вызывался где-то еще, поэтому я написал эффективный алгоритм нахождения сида сервера с учетом "пропусков", через пару дней написал на C++ плагин для игры который сам крутил рулетку, вычислял сид, синхронизировал сид с сервером. Так я за пару минут мог вынести из казино максимальное кол-во денег которое можно было, и быстро потерял интерес к игре
Вот тот самый ГПСЧ из pawn github.com/compuphase/pawn/blob/master/amx/amxcore.c#L431
Судя по комментарию выше функции, там как раз используется мультипликативный конгруэнтный метод
Его особенность в том, что каким-то образом сид "зацикливается". Независимо от значения которым он был инициализирован, он начинает выдавать одни и те же значения через определенное время
Здравствуйте товарищ коллега-скриптер
"и быстро потерял интерес к игре" >3
Друг, а можешь написать подробно об этом в телегу? сам пытаюсь понять действия казино на pawno, но что-то успехом не увенчалось. напиши пж в телегу @tomas_liven
Не самп ли это часом? И если не затруднит расскажите поподбробнее в телеграм @Okon4ik
Привествую, файлы не завалились еще?)
Привет, я хотел попробовать запустить в С++ то, что ты написал, но у меня выдает ошибку. Можно ли где-то найти этот метод в текстовом варианте чтобы вставить и попробовать? Заранее благодарю за ответ)
Нууу... самый простой воркараунд - это произведение двух случайных чисел, умноженное на 2, просто, чтоб получить корректное мат ожидание нового числа. Такая штука увеличивает число перебора до N^2/2-N, или около того. То есть, даже используя стандартный ранд можно наращивать сложность перебора очень дешево. Где я не прав?
Отчасти да, но на самом деле нам нужно не 100% вероятность угадывания, любое положительное мат. ожидание в рулетке нас устроит и раззорит казино.
А реально дилетанту, предугадать какие числа выпадут в обычном генераторе чисел, в которых проводят розыгрыши, числа от 1 до 81?)
Ну при известном сиде (и методе) понятно. Было бы интереснее это же, но с угадыванием, хотя бы, сида
Сид неизвестен, мы его как раз и находим. В реальности алгоритмов для стандартного ренда несколько, константы тоже могут быть разные. Но их все равно не так много.
В реальности, конечно намного сложнее повторить подобное, сокрытие информации об алгоритме - это дополнительная степень защиты.
@@S0ERDEVS А что если брать новый сид(от времени) при каждом выборе нового числа? Ведь точно нельзя сказать когда вы нажмете клавишу)
@@exploserable Ичь какой быстрый. Ты забыл про условия сказать. Во-первых такое возможно только если это происходит на одной и той же системе, а если так, то тогда уже еще быстрее считать результат из памяти))) Если же системы разные, каким образом будешь синхронизироваться? Во-вторых это в зависимости от того что ты за время возьмешь, если что-то подобное к GetTickCount в WINAPI, то удачи в перехвате, смещение по тактам рассчитать не получится в многозадачной среде.
@@sergbo3114 Есть такие вещи: гпсч и гсч. Не надо путать и пытаться заменить одно другим. В видео показано что первое в качестве второго не работает. Надо дополнить про наоборот. Если вы сделаете гсч хоть от времени, хоть от космического излучения - то это будет один из многих гсч, но последовательность чисел вы второй раз не воспроизведете. Суть сида в повторяемости результата.
@@LionKing-qp1lkВы правы гпсч и гсч разные вещи никто с этим не спорить и никто их не путает. Тут целью было банальное "а что если"))
Привет! Очень нужен код этой программы, подскажите пожалуйста, где можно взять?
Здравствуйте,есть игра одна а вней есть так сказать казино,в этом казино есть игра орёл и решка,возможно ли найти комбинацию выподания в таком случае?
И как это сделать
Можно ли сгенерировать тот же биткоин адрес сместив время назад?
можно сгенерировать не смещая. сиди себе - перебирай, пару триллионов лет
@@vxctxrrxtxnbxrg2146 если знаешь что генератор случайных чисел привязан к времени
А почему нам не важен сид и числа угадываются с разными сидами?
Сид не меняет массив. Сид это просто сдвиг по массиву
Потому что все числа находятся в кольце и стоят на одном и том же месте, сид лишь определяет с какого места этого кольца мы начинаем движение. Но при этом ни сами числа ни их порядок не меняется.
Можно себе представь поезд у которого последний вагон зацеплен по кругу на первый, на каждом вагоне нарисовано число. Так вот сид определяет в какой вагон сесть, а дальше мы идем по одному и тому же кругу.
@@S0ERDEVS Понял, спасибо.
@@S0ERDEVS Если в него сесть то так и будешь статикой. Нужно иметь опору вне состава и тогда вроде сростаеться.
Так как же выиграть в казино ?
а есть контр мера кроме сокрытия исходного кода генератора?
@@exploserable да но тогда этот генератор нельзя будет использовать в криптографии, речь шла о генераторе последовательность которого можно восстановить по зерну
есть.
где ты пишешь код??
если это блокнот то какой ??
пожалуйста !!!!
Это же Vi , там же видно
Давно соер стал популярным? Смотрел его год где-то было 10 к, появилась рубрика разговоры у камина. А щас важный стал. Что я пропустил?
-Это был его не достаток...
А хде достаток? Ну должно же быть преимущество?
P.S. может быть это простота реализации? Б...ь опять вопрос.
Статистика. Нет слишком "кучных" мест.
Скорость. Крипто случайные генераторы в разы медленнее.
На видео код на черном фоне это просто вырви глаз. Можешь для видео писать код на белом фоне?
Скажи ещё что у тебя не во всех редакторах темная тема стоит
@@user-jq9ne2oy9p красная тема и розовый шрифт
Кто может дать весь код пожалуйста?)
в какой программе написал код и запустил?
Dumitru Iordachi в блокноте :)
@@dmitriysokolov514 xD
Так в казино другие Random'ы используются которые хрень предскажешь
Скорее там даже не рандомы используются, а алгоритмы по анализу ставок и уровню доход/убыток. Было бы глупо делать "честный" рандом.
@@S0ERDEVS Рулетка изначально рассчитана на выигрыш казино. А если угадывать числа можно таким простым методом, то, конечно, разработчики рулеток позаботились о более сложных алгоритмах генерации, нежели линейный конгруэнтный метод. Еще, я где-то читал, что генератор настоящих случайных чисел можно сделать из сигнала шумящего радиоэлектронного компонента (диода, если мне не изменяет память). Но не знаю, используют ли подобные методы на серверах либо на PC.
@@S0ERDEVS ничего глупого, прибыль идет с комиссии на вывод
@@mihailmatkovskij9350 используют ли на PC? Да. Детектор - мышка, генератор шума - рука пользователя когда он изображает работу за компьютером(разложить пасьянс самое то что нужно) . На сервер можно поставить детекторами и счётчики Гейгера. Тайм стемпы сообщений и о движении мышки и о прилёте гамма частицы будут содержать достаточно много случайных бит среди младших. Шум например одного диода на прямую вроде никто ни где не использует. Это же нужно избавляться от разных типов эдс наводок. Сетевая наводка периодическая-50 Гц. От самого компьютера куча импульсных. Проще использовать как минимум два и на детектирование шума отправлять их разность сигналов а сумму сигналов использовать для прогнозирования качества шума.
а много ли рулеток, которые используют этот метод?
думаю, что ни одной. это выдуманный пример
В настоящих рулетках значения задаются оператором, чтобы цифры выпали для нужного билета. Живи теперь с этим )
а если за одну итерерацию генерить суму 4х цифр до 9?
можно нарушить нормальное распределение и какие-то числа станут выпадать чаще других. Тут навскидку я не скажу.
@@S0ERDEVS Вы наверное имели в виду равномерное распределение, а не нормальное)
Да, имел в виду равномерное )
Не надо выдумывать велосипеды, если не способны оценить их качества, над этими вопросами бьются десятки первоклассных специалистов. Поищите верифицированные криптографические генераторы псевдослучайных чисел.
А по хорошему нужно искать надёжный источник энтропии. Аппаратные генераторы коих очень много. Начиная от бомжеподелок из rtl-sdr (это "безмозглый" USB радиоприёмник) заканчивая специализированными решениями.
Побежал в онлайн казино
Не учтено, что повторы в реальности выкидывались бы. Если бы кто-то пытался делать 6 из 36 на LCG.
Ну ты колдун конечно!
joycasino нервно курит, ща дудос пойдет...
Rand - частный случай srand(seed), но с фиксированным сидом? Сомнений нет, всё в этом мире предопределенно.
srand просто сид для rand ставит
Никогда не думал, что псевдорандомные числа настолько "Псевдо"