Email or username:

Password:

Forgot your password?
Nokita Kaze
Хотите посмотреть на ошибку, стоившую около $3 000 000?
github.com/johguse/profanity/b…
blog.1inch.io/a-vulnerability-…

Чувак 32-битным случайным числом инициировал 256-бит (которые абсолютно предсказуемы, зная 32 бита исходного seed). Далее оставалось лишь перебрать по около 1-3 миллиона подсмещений от каждого из изначальных 4 миллиардов семян. И сравнить получившиеся адреса (из получившихся приватных ключей) с известными красивыми (vanity) адресами #ethereum.

Пострадало около 12 адресов:
- 0x0000000000000d9054f605ca65a2647c2b521422
- 0x00000000000cd56832ce5dfbcbff02e7ec639bc9
- 0x000000000505696507852acbeecde05ec48fd000
- 0x0000e84617042cf36c95b88326b83d81c1290000
- 0x0babe3333bb2904dc3cdc16b80b64dc3ec5ac4d3
- 0x11d010118a6b11b04106000c00a040c1100b5493
- 0x1c00dd00c5a0818761010500811900061801368b
- 0x60011111fd5111e74120a59100a0ea007100b004
- 0x6fca99c517137deb0519c4e65df81b98492bad1c
- 0x88888888888eb8566470be163d5cf9fe9dff0597
- 0xa0a5ecd1c171a7b643c6e87620a5b483ebbadead
- 0xda0da0da0da0a77740bb62c5c9d45423533d0ce2

Денежки ушли сюда:
etherscan.io/address/0x6ae09ac…

#profanity #финтех
#крипта #crypto #cryptocurrency #криптовалюты
3 comments
Taciturn

@nokitakaze Генератор случайных чисел засорился после первых 32-бит, пришлось выкручиваться?

Nokita Kaze
@nokitakaze @Taciturn кто-то нарукожопил и не разобрался как работает генератор псевдослучайных чисел (если я правильно понимаю, там вихрь Мерсена)
Nokita Kaze
@nokitakaze Разбираю кейс дальше. Взял все свои нагенеренные на чёрный день адреса. Перебрал 4 миллиарада сидов.
Короче, следующее:
Генерируются 4 uint64. Реверсятся. Новое первое число растёт быстро (это foundId, я до 3.5 миллионов оффсеты нашёл), новое последнее число (round) растёт медленно, его значение в пределах 2-3 тысяч от начального.
При этом числа, когда конвертятся в байты, превращаются в них по Big-Endian, не по Little-Endian. Вот у нас получается 256-битный (32-байтный) ключ от адреса.
Таким образом два средних блока приватного ключа по 8 байт не трогаются вообще, они одинаковые для всех адресов с этого сида. Меняются только первый и последний блоки.
А из других двух меняются фактически 3 байта + 2 байт. 5 байт уникальные, остальные неуникальные.
@nokitakaze Разбираю кейс дальше. Взял все свои нагенеренные на чёрный день адреса. Перебрал 4 миллиарада сидов.
Короче, следующее:
Генерируются 4 uint64. Реверсятся. Новое первое число растёт быстро (это foundId, я до 3.5 миллионов оффсеты нашёл), новое последнее число (round) растёт медленно, его значение в пределах 2-3 тысяч от начального.
Go Up