2 апреля 2013, 7:25:41 AM   # 1
 
 
Сообщения: 1890
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Здравствуй,

Согласно вики:

Почти каждое 256-битное число является действительным закрытым ключом. В частности, любые 256-битное число между 0x1 и 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141 является действительным закрытым ключом.

Диапазон допустимых закрытых ключей определяется secp256k1 стандартом ECDSA используется Bitcoin.

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

Для случайно сгенерированных ключей, я понимаю, что с помощью регулярных PRNGs не является хорошей идеей, но используется вместе с SHA256, наряду с другими входами (время? Движений мыши? Клавиатуры синхронизации записей, или даже то, что на самом деле типизированных, внешние файлы, которые вы что никто другой не имеет, или внешние файлы, которые генерируются случайным образом доверенного ПСЧ), это может быть "приемлемо",

Я мог бы также использовать OpenSSL ГСЧ, но это может быть более сложным.

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

В качестве личного проекта, я хотел бы создать программу, которая делает это в основном (Visual Basic или питания Basic) для Windows. Я знаю, и я видел, есть версии C для Linux и предварительно скомпилированных двоичных файлов для Windows (vanitygen) и даже Java (bitaddress, brainwallet).
Мазки сейчас офлайн Пожаловаться на Dabs   Ответить с цитированием Мультицитирование Сообщения От Dabs Быстрый ответ на сообщение Dabs


Как заработать Биткоины?
Без вложений. Не майнинг.


2 апреля 2013, 7:29:03 AM   # 2
 
 
Сообщения: 812
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

Получил 1806 Биткоинов
Реальная история.





Используйте криптографически безопасный генератор случайных чисел. Например, у OpenSSL, или / Dev / случайного эквивалента вашей ОС.

Я рекомендую сильно от попыток бросить что-нибудь сами.
Wumpus сейчас офлайн Пожаловаться на Wumpus   Ответить с цитированием Мультицитирование сообщения от Wumpus Быстрый ответ на сообщение Wumpus

2 апреля 2013, 9:02:59 PM   # 3
 
 
Сообщения: 1764
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

Если вы на Windows, CryptGenRandom будет делать. PM мне или ответить, если вы хотите помочь с извлечением открытого ключа из закрытого ключа и получения соответствующего Bitcoin адреса и тому подобные.
Wolf0 сейчас офлайн Пожаловаться на Wolf0   Ответить с цитированием Мультицитирование сообщения от Wolf0 Быстрый ответ на сообщение Wolf0

3 апреля 2013, 1:28:12 AM   # 4
 
 
Сообщения: 1890
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

Я буду делать это как в Visual Basic (классический, или версии 6) и, возможно, питания Basic для Windows. Я, вероятно, может читать исходный код C и сделать перевод на основной.

Наиболее безопасный является использование конечно CryptGenRandom, но я помню, что делал несколько лет назад, и это займет некоторое время, чтобы начать работу. Я не знаю, если последующие вызовы этой функции быстрее. Я хочу, чтобы моя маленькая программа для генерации ключей немного быстрее, чем генераторы на основе Java (как bitaddress) и, если это возможно, так быстро, как, или быстрее, чем vanitygen.

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

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

3 апреля 2013, 3:14:22 AM   # 5
 
 
Сообщения: 1764
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

Я буду делать это как в Visual Basic (классический, или версии 6) и, возможно, питания Basic для Windows. Я, вероятно, может читать исходный код C и сделать перевод на основной.

Наиболее безопасный является использование конечно CryptGenRandom, но я помню, что делал несколько лет назад, и это займет некоторое время, чтобы начать работу. Я не знаю, если последующие вызовы этой функции быстрее. Я хочу, чтобы моя маленькая программа для генерации ключей немного быстрее, чем генераторы на основе Java (как bitaddress) и, если это возможно, так быстро, как, или быстрее, чем vanitygen.

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

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

Я написал утилиту, которая делает это, вы могли бы найти его легче изучать мой C код.
Wolf0 сейчас офлайн Пожаловаться на Wolf0   Ответить с цитированием Мультицитирование сообщения от Wolf0 Быстрый ответ на сообщение Wolf0

3 апреля 2013, 3:57:13 AM   # 6
 
 
Сообщения: 812
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

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

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

3 апреля 2013, 12:09:35 PM   # 7
 
 
Сообщений: 46
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

Я рад видеть, что вы принимаете хаотичность серьезно

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

Порядок базовой точки secp256k1 не совсем 2 ^ 256, как вы заметили, но это так близко, что генерирование 256 случайных битов и выбрасывая вне диапазона значений (на пульте случайно вы когда-либо получить один) не проблема, и что путь (после выполнения всех арифметических операций), вы будете в конечном итоге с точки равномерно распределены по кривой.
Proff сейчас офлайн Пожаловаться на Proff   Ответить с цитированием Мультицитирование сообщения от Proff Быстрый ответ на сообщение Proff

3 апреля 2013, 2:33:51 PM   # 8
 
 
Сообщения: 252
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

Существует два подхода в Интернете, чтобы решить эту проблему: распад изотопа и радиоэлектрический шум.

Первый используется hotbits: http://fourmilab.ch/hotbits/ И второй используется random.org: http://random.org

Если вы не можете построить эту технику, вы можете загрузить определенное количество битов (скажем, ~ 1000) от каждого источника (через защищенный сервер) и конкатенации с результатом вашего / Dev / случайное устройство. Hash результат, и вы его получили.
Shevek сейчас офлайн Пожаловаться на Shevek   Ответить с цитированием Мультицитирование сообщения от Shevek Быстрый ответ на сообщение Shevek

3 апреля 2013, 2:38:20 PM   # 9
kjj
 
 
Сообщения: 1302
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

Новые иш процессоры Intel имеют RDRAND опкод, что, как представляется, быть пригодными для создания высококачественных случайных бит.
kjj сейчас офлайн Пожаловаться на kjj   Ответить с цитированием Мультицитирование сообщения от kjj Быстрый ответ на сообщение kjj

4 апреля 2013, 3:53:40 AM   # 10
 
 
Сообщения: 1890
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

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

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

Как насчет того, я использую быстрый ПГСЧ вместе с медленным CryptGenRandom как семя? Или я что-то вроде этого:

1. Получить 256-битное число семян из CryptGenRandom.
2. Хэш это число с SHA256
3. добавить 1 к оригинальному номеру
4. Хэш это следующий номер с SHA256.
5. Промыть, Повтор.

В основном используют CryptGenRandom в качестве основы для следующего кучу операций, которые могут быть хэш или Blum Blum шуб или Мерсенна или что-то.

По некоторым другим интернет-то я читал где-то:
котировка
Один хороший трюк для создания очень хорошие неслучайное но-почти-случайные биты, чтобы использовать / Dev / энтропию Рэндома семян быстрый симметричный потоковый шифр, и перенаправить его вывод к приложению, которое нуждается в этом.

Я мог бы также использовать AES в каком-то режиме счетчика.

В целях обсуждения, можно смело предположить, что CryptGenRandom на Windows, эквивалентна / разработчика / случайным образом на Linux?

Для действительно безопасных целей, я предполагаю, что я должен буду называть CryptGenRandom для каждого нового закрытого ключа Я хочу создать.
Мазки сейчас офлайн Пожаловаться на Dabs   Ответить с цитированием Мультицитирование Сообщения От Dabs Быстрый ответ на сообщение Dabs

4 апреля 2013, 10:50:49 AM   # 11
 
 
Сообщений: 46
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

На самом деле, у меня была эта идея использования часто меняющихся веб-сайтов, в том числе случайных чисел сайтов, однако, они все еще в Интернете. Независимо от того, что кто-то говорит, даже если бы это было через безопасный сеанс (SSL, TLS) он еще не пришел откуда-то еще.
Если вы только генерировать пару ключей для личного экспериментального использования или запуска коммерческого сайта, который нуждается в безопасный кошелек, плакат не означает, что вы должны или должны полагаться на внешние веб-сайты, чтобы получить случайные числа. Дело в том, что вы можете получить данные из нескольких источников (веб-сайты, цены на акции, собственные аппаратные средства / программное обеспечение), а затем "перегонять" в результате энтропии.

котировка
Случайные числа могут быть получены из хэшей всех тех, и затем включают местные (специфичные для компьютера, который вы используете) непредсказуемые номера, такие как ввод мыши, ввод с клавиатуры, ввод жесткого диска, вход операционной системы, фотографии лавовые лампы, картины неба или океана или вашего аквариума. Но это все уже предусмотрено CryptGenRandom или / разработчиком / случайным.
Таким образом, вопрос заключается в том, что вы не доверяете ПСЧ, предоставляемый операционной системой (/ Dev / случайная, CryptGenRandom) даже с истинно случайным источником энтропии высева это ??

котировка
Как насчет того, я использую быстрый ПГСЧ вместе с медленным CryptGenRandom как семя? Или я что-то вроде этого:

1. Получить 256-битное число семян из CryptGenRandom.
2. Хэш это число с SHA256
3. добавить 1 к оригинальному номеру
4. Хэш это следующий номер с SHA256.
5. Промыть, Повтор.

В основном используют CryptGenRandom в качестве основы для следующего кучу операций, которые могут быть хэш или Blum Blum шуб или Мерсенна или что-то.

По некоторым другим интернет-то я читал где-то:
котировка
Один хороший трюк для создания очень хорошие неслучайное но-почти-случайные биты, чтобы использовать / Dev / энтропию Рэндома семян быстрый симметричный потоковый шифр, и перенаправить его вывод к приложению, которое нуждается в этом.

Я мог бы также использовать AES в каком-то режиме счетчика.

В целях обсуждения, можно смело предположить, что CryptGenRandom на Windows, эквивалентна / разработчика / случайным образом на Linux?

Для действительно безопасных целей, я предполагаю, что я должен буду называть CryptGenRandom для каждого нового закрытого ключа Я хочу создать.
Можно использовать алгоритм SHA или AES-CBC-MAC или независимо от того, чтобы отогнать / состояние энтропии, но ... так что вы делать доверяет OS предоставляемого CryptGenRandom или / Dev / случайный собирать энтропию из электронного теплового шума, задержек ОС, картинок лавовых ламп, но не доверяет их кондиционированию или ПСЧУ? Зачем использовать его вообще тогда?

Я вновь итерация, что было сказано о не "прокатка самостоятельно", Но если вы хотите реализовать себя ПСЧ затем посмотреть, например, алгоритм Фортуна в Практическая криптография. Добавьте пару лавовых ламп и вы будете хорошо идти ...
Proff сейчас офлайн Пожаловаться на Proff   Ответить с цитированием Мультицитирование сообщения от Proff Быстрый ответ на сообщение Proff

5 апреля 2013, 1:50:03 AM   # 12
 
 
Сообщения: 1890
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

Я делаю доверие / DEV / случайным или CryptGenRandom. Вопрос заключается в том, что вред при добавлении дополнительных бит энтропии из других источников?

Если вы получаете какие-либо из них под угрозу (по любой причине), дополнительные биты могут помочь, не так ли?

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

1. Временная метка счетчика (инструкция RDTSC): Инструкция RDTSC процессор возвращает номер (64-битный) циклов с момента сброса.
2. QueryPerformanceCounter (функция API для Windows): В соответствии с Windows SDK, эта функция возвращает текущее значение (64-битный) счетчика высокой производительности. Это, вероятно, просто обертка для счётчика времени на большинстве систем, но возвращаемое значение может отличаться на многоядерных компьютерах. Вызов этой функции происходит медленнее, чем выполнение RDTSC.

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

Все, что я хочу сделать, это сгенерировать 256 битное число, а затем проверить, является ли это действительный закрытым ключом, и идти оттуда.
Мазки сейчас офлайн Пожаловаться на Dabs   Ответить с цитированием Мультицитирование Сообщения От Dabs Быстрый ответ на сообщение Dabs

5 апреля 2013, 9:29:39 AM   # 13
 
 
Сообщений: 46
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

Я делаю доверие / DEV / случайным или CryptGenRandom. Вопрос заключается в том, что вред при добавлении дополнительных бит энтропии из других источников?
Никакого вреда; на некоторых (большинство?) систем можно записать данные в / разработчика / случайные для этой цели.

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

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

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

1. Временная метка счетчика (инструкция RDTSC): Инструкция RDTSC процессор возвращает номер (64-битный) циклов с момента сброса.
2. QueryPerformanceCounter (функция API для Windows): В соответствии с Windows SDK, эта функция возвращает текущее значение (64-битный) счетчика высокой производительности. Это, вероятно, просто обертка для счётчика времени на большинстве систем, но возвращаемое значение может отличаться на многоядерных компьютерах. Вызов этой функции происходит медленнее, чем выполнение RDTSC.
Это оно? Нет нажатия клавиш, движение мыши, и т.д.?

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

Все, что я хочу сделать, это сгенерировать 256 битное число, а затем проверить, является ли это действительный закрытым ключом, и идти оттуда.
Просто используйте CryptGenRandom. Или, если вы не доверяете Microsoft, другой OS / реализации; Я дал вам по крайней мере одну ссылку.
Proff сейчас офлайн Пожаловаться на Proff   Ответить с цитированием Мультицитирование сообщения от Proff Быстрый ответ на сообщение Proff

5 апреля 2013, 1:56:30 PM   # 14
 
 
Сообщения: 1890
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

Это оно? Нет нажатия клавиш, движение мыши, и т.д.?

Это раз разница между нажатиями клавиш и движений мыши, в соответствии с инструкцией. Я еще не проверил исходный код, но я уверен, что он делает это, а затем некоторые из них.
Мазки сейчас офлайн Пожаловаться на Dabs   Ответить с цитированием Мультицитирование Сообщения От Dabs Быстрый ответ на сообщение Dabs

5 апреля 2013, 2:37:04 PM   # 15
 
 
Сообщения: 252
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

Опять же: не пропустите свободные сервера энтропии в Интернете:

Shevek сейчас офлайн Пожаловаться на Shevek   Ответить с цитированием Мультицитирование сообщения от Shevek Быстрый ответ на сообщение Shevek

5 апреля 2013, 4:00:11 PM   # 16
 
 
Сообщения: 1535
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

Quantum хаотичность является лучшей хаотичностью.

https://qrng.anu.edu.au/

EDIT: вот описание с сайта, очень интересные вещи:
котировка
Этот сайт предлагает настоящие случайные числа для всех в Интернете. Случайные числа генерируются в реальном времени в нашей лаборатории путем измерения квантовых флуктуаций вакуума. Вакуум описывается очень по-разному в контексте квантовой механики, чем в классическом контексте. Традиционно, вакуум рассматривается как пространство, которое является пустым материи или фотонов. Квант механически, однако, что же пространство напоминает море виртуальных частиц, появляющихся и исчезающих все время. Этот результат из-за того, что вакуум все еще обладает энергией нулевой точки. Следовательно, электромагнитное поле вакуума имеет случайные флуктуации фазы и амплитуды на всех частотах. Тщательно измеряя эти колебания, мы способны генерировать ультра-высокой пропускной способностью случайных чисел.
bitfreak! сейчас офлайн Пожаловаться на bitfreak!   Ответить с цитированием Мультицитирование сообщения от bitfreak! Быстрый ответ на сообщение bitfreak!

6 апреля 2013, 9:10:46 PM   # 17
 
 
Сообщений: 42
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

котировка
базовая точка secp256k1 не совсем 2 ^ 256
Вы имели в виду порядок кривой, не так ли? Базовая точка G, и это указывает на кривую.
Мазки, если вы хотите реализовать эллиптическую кривую криптографию, вы абсолютно необходимы bignum поддержки (по крайней мере, для secp256k1 кривых, так как он использует поле простого порядка).
Тогда вам нужно реализовать поля арифметики: сложение, вычитание, отрицание, умножение и инверсия.
После этого, вы будете осуществлять арифметические операции ЕС: сложение, вычитание, отрицание, doubiling и, наконец, точку умножения.
После того, как вы получили с. . Мул, это легко генерировать открытый ключ из частного: это точка Умножение секретного ключа и G, базовой точки кривой (а затем с некоторыми очень простой кодировкой).
Я на самом деле реализуется это сегодня в Эрл (минус кодирование часть, это на завтра).
r.willis сейчас офлайн Пожаловаться на r.willis   Ответить с цитированием Мультицитирование сообщения от r.willis Быстрый ответ на сообщение r.willis

7 апреля 2013, 5:47:14 AM   # 18
 
 
Сообщения: 1890
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

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

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

Мазки сейчас офлайн Пожаловаться на Dabs   Ответить с цитированием Мультицитирование Сообщения От Dabs Быстрый ответ на сообщение Dabs

7 апреля 2013, 5:53:15 AM   # 19
 
 
Сообщения: 154
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать закрытый ключ?

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

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



Да, как только у вас есть эллиптическая кривая код, вы просто умножить свой секретный ключ с помощью точки генератора эллиптической кривой. Открытый ключ, то просто 0x04 следует координаты х и у, 32 байт для каждого.
Zeilap сейчас офлайн Пожаловаться на Zeilap   Ответить с цитированием Мультицитирование сообщения от Zeilap Быстрый ответ на сообщение Zeilap



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW