Прежде всего вам необходимо знать, соответствуют ли они RFC4122, и вам нужно получить версию.
Если это UUIDv1, вы можете предсказать их
UUIDv1 состоит из:
- Метка времени (интервалы 100 нс с эпохи григорианского календаря)
- Версия (1) клев
- Два (или три, lol) бита для соответствия RFC4122 (это приводит к тому, что полубайт находится в [89ab])
- Идентификатор часов (случайные биты)
- Идентификатор узла (постоянная маска из 6 байтов)
Вам просто нужно пройтись по возможным временным меткам. Осторожно, существует множество интервалов по 100 нс!
Некоторые программы генерируют UUIDv1 (идентификаторы информационных панелей Grafana, списки Airbnb и т. Д.), Но некоторые программы используют случайные UUID, UUIDv4.
Если это UUIDv4, вы можете украсть контекст PRNG
Как показал некоторое время назад Николай «отрицает» Денищенко (Касперский), имея отладочный доступ к процессу, генерирующему UUID, можно украсть текущий контекст RC4 и воспроизвести в другом месте до 500000 UUID. Это было продемонстрировано (привет, Уилл Дин) в Microsoft Windows XP, в которой использовался забавный механизм 8 * RC4 и который был засеян с фактической энтропией каждые 500000 UUID.
В Windows 10 (это не совсем версия Windows, а скорее .NET Framework или версия rpcrt4.dll), это уже не RC4, а AES, предположительно используемый в режиме CTR. Предположительно, используется то же самое энтропийное повторное использование.
Для получения дополнительной информации, проверьте работу, которую я сделал там https://uuid.pirate -server.com / blog /