Вернуться   Биткоин Форум > - Помощь начинающим
22 ноября 2011, 6:42:58 PM   # 1
 
 
Сообщения: 186
Цитировать по имени
цитировать ответ
по умолчанию Re: Два возможных ошибок, и, возможно, разбивку Bitcoin, и, возможно, даже ул атаки.

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


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

Шаг 1. Откройте Bitcoin 0.5, 0.5 Закрыть Bitcoin

Шаг 2. Открыть Bitcoin 0,4 Закрыть Bitcoin 0,4

Шаг 3. Открыть Bitcoin 0.5.

Он теперь показывает:

"Последний принятый блок был сгенерирован% N секунд назад."

при удержании курсора мыши на зеленую галочку в правом нижнем углу.

Ошибка 2 или запрос особенности:

Нажмите на иконку в трее должен открыть Bitcoin графический интерфейс и сделать его прийти на фронт.

Возможна разбивка:

Я заметил, как кажется, блоки, приходит сегодня на гораздо более высокой скоростью, чем за 10 минут? Может быть, я просто представить себе это, но есть некоторые доказательства, которые могли бы предложить максимально трудно уже захвачена вычислительной мощности компьютера:

По этой ссылке, максимально сложно:

https://en.bitcoin.it/wiki/Difficulty

0x00000000FFFF0000000000000000000000000000000000000000000000000000 /
0x00000000000404CB000000000000000000000000000000000000000000000000
= +16307,420938523983

В настоящее время максимальная трудно согласно этой связи является 1192497.7500895
http://blockexplorer.com/q/getdifficulty


В настоящее время трудности поэтому, кажется, превышает максимальную теоретическую трудность?!?

Означает ли это Bitcoin уже сломана?! (И должен был бы перейти к другому методу хеширования?!?)



Кроме того, что могло бы объяснить ошибку 1 он работал раньше, но теперь, кажется, для отображения% п, может быть, это C строка обычной атаки?
Skybuck сейчас офлайн Пожаловаться на Skybuck   Ответить с цитированием Мультицитирование сообщения от Skybuck Быстрый ответ на сообщение Skybuck


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


22 ноября 2011, 6:45:52 PM   # 2
 
 
Сообщения: 1358
Цитировать по имени
цитировать ответ
по умолчанию Re: Два возможных ошибок, и, возможно, разбивку Bitcoin, и, возможно, даже ул атаки.

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





Вы полностью неправильно, что связь по поводу трудностей. Перечитайте это:

Код:
Максимально возможная цель (сложность 1) определяется как 0x1d00ffff, который дает нам шестигранную цель
0x00ffff * 2 ** (8 * (0x1D - 3)) = 0x00000000FFFF0000000000000000000000000000000000000000000000000000

Таким образом, [б] трудность в 0x1b0404cb [/ b], поэтому:

0x00000000FFFF0000000000000000000000000000000000000000000000000000 /
0x00000000000404CB000000000000000000000000000000000000000000000000
= +16307,420938523983

Он не говорит Макс трудность заключается в 16307. Это просто пример.
SgtSpike сейчас офлайн Пожаловаться на SgtSpike   Ответить с цитированием Мультицитирование сообщения от SgtSpike Быстрый ответ на сообщение SgtSpike

22 ноября 2011, 6:47:26 PM   # 3
 
 
Сообщения: 1386
Цитировать по имени
цитировать ответ
по умолчанию Re: Два возможных ошибок, и, возможно, разбивку Bitcoin, и, возможно, даже ул атаки.

По этой ссылке, максимально сложно:

https://en.bitcoin.it/wiki/Difficulty

0x00000000FFFF0000000000000000000000000000000000000000000000000000 /
0x00000000000404CB000000000000000000000000000000000000000000000000
= +16307,420938523983

Это не то, что статья появляется сказать. Похоже, что трудности 16307 соответствует примеру, кодирующего они дали от 0x1b0404cb, не то, что это был максимум. От расчета манжеты сказали бы максимальное затруднение что-то около 2 ^ 224, что является справедливым немного больше, чем 16307.
casascius сейчас офлайн Пожаловаться на casascius   Ответить с цитированием Мультицитирование сообщения от casascius Быстрый ответ на сообщение casascius

22 ноября 2011, 6:52:32 PM   # 4
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Два возможных ошибок, и, возможно, разбивку Bitcoin, и, возможно, даже ул атаки.

Если у вас есть 10 сообщений ... читать дальше и размещать меньше. 

Время блокировки усредняет 10 минут. я видел <1 минута блоки и я видел через 3 часа блок. Я уверен, что это не те верхние и нижние границы того, что наблюдается либо.

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

http://dot-bit.org/tools/nextDifficulty.php
DeathAndTaxes сейчас офлайн Пожаловаться на DeathAndTaxes   Ответить с цитированием Мультицитирование сообщения от DeathAndTaxes Быстрый ответ на сообщение DeathAndTaxes

22 ноября 2011, 6:54:51 PM   # 5
 
 
Сообщения: 186
Цитировать по имени
цитировать ответ
по умолчанию Re: Два возможных ошибок, и, возможно, разбивку Bitcoin, и, возможно, даже ул атаки.

Хорошо, спасибо, ребята, указывая мой неправильно

Ok обновление ошибка 1:

Он теперь отображает:

"Последний принятый блок был создан 29 секунд назад."

Я удивляюсь, почему это было первое отображение% п, а не просто ноль (или мусор по этому вопросу, если он не был инициализирован)? Я волнуюсь немного, что это может привести к своего рода атаки, но так как это, вероятно, используется только локально и не может зависеть от сетевого трафика может быть, угроза низкой до несуществующей (код должен быть рассмотрен, чтобы увидеть, если он это годный для использования), но это не беспокоиться мне только немного, не так много, чтобы мои монеты украдены, так как у меня нет, но больше для переполнения буфера возможности, ведущие к атаке системы, разрушая мою установку программного обеспечения!
Skybuck сейчас офлайн Пожаловаться на Skybuck   Ответить с цитированием Мультицитирование сообщения от Skybuck Быстрый ответ на сообщение Skybuck

22 ноября 2011, 7:11:28 PM   # 6
 
 
Сообщения: 186
Цитировать по имени
цитировать ответ
по умолчанию Re: Два возможных ошибок, и, возможно, разбивку Bitcoin, и, возможно, даже ул атаки.

Ошибка, кажется, приходит из этого фрагмента кода из файла ЦСИ \ Qt \ bitcoingui.cpp:

Строка 405:

недействительный BitcoinGUI :: setNumBlocks (кол-ИНТ)
{
    если (! clientModel)
        вернуть;
    ИНТ initTotal = clientModel->getNumBlocksAtStartup ();
    ИНТ всего = clientModel->getNumBlocksOfPeers ();
    QString подсказки;

    если (кол < Всего)
    {
        progressBarLabel->SetVisible (истина);
        индикатор->SetVisible (истина);
        индикатор->setMaximum (всего - initTotal);
        индикатор->SetValue (кол - initTotal);
        подсказка = Tr ("Скачано% 1% 2 блоков истории транзакций.") .arg (количество) .arg (всего);
    }
    еще
    {
        progressBarLabel->SetVisible (ложь);
        индикатор->SetVisible (ложь);
        подсказка = Tr ("Загруженные% 1 блоков истории транзакций.") .arg (счет);
    }

    QDateTime Теперь = QDateTime :: currentDateTime ();
    QDateTime lastBlockDate = clientModel->getLastBlockDate ();
    INT = lastBlockDate.secsTo сек (в настоящее время);
    QString текст;

    // Представляет время от последнего сгенерированного блока в читаемом тексте человека
    если (сек < 60)
    {
        текст = тр ("% Н секунд (ы) назад","", Сек);
    }
    иначе если (сек < 60 * 60)
    {
        текст = тр ("% П минута (ы) назад","", Сек / 60);
    }
    иначе если (сек < 24 * 60 * 60)
    {
        текст = тр ("% Н час (ы) назад","", Сек / (60 * 60));
    }
    еще
    {
        текст = тр ("% Н день (лет) назад","", Сек / (60 * 60 * 24));
    }

    // Задаем состояние значок: спиннинг, если догоняет, отметьте в противном случае
    если (сек < 30 * 60)
    {
        подсказка = Tr ("Своевременно") + QString ("\ п") + Подсказка;
        labelBlocksIcon->setPixmap (QIcon (": / иконки / синхронизированные") .pixmap (STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE));
    }
    еще
    {
        подсказка = Tr ("Догонять...") + QString ("\ п") + Подсказка;
        labelBlocksIcon->setMovie (syncIconMovie);
        syncIconMovie->Начало();
    }

    Подсказка + = QString ("\ п");
    Подсказка + = тр ("Последний принятый блок был создан 1%.") .arg (текст);

    labelBlocksIcon->setToolTip (подсказка);
    progressBarLabel->setToolTip (подсказка);
    индикатор->setToolTip (подсказка);
}

Пока я не нашел "тр ()" рутина, которая apperently делает что-то с этими параметрами и может быть источником ошибки. Казалось бы, принят "сек" параметр, который может быть равен нулю, мусор или не инициализирован.

Это, кажется, исходит из: INT ИКС = lastBlockDate.secsTo (сейчас);

Возможно lastBlockDate также не инициализирован или содержит мусор я еще не знаю.
Skybuck сейчас офлайн Пожаловаться на Skybuck   Ответить с цитированием Мультицитирование сообщения от Skybuck Быстрый ответ на сообщение Skybuck

22 ноября 2011, 7:17:22 PM   # 7
 
 
Сообщения: 186
Цитировать по имени
цитировать ответ
по умолчанию Re: Два возможных ошибок, и, возможно, разбивку Bitcoin, и, возможно, даже ул атаки.

Процедура тра кажется интервал QT подпрограмма (GUI Framework), который Биткойн переключается в 0,5:

http://doc.qt.nokia.com/qq/qq03-swedish-chef.html

Вот краткое описание этого из этой ссылки:

"
тр () механизм Qt для интернационализации легко понять, проста в использовании и легко использования. В этой статье приведены некоторые советы, чтобы убедиться, что все видимых пользователю струн приложения пройти через тр (), и что LUPDATE находит их всех. Разработчики приложений Одноязычные не остались: В статье также говорится о QRegExp, XMLИ шведский.
"

^ Звуки своего рода комплекс, так что, возможно, есть некоторая сочная ошибка в нем, чтобы использовать
Skybuck сейчас офлайн Пожаловаться на Skybuck   Ответить с цитированием Мультицитирование сообщения от Skybuck Быстрый ответ на сообщение Skybuck

22 ноября 2011, 7:42:25 PM   # 8
 
 
Сообщения: 186
Цитировать по имени
цитировать ответ
по умолчанию Re: Два возможных ошибок, и, возможно, разбивку Bitcoin, и, возможно, даже ул атаки.

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

http://qt.nokia.com/downloads/sdk-windows-cpp

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

Минимальный размер для установки, кажется, 200 МБ для всего источников, и я не уверен, что установщик будет делать в моей системе, поэтому я собираюсь прервать сейчас

Однако есть еще одна возможность, чтобы попытаться найти функцию TR, которая apperently статическая функция / процедура где-то ... с помощью онлайн-хранилище:

http://qt.gitorious.org/qt/qt/trees/4.8/src

Это, кажется, не имеют функции источника поиска, но, возможно, я повезти и найти функцию TR-то

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

Так теперь мой поиск останавливается здесь

(Кроме того, я не уверен, какая версия QT Bitcoin 0.5 был составлен с, но сейчас я буду считать последнюю версию)

Может быть, мне не нужно искать источник, чтение документации о TR в настоящее время:

http://doc.qt.nokia.com/stable/i18n-source-translation.html

Хорошо читать, я думаю, TR означает "перевод",

Это способ для программиста, чтобы указать, что параметры, передаваемые TR может / может быть заменен специальным инструментом обработки источника называется "LUPDATE",

LUPDATE apperently ищет некоторые файлы перевода и заменяет функцию TR вызовы со строками перевода языка.

Еще немного расплывчато, что это именно делает, поэтому дальнейшее рассмотрение TR или, возможно, даже LUPDATE требуется.

Оглядываясь назад на код, возможно, проблема с этой линией и не столько секунд, так что, как представляется, правильно инициализирован:

тр ("Последний принятый блок был создан 1%.") .arg (текст);

Существует еще одна вещь в игре здесь: .arg (текст) спецификатор ... не совсем уверен, что это делает ...% 1 выглядит как индекс параметра спецификатора.

Это, наверное, какой-то макро / функциональность или индикатора, чтобы заменить% 1 с текстом аргумента.

Моя лучшая ставка этот кусок кода выполняется для создания текстовой строки во время выполнения:

    еще
    {
        текст = тр ("% Н день (лет) назад","", Сек / (60 * 60 * 24));
    }

Мне кажется, своего рода загадочного, почему текст не просто заменяется на некоторое значение ... расчета: сек / (60 * 60 * 24), кажется, производят несколько действительное число, даже если бы секунд содержать мусор ...

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

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

22 ноября 2011, 8:02:36 PM   # 9
 
 
Сообщения: 186
Цитировать по имени
цитировать ответ
по умолчанию Re: Два возможных ошибок, и, возможно, разбивку Bitcoin, и, возможно, даже ул атаки.

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

"
QString QObject :: тр (Const символ * sourceText, Const символ * неоднозначности = 0, Int N = -1) [статические]
 
Возвращает переведенную версию sourceText, необязательно на основе строки и многозначных значениях п для строк, содержащих множественные; в противном случае возвращается sourceText себя, если нет необходимости в переводе строки не доступна.
 
Пример:
  аннулируются MainWindow :: createMenus ()
 {
     FileMenu = Menubar () ->addMenu (тр ("&файл"));
     ...
Если же sourceText используется в различных ролях в том же контексте, дополнительные идентификации строки могут быть переданы в неоднозначности (0 по умолчанию). В Qt 4.4 и более ранних версий, это был предпочтительный способ передать комментарии к переводчикам.
 
Пример:
  MyWindow :: MyWindow ()
 {
     QLabel * senderLabel = новый QLabel (тр ("Имя:"));
     QLabel * recipientLabel = новый QLabel (тр ("Имя:", "получатель"));
     ...
См Написание исходного кода для перевода для детального описания механизмов перевода Qt в целом, так и в разделе многозначной, для получения информации о неоднозначности.
 
Внимание: Этот метод возвратный только если все переводчики установлены перед вызовом этого метода. Установка или удаление переводчиков во время перевода не поддерживается. Это, вероятно, приведет к аварии или другого нежелательного поведения.
 
Смотрите также trUtf8 (), QApplication :: перевод (), QTextCodec :: setCodecForTr (), и Интернационализация с Qt.
"

Так что, похоже, находится в классе QObject.

и QString, кажется, возвращаемые напечатал ... так что класс также может быть проверен на vunerabilities
Skybuck сейчас офлайн Пожаловаться на Skybuck   Ответить с цитированием Мультицитирование сообщения от Skybuck Быстрый ответ на сообщение Skybuck

22 ноября 2011, 8:15:43 PM   # 10
 
 
Сообщения: 186
Цитировать по имени
цитировать ответ
по умолчанию Re: Два возможных ошибок, и, возможно, разбивку Bitcoin, и, возможно, даже ул атаки.

qobject.h и qobject.cpp можно найти здесь:

http://qt.gitorious.org/qt/qt/trees/4.8/src/corelib/kernel

qobject.h имеет некоторые интересные значения по умолчанию для параметров:

"
124 #ifdef QDOC  
125 статического QString тр (Const символ * sourceText, Const символ * комментарий = 0, Int N = -1);  
126 статического QString trUtf8 (Const символ * sourceText, Const символ * комментарий = 0, Int N = -1);  
127 виртуального Const QMetaObject * метаобъект () Const;  
128 статическая Const QMetaObject staticMetaObject;  
129 #endif  
130 #ifdef QT_NO_TRANSLATION  
131 статического QString тр (Const символ * sourceText, Const символ *, Int)  
132 {вернуть QString :: fromLatin1 (sourceText); }  
133 статического QString тр (Const символ * sourceText, Const символ * = 0)  
134 {вернуть QString :: fromLatin1 (sourceText); }  
135 #ifndef QT_NO_TEXTCODEC  
136 статического QString trUtf8 (Const символ * sourceText, Const символ *, Int)  
137 {вернуть QString :: fromUtf8 (sourceText); }  
138 статического QString trUtf8 (Const символ * sourceText, Const символ * = 0)  
139 {вернуться QString :: fromUtf8 (sourceText); }  
140 #endif  
141 #endif // QT_NO_TRANSLATION
"

Теперь будем изучать файл CPP

Хмм файл CPP, кажется, не содержат реализацию для TR, я не знаю, почему, может быть, TR просто место держатель / подделка в пути и заменяется инструментом LUPDATE.

Я также не уверен, которые определяют применяется здесь, там, кажется, какой-то код встраивается в декларации, так что может быть выполнена, очень возможно, это будет выполняться:

вернуться QString :: fromLatin1 (sourceText);

Но, наверное, нет ... Я думаю, что пришло время взглянуть на LUPDATE, или, может быть, TR реализована где-то еще? Хм ...

Мой лучший выбор на данный момент является LUPDATE генерирует некоторый код для TR или заменяет вызовы TR с чем-то ... вопрос в том, что заменить его?
Skybuck сейчас офлайн Пожаловаться на Skybuck   Ответить с цитированием Мультицитирование сообщения от Skybuck Быстрый ответ на сообщение Skybuck

22 ноября 2011, 8:31:24 PM   # 11
 
 
Сообщения: 186
Цитировать по имени
цитировать ответ
по умолчанию Re: Два возможных ошибок, и, возможно, разбивку Bitcoin, и, возможно, даже ул атаки.

До сих пор это кажется LUPDATE это утилита командной строки Linux, я не уверен, если он доступен для окон.

Это описание выглядит следующим образом:

"
LUPDATE
 
--------------------------------------------------------------------------------

LUPDATE (1) LUPDATE (1)




 
ИМЯ
       LUPDATE - файлы обновления перевода Qt Linguist


 
СИНТАКСИС
       LUPDATE [опция] Проект-файл
       LUPDATE [опция] источник-файлы -TS тс-файлы


 
ОПИСАНИЕ
       Эта страница описывает инструмент обновления Qt Linguist для инструментария Qt GUI.
       LUPDATE читает файл QMAKE / tmake проекта (.pro-файл), находит транс-
       latable строка в указанных исходных файлах, заголовки и интерфейсы,
       и обновляет файлы перевода (.ts файлы), указанные в нем.
       файлы переводы предоставляются переводчик, который использует Qt лингвист
       читать файлы и вставлять переводы.

       Формат ts-файл представляет собой простой для восприятия человека формат XML, который может быть
       используется с системами контроля версий, если это необходимо.



 
ОПЦИИ
       -помочь Отображение использования и выхода.

       -noobsolete
              Отбросьте все устаревшие строки.

       -подробный
              Объясните, что это делается.

       -версия
              Отображает версию LUPDATE и выхода.


 
ПРИМЕНЕНИЕ
       Вот пример .pro файл, который может быть предоставлен LUPDATE:

           HEADERS = funnydialog.h \
                             wackywidget.h
           ИСТОЧНИКИ = funnydialog.cpp \
                             main.cpp \
                             wackywidget.cpp
           ФОРМЫ = fancybox.ui
           ПЕРЕВОДЫ = gnomovision_dk.ts \
                             gnomovision_fi.ts \
                             gnomovision_no.ts \
                             gnomovision_se.ts

       При запуске LUPDATE на этом файле проекта, переводимые строки в
       все файлы, перечисленные в заголовках, источники и формы записи будут
       положить в файлы перевода, перечисленных в записи ПЕРЕВОДЫ. предыдущий
       переводы будут повторно использоваться, насколько это возможно, и переведенные строки
       которые исчезли из источника файлы помечаются как устаревшие.

       LUPDATE также может быть вызвана с помощью списка C ++ исходных файлов, файлы .ui
       и .ts файлы:

           LUPDATE * .cpp * .h * .ui -TS gnomovision_dk.ts


 
СМОТРИТЕ ТАКЖЕ
       lrelease (1) и http://doc.trolltech.com/i18n.html



Trolltech AS 18 октября 2001 LUPDATE (1)
"

Так что это на самом деле, кажется, какой-то замена TR инструмент ...

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

22 ноября 2011, 8:35:34 PM   # 12
 
 
Сообщения: 186
Цитировать по имени
цитировать ответ
по умолчанию Re: Два возможных ошибок, и, возможно, разбивку Bitcoin, и, возможно, даже ул атаки.

Я первым собираюсь изучить / исследовать .arg (текст) спецификатор.

Это более вероятно, причина ошибки, так что, возможно, LUPDATE не имеет ничего общего с ним и может быть проигнорирована / пропускается, но все еще может быть интересно посмотреть, если LUPDATE делает что-нибудь странное, которая может быть использована

Но теперь мой лучший выбор это на самом деле QString.Arg (..? ..) по вине которой может привести к ошибке.

Я случайно увидел, что .arg, вероятно, является метод из QString, поэтому пропуск LUPDATE и расследование QString может сэкономить время и, возможно, будет легче сделать.

Так сначала looksy в QString, чтобы увидеть, если она является основной причиной ошибки!
Skybuck сейчас офлайн Пожаловаться на Skybuck   Ответить с цитированием Мультицитирование сообщения от Skybuck Быстрый ответ на сообщение Skybuck

22 ноября 2011, 8:40:30 PM   # 13
 
 
Сообщения: 1358
Цитировать по имени
цитировать ответ
по умолчанию Re: Два возможных ошибок, и, возможно, разбивку Bitcoin, и, возможно, даже ул атаки.

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

22 ноября 2011, 8:44:47 PM   # 14
 
 
Сообщения: 186
Цитировать по имени
цитировать ответ
по умолчанию Re: Два возможных ошибок, и, возможно, разбивку Bitcoin, и, возможно, даже ул атаки.

QString можно найти здесь:

http://qt.gitorious.org/qt/qt/trees/4.8/src/corelib/tools

Теперь он собирается получить интересно!

Погружение в QString = D

Изучение QString.h первой:

Одна из этих обычных пар, кажется, в игре,

Это либо эти из них:

132 QString Arg (qlonglong а, Int fieldwidth = 0, Int база = 10,  
133 Const QChar &FillChar = QLatin1Char (»«)) константный Q_REQUIRED_RESULT;  
134 QString Arg (qulonglong а, Int fieldwidth = 0, Int база = 10,  
135 Const QChar &FillChar = QLatin1Char (»«)) константный Q_REQUIRED_RESULT;  
136 QString Arg (долго, Int fieldwidth = 0, Int база = 10,  
137 Const QChar &FillChar = QLatin1Char (»«)) константный Q_REQUIRED_RESULT;  
138 QString Arg (ULong а, INT fieldwidth = 0, Int база = 10,  
139 Const QChar &FillChar = QLatin1Char (»«)) константный Q_REQUIRED_RESULT;  
140 QString Arg (Int А, Int fieldWidth = 0, Int база = 10,  
141 Const QChar &FillChar = QLatin1Char (»«)) константный Q_REQUIRED_RESULT;  
142 QString Arg (UINT а, Int fieldWidth = 0, Int база = 10,  
143 Const QChar &FillChar = QLatin1Char (»«)) константный Q_REQUIRED_RESULT;  
144 QString Arg (короткий, Int fieldWidth = 0, Int база = 10,  
145 Const QChar &FillChar = QLatin1Char (»«)) константный Q_REQUIRED_RESULT;  
146 QString Arg (USHORT а, INT fieldWidth = 0, Int база = 10,  
147 Const QChar &FillChar = QLatin1Char (»«)) константный Q_REQUIRED_RESULT;  
148 QString Arg (двойной а, INT fieldWidth = 0, символ FMT = 'г', Int Prec = -1,  
149 Const QChar &FillChar = QLatin1Char (»«)) константный Q_REQUIRED_RESULT;  
150 QString Arg (обугливается а, INT fieldWidth = 0,  
151 Const QChar &FillChar = QLatin1Char (»«)) константный Q_REQUIRED_RESULT;  
152 QString Arg (QChar, а, INT fieldWidth = 0,  
153 Const QChar &FillChar = QLatin1Char (»«)) константный Q_REQUIRED_RESULT;  
154 QString Arg (Const QString &а, ИНТ fieldWidth = 0,  
155 Const QChar &FillChar = QLatin1Char (»«)) константный Q_REQUIRED_RESULT;  
156 QString Arg (Const QString &a1, Const QString &а2) сопзЬ Q_REQUIRED_RESULT;  
157 QString Arg (Const QString &a1, Const QString &a2, Const QString &а3) сопзЬ Q_REQUIRED_RESULT;  
158 QString Arg (Const QString &a1, Const QString &a2, Const QString &a3,  
159 Const QString &а4) сопзЬ Q_REQUIRED_RESULT;  
160 QString Arg (Const QString &a1, Const QString &a2, Const QString &a3,  
161 Const QString &a4, Const QString &а5) сопзЬ Q_REQUIRED_RESULT;  
162 QString Arg (Const QString &a1, Const QString &a2, Const QString &a3,  
163 Const QString &a4, Const QString &a5, Const QString &а6) сопзЬ Q_REQUIRED_RESULT;  
164 QString Arg (Const QString &a1, Const QString &a2, Const QString &a3,  
165 Const QString &a4, Const QString &a5, Const QString &a6,  
166 Const QString &а7) сопзЬ Q_REQUIRED_RESULT;  
167 QString Arg (Const QString &a1, Const QString &a2, Const QString &a3,  
168 Const QString &a4, Const QString &a5, Const QString &a6,  
169 Const QString &a7, Const QString &а8) сопзЬ Q_REQUIRED_RESULT;  
170 QString Arg (Const QString &a1, Const QString &a2, Const QString &a3,  
171 Const QString &a4, Const QString &a5, Const QString &a6,  
172 Const QString &a7, Const QString &a8, Const QString &а9) сопзЬ Q_REQUIRED_RESULT;

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

328 статического QString fromAscii (Const символ *, Int размер = -1);  
329 статического QString fromLatin1 (Const символ *, Int размер = -1);  
330 статического QString fromUtf8 (Const символ *, Int размер = -1);  
331 статического QString fromLocal8Bit (Const символ *, Int размер = -1);  
332 статического QString fromUtf16 (Const USHORT *, Int размер = -1);  
333 статического QString fromUcs4 (Const UINT *, Int размер = -1);  
334 статического QString fromRawData (Const QChar *, Int размер);  

Судя по ней с первой же возможности она также кажется:

класс QLatin1Char играет булочку, я не совсем уверен, что это, но это, кажется, вперед декларация.

Это действительно опережающее объявление, которое позже объявлено дополнительно его код находится в том же файле и:


654 Класс Q_CORE_EXPORT QLatin1String  
655 {  
656 общественности:  
657 рядных явное QLatin1String (Const символ * s): символы (s) {}  
658 рядный QLatin1String &Оператор = (Const QLatin1String &Другие)  
659 {си = other.chars; вернуться * это; }  
660
661 рядный Const символ * latin1 () сопзЬ {вернуть символы; }  
662  
663 встроенный оператор BOOL == (Const QString &с) Const  
664 {геЬигп сек == * это; }  
665 встроенный оператор BOOL! = (Const QString &с) Const  
666 {вернуться S = * это!; }  
оператор BOOL 667 рядного>(Const QString &с) Const  
668 {возвращение s < *это; }  
оператор BOOL +669 рядный<(Const QString &с) Const  
670 {возвращение s > *это; }  
оператор BOOL 671 рядного>= (Const QString &с) Const  
672 {возвращение ей <= * Это; }  
оператор BOOL +673 рядный<= (Const QString &с) Const  
674 {возвращение s >= * Это; }  
675
676 рядный QT_ASCII_CAST_WARN оператор BOOL == (Const символ * s) сопзЬ  
677 {вернуться QString :: fromAscii (s) == * это; }  
678 встроенного оператор QT_ASCII_CAST_WARN Его! = (Const символ * s) сопзЬ  
679 {вернуться QString :: fromAscii (s) = * это!; }  
680 встроенный оператор QT_ASCII_CAST_WARN BOOL<(Const символ * с) Const  
681 {вернуться QString :: fromAscii (s) > *это; }  
682 встроенный оператор QT_ASCII_CAST_WARN BOOL>(Const символ * с) Const  
683 {вернуться QString :: fromAscii (s) < *это; }  
684 встроенный оператор QT_ASCII_CAST_WARN BOOL<= (Const символ * с) Const  
685 {вернуться QString :: fromAscii (s) >= * Это; }  
686 встроенный оператор QT_ASCII_CAST_WARN BOOL>= (Const символ * с) Const  
687 {вернуться QString :: fromAscii (s) <= * Это; }  
688 частный:  
689 Const символ * символы;  
690};

Звезды / asterixes (*) всегда весело, возможно, у него есть указатель ошибка где-то, но сейчас я буду считать этот крошечный класс безупречен ...

Ok далее examinating в ARG процедуры, я не уверен, что это такое: Const Q_REQUIRED_RESULT;

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

Так что время, чтобы идти исследовать QString.cpp!
Skybuck сейчас офлайн Пожаловаться на Skybuck   Ответить с цитированием Мультицитирование сообщения от Skybuck Быстрый ответ на сообщение Skybuck

22 ноября 2011, 9:20:32 PM   # 15
 
 
Сообщения: 186
Цитировать по имени
цитировать ответ
по умолчанию Re: Два возможных ошибок, и, возможно, разбивку Bitcoin, и, возможно, даже ул атаки.

QString.cpp довольно большой, это примерно 8000 до 9000 строки коды, вводное описание этого является:

431 \ класс QString  
432 \ возвратный  
433
434 \ краток Класс QString содержит строку символов Unicode.  
435  
436 \ внутригрупповых инструментов  
437 \ ингруппы общей  
438 \ ингруппа строка обработки  
439
440 QString хранит строку 16-бит \ л {QChar} с, где каждый QChar  
441 соответствует один символ Unicode 4.0. (символы Unicode  
442 с кодовыми значениями выше 65535 сохраняются с помощью суррогатных пар,  
443 т.е. два последовательных \ л {QChar} с.)  
444
445 \ л {Unicode} является международным стандартом, который поддерживает большинство из  
446 системы письма, используемых сегодня. Он является надстройкой US-ASCII (ANSI  
447 X3.4-1986) и Latin-1 (ISO 8859-1), и все US-ASCII / Latin-1  
448 символов доступны на один и те же кодовых позиции.  
449
450 За кулисы, QString использует \ л {неявного обмен}  
451 (копирование при записи), чтобы уменьшить потребление памяти и, чтобы избежать ненужного  
452 копирования данных. Это также помогает уменьшить присущие накладные расходы  
453 хранения 16-битных символов вместо 8-битных символов.  
454
455 В дополнение к QString, Qt также предоставляет класс QByteArray к  
456 магазина сырых байт и традиционный 8-бит «\\ 0 'байтами.  
457 Для большинства целей, QString класс вы хотите использовать. это  
458 используется во API Qt, и поддержка Unicode гарантирует, что  
459 Ваши приложения будут легко перевести, если вы хотите расширить  
460 рынок вашего приложения в какой-то момент. Два основных случая, когда  
461 QByteArray подходит, когда вы должны хранить в двоичном формате  
462 данных, а также, когда критично сохранение памяти (например, с  
463 \ л {Qt для встраиваемых Linux}).

(Выше было также класс QCharRef, который может или не может использовать)

Таким образом, с подвигом точки зрения, это очень хорошая новость.

Unicode еще несколько экспериментальный / сложный и всегда в стадии разработки / расширения ........ файл / класс довольно большой ... так высоко вероятно капот некоторых оставшихся ошибок здесь и там ...

Теперь вопрос в том, где находятся ошибки и мы не повезти для .arg вещи?! = D

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

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

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

Мне кажется, весьма вероятно, что существует, по крайней мере, какая-то ошибка в этих рутин, который вызывает% п будет отображаться вместо чего-то другого, как число или так:


6374 Struct ArgEscapeData  
6375 {  
6376 INT min_escape; // низкий порядковый номер побег  
6377 INT вхождений; // количество вхождений с наименьшим номером последовательности побег  
6378 INT locale_occurrences; // количество вхождений наименьшим порядковым номером убегания, что  
6379 // содержит 'L'  
6380 INT escape_len; // общая длина управляющих последовательностей, которые будут заменены  
6381};  
6382  
6383 статическая ArgEscapeData findArgEscapes (Const QString &s)  
6384 {  
6385 Const QChar * uc_begin = s.unicode ();  
6386 Const QChar * uc_end = uc_begin + s.length ();  
6387  
6388 ArgEscapeData д;  
6389  
6390 d.min_escape = INT_MAX;  
6391 d.occurrences = 0;  
6392 d.escape_len = 0;  
6393 d.locale_occurrences = 0;  
6394  
6395 Const QChar * с = uc_begin;  
6396 в то время как (с! = Uc_end) {  
6397 в то время как (с! = Uc_end && c->юникода (!) = '%')  
6398 C ++;  
6399  
6400, если (с == uc_end)  
6401 перерыва;  
6402 Const QChar * escape_start = с;  
6403, если (C ++ == uc_end)  
6404 перерыва;  
6405  
6406 BOOL locale_arg = ложь;  
6407, если (c->Юникода () == 'L') {  
6408 locale_arg = TRUE;  
6409, если (C ++ == uc_end)  
6410 перерыва;  
6411}  
6412  
6413, если (c->digitValue () == -1)  
6414 продолжаются;  
6415  
6416 INT побег = c->digitValue ();  
6417 C ++;  
6418  
6419, если (с! = Uc_end && c->digitValue ()! = -1) {  
6420 побега = (10 * побег) + C->digitValue ();  
6421 C ++;  
6422}  
6423  
6424, если (побег > d.min_escape)  
6425 продолжаются;  
6426  
6427, если (побег < d.min_escape) {  
6428 d.min_escape = бежать;  
6429 d.occurrences = 0;  
6430 d.escape_len = 0;  
6431 d.locale_occurrences = 0;  
6432}  
6433  
6434 ++ d.occurrences;  
6435, если (locale_arg)  
6436 ++ d.locale_occurrences;  
6437 d.escape_len + = с - escape_start;  
6438}  
6439 возвращение д;  
6440}  
6441
6442 статического QString replaceArgEscapes (Const QString &s, Const ArgEscapeData &д, INT field_width,  
6443 Const QString &Арг, Const QString &круп, Const QChar &FillChar = QLatin1Char (»«))  
6444 {  
6445 Const QChar * uc_begin = s.unicode ();  
6446 Const QChar * uc_end = uc_begin + s.length ();  
6447  
6448 INT abs_field_width = Qabs (field_width);  
6449 INT result_len = s.length ()  
6450 - d.escape_len  
6451 + (d.occurrences - d.locale_occurrences)  
6452 * Qmax (abs_field_width, arg.length ())  
6453 + d.locale_occurrences  
6454 * Qmax (abs_field_width, larg.length ());  
6455  
6456 QString результат (result_len, Qt :: Неинициализированная);  
6457 QChar * result_buff = (QChar *) result.unicode ();  
6458  
6459 QChar * гс = result_buff;  
6460 Const QChar * с = uc_begin;  
6461 INT repl_cnt = 0;  
6462 в то время как (с! = Uc_end) {  
6463 / * Мы не должны проверить, если мы бежим от конца строки с с,  
6464, потому что до тех пор, как d.occurrences > 0 мы знаем, что есть действительный побег  
6465 последовательности. * /  
6466  
6467 Const QChar * text_start = с;  
6468  
6469 в то время как (C->юникода (!) = '%')  
6470 C ++;  
6471  
6472 Const QChar * escape_start = C ++;  
6473  
6474 BOOL locale_arg = ложь;  
6475, если (c->Юникода () == 'L') {  
6476 locale_arg = TRUE;  
6477 C ++;  
6478}  
6479  
6480 INT побег = c->digitValue ();  
6481, если (побег! = -1) {  
6482, если (с + 1! = Uc_end && (С + 1) ->digitValue ()! = -1) {  
6483 побег = (10 * побега) + (с + 1) ->digitValue ();  
6484 C ++;  
6485}  
6486}  
6487  
6488, если (побег! = D.min_escape) {  
6489 тетсру (гс, text_start, (с - text_start) * SizeOf (QChar));  
6490 гс + = с - text_start;  
6491}  
6492 еще {  
6493 C ++;  
6494  
6495 тетсру (гс, text_start, (escape_start - text_start) * SizeOf (QChar));  
6496 гс + = escape_start - text_start;  
6497
6498 UINT pad_chars;  
6499, если (locale_arg)  
6500 pad_chars = Qmax (abs_field_width, larg.length ()) - larg.length ();  
6501 еще  
6502 pad_chars = Qmax (abs_field_width, arg.length ()) - arg.length ();  
6503  
6504, если (field_width > 0) {// влево проложенный  
6505 для (UINT = 0; я < pad_chars; ++ я)  
6506 (гс ++) ->Юникода () = fillChar.unicode ();  
6507}  
6508  
6509, если (locale_arg) {  
6510 тетсру (гс, larg.unicode (), larg.length () * SizeOf (QChar));  
6511 гс + = larg.length ();  
6512}  
6513 еще {  
6514 тетсру (гс, arg.unicode (), arg.length () * SizeOf (QChar));  
6515 гс + = arg.length ();  
6516}  
6517  
6518, если (field_width < 0) {// Право проложенный  
6519 для (UINT = 0; я < pad_chars; ++ я)  
6520 (гс ++) ->Юникода () = fillChar.unicode ();  
6521}  
6522  
6523, если (++ repl_cnt == d.occurrences) {  
6524 тетсру (гс, с, (uc_end - с) * SizeOf (QChar));  
6525 гс + = uc_end - с;  
6526 Q_ASSERT (гс - result_buff == result_len);  
6527 с = uc_end;  
6528}  
6529}  
6530}  
6531 Q_ASSERT (гс == result_buff + result_len);  
6532  
6533 Возвращаемый результат;  
6534}  
6535  
6536 / *!  
6537 Возвращает копию этой строки с наименьшим порядковым номером места маркером  
6538 заменена строкой \ в а, то есть, \ с% 1, \ с% 2, ..., \ C% 99.  
6539  
6540 \ а fieldWidth определяет минимальный объем пространства, аргумент \ а  
6541 займем. Если \ A A требует меньше мест, чем \ а fieldWidth, это  
6542 дополняется до \ а fieldWidth с характером \ а FillChar. положительный  
6543 \ а fieldWidth производит выравнивание по правому краю текста. Отрицательная \ а fieldWidth  
6544 производит по левому краю текста.  
6545  
6546 В этом примере показано, как можно создать строку \ статус с для  
6547 отчетности прогресса при обработке списка файлов:  
6548  
6549 \ сниппет DOC / SRC / сниппеты / QString / main.cpp 11  
6550  
6551 Во-первых, \ с аг (я) заменяет \ с% 1. Тогда \ с Arg (всего) заменяет \ с  
6552% 2. Наконец, \ с Arg (Filename) заменяет \ C% 3.  
6553  
6554 Одним из преимуществ использования Arg () над Sprintf () является то, что порядок следования  
6555 пронумерованных маркеры место может измениться, если строки приложения являются  
6556 переведен на другие языки, но каждый аргумент () будет по-прежнему заменить  
6557 с наименьшим номером unreplaced маркер места, независимо от того, где это  
появляется 6558. Кроме того, если маркер места \ с% я больше одного раза в  
6559 строка, Arg () заменяет все из них.  
6560  
6561 Если нет unreplaced маркера места, оставшегося, предупреждающее сообщение  
6562 выводится и результат не определен. номера Место маркер должен быть  
6563 в диапазоне от 1 до 99.  
6564 * /  
6565 QString QString :: Arg (Const QString &а, ИНТ fieldWidth, константный QChar &FillChar) сопзЬ  
6566 {  
6567 ArgEscapeData г = findArgEscapes (* это);  
6568  
6569, если (d.occurrences == 0) {  
6570 qWarning ("QString :: агд: Аргумент отсутствует:% s,% s", toLocal8Bit (). (данные),  
. 6571 (a.toLocal8Bit) данных ());  
6572 возвращение * это;  
6573}  
6574 возврата replaceArgEscapes (* это, д, fieldWidth, а, а, FillChar);  
6575}


Видя буфера на основе этих стеки или, возможно, кучи на основе переменного буфера, смелые высказывания в комментариях о "будучи уверенным," лол ... и memcopies, а также проверить некоторое здравомыслие Утверждает собираемся сделать некоторые эксплуатируют писатель / исследователь собираются водяные зубов

Код действительно выглядит довольно сложную поэтому высокая likelyness быть ошибкой, там

Было бы интересно узнать, если это действительно код, который выполняется.

Так что сейчас я думаю, что я собираюсь прекратить свое расследование, пока я или кто-то другой не может фактически выполнить весь Bitcoin + Qt код и посмотреть / подтвердить, если это действительно исполняемый код

Одна последняя возможность рассмотреть этот кусок кода в случае, если это мульти аргумент вызова:


6957 статические INT getEscape (Const QChar * ис, Int * поз, Int Len, Int MAXNUMBER = 999) 
6958 { 
6959 INT I = * позы; 
6960 ++ я; 
6961, если (я < Len && УНЦ == QLatin1Char ( 'L')) 
6962 ++ я; 
6963, если (я < длина) { 
6964 INT побег = ис.Юникода () - '0'; 
6965, если (UINT (побег) >= 10U) 
6966 возврата -1; 
6967 ++ я; 
6968 в то время как (я < длина) { 
6969 INT цифра = УНЦ.Юникода () - '0'; 
6970, если (UINT (цифра) >= 10U) 
6971 перерыва; 
6972 побег = (побег * 10) + цифры; 
6973 ++ я; 
6974} 
6975, если (побег <= MAXNUMBER) { 
6976 * поз = я; 
6977 возвращение побег; 
6978} 
6979} 
6980 возврата -1; 
6981} 
6982 
6983 QString QString :: multiArg (INT numArgs, Const QString ** арг) сопзЬ 
6984 { 
6985 QString результат; 
6986 QMap numbersUsed; 
6987 Const QChar * = ис (Const QChar *) d->данные; 
6988 Const INT Len = D->размер; 
6989 Const = INT конец Len - 1; 
6990 INT lastNumber = -1; 
6991 INT I = 0; 
6992
6993 // заполнить numbersUsed карту с% п это, что на самом деле происходит в строке 
6994 в то время как (я < конец) { 
6995, если (ЯК == QLatin1Char ( '%')) { 
6996 INT число = getEscape (ЯК, &я, длина); 
6997, если (число! = -1) { 
6998 numbersUsed.insert (число, -1); 
6999 продолжаются; 
7000} 
7001} 
7002 ++ я; 
7003} 
7004 
7005 // присвоить номер аргумента для каждого из% п х 
7006 QMap:: итератор J = numbersUsed.begin (); 
7007 QMap:: итератора jend = numbersUsed.end (); 
7008 INT Arg = 0; 
7009 в то время как (J! = Jend && Arg < numArgs) { 
7010 * J = Arg ++; 
7011 lastNumber = j.key (); 
7012 ++, J; 
7013} 
7014 
7015 // вменяемость 
7016 если (numArgs > Arg) { 
7017 qWarning ("QString :: Arg:% d аргумент (ы) отсутствует в% S"., NumArgs - Arg, toLocal8Bit () данных ()); 
7018 numArgs = Arg; 
7019} 
7020 
7021 = 0; 
7022 в то время как (я < длина) { 
7023, если (ЯК == QLatin1Char ( '%') && я! = конец) { 
7024 INT число = getEscape (ЯК, &я, длина, lastNumber); 
7025 INT Arg = numbersUsed [номер]; 
7026, если (число! = -1 && Arg! = -1) { 
7027 результат + = * арг [Arg]; 
7028 продолжаются; 
7029} 
7030} 
7031 результат + = UC [я ++]; 
7032} 
7033 Возвращаемый результат; 
7034}

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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW