Современная формула для вычисления числа пи. Число пи - значение, история, кто придумал

03 Июл

Как восстановить доступ к операционной системе после атаки вируса Petya: рекомендации от Киберполиции Украины

Департамент Киберполиции Национальной полиции Украины опубликовал рекомендации пользователям по восстановлению доступа к компьютерам, которые подверглись кибератаке вируса-шифровальщика Petya.A.

В процессе изучения вируса-шифровальщика Petya.A исследователи установили несколько вариантов воздействия вредоносного ПО (при запуске вируса с правами администратора):

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

Компьютеры заражены, частично зашифрованы. Система начала процесс шифрования, но внешние факторы (напр.: отключение питания и т.д.) прекратили процесс шифрования.

Компьютеры заражены, но при этом процесс шифрования таблицы MFT еще не начался.

Что касается первого варианта — к сожалению, в настоящее время пока не установлено способа, который гарантированно проводит расшифровку данных. Решением этого вопроса активно занимаются специалисты Департамента киберполиции, СБУ, ДССТЗИ, украинских и международных ИТ-компаний.

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

Таким образом модифицированная троянская программа «Petya» работает в несколько этапов:

Первый: получение привилегированных прав (права администратора). На многих компьютерах в Windows архитектуре (Active Directory) эти права отключены. Вирус сохраняет оригинальный загрузочный сектор для операционной системы (MBR) в зашифрованном виде битовой операции XOR (xor 0x7), а затем записывает свой загрузчик на место вышеуказанного сектора, остальная часть кода трояна записывается в первые сектора диска. На этом этапе создается текстовый файл о шифровании, но на самом деле данные еще не зашифрованы.

Почему так? Потому что описанное выше — это лишь подготовка к шифрованию диска и оно начнется только после перезапуска системы.

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

Процесс шифрования был запущен, но внешние факторы (напр.: отключение питания и т.д.) прекратили процесс шифрования;
Процесс шифрования таблицы MFT еще не начался из-за факторов, которые не зависели от пользователя (сбой в работе вируса, реакция антивирусного ПО на действия вируса и т.д.).

Загрузиться с установочного диска Windows;

Если после загрузки с установочного диска Windows будет видна таблица с разделами жесткого диска, то можно приступить к процессу восстановления MBR;

Для Windows XР:

После загрузки установочного диска Windows XP в оперативную память ПК, появится диалоговое окно «Установка Windows XP Professional», содержащее меню выбора, необходимо выбрать пункт «чтобы восстановить Windows XP с помощью консоли восстановления, нажмите R». . Нажмите клавишу «R».

Загрузится консоль восстановления.

Если на ПК установлена одна ОС, и она (по умолчанию) установлена на диске C, появится следующее сообщение:

«1: C: \ WINDOWS В какую копию Windows следует выполнить вход?»

Введите клавишу «1», нажмите клавишу «Enter».

Появится сообщение: «Введите пароль администратора». Введите пароль, нажмите клавишу «Enter» (если пароля нет, просто нажмите «Enter»).

Должен появиться запрос системы: C: \ WINDOWS> введите fixmbr

Затем появится сообщение: «ПРЕДУПРЕЖДЕНИЕ».

«Подтверждаете запись новой MBR?». Нажмите клавишу «Y».

Появится сообщение: «Создается новый основной загрузочной сектор на физический диск \ Device \ Harddisk0 \ Partition0.»

«Новый основной загрузочный сектор успешно создан».

Для Windows Vista:

Загрузите Windows Vista. Выберите язык и раскладку клавиатуры. На экране приветствия нажмите «Восстановить работоспособность компьютера». Windows Vista отредактирует компьютерное меню.

Выберите операционную систему и нажмите кнопку «Далее».

Когда появится окно «Параметры восстановления системы», нажмите на командную строку.

Когда появится командная строка, введите команду:

bootrec / FixMbr

Подождите, пока операция закончится. Если все успешно, на экране появится сообщение о подтверждении.

Для Windows 7:

Загрузите Windows 7.

Выберите язык.

Выберите раскладку клавиатуры.

Выберите операционную систему и нажмите кнопку «Далее». При выборе операционной системы следует проверить «Использовать инструменты для восстановления, которые могут помочь решить проблемы с запуском Windows».

На экране «Параметры восстановления системы» нажмите кнопку «Командная строка» на экране «Параметры восстановления системы Windows 7»

Когда командная строка успешно загрузится, введите команду:

bootrec / fixmbr

Нажмите клавишу «Enter» и перезагрузите компьютер.

Для Windows 8

Загрузите Windows 8.

На экране «Приветствие» нажмите кнопку «Восстановить компьютер»

Windows 8 восстановит компьютерное меню

Выберите командную строку.

Когда загрузится командная строка, введите следующие команды:

bootrec / FixMbr

Подождите, пока операция завершится. Если все успешно, на экране появится сообщение о подтверждении.

Нажмите клавишу «Enter» и перезагрузите компьютер.

Для Windows 10

Загрузите Windows 10.

На экране приветствия нажмите кнопку «Восстановить компьютер»

Выберите «Устранение неисправностей»

Выберите командную строку.

Когда загружается командную строку, введите команду:

bootrec / FixMbr

Подождите, пока операция завершится. Если все успешно, на экране появится сообщение о подтверждении.

Нажмите клавишу «Enter» и перезагрузите компьютер.

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

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

Также отмечается что в случае использования программ восстановления данных, которые записывают свой загрузочный сектор (вроде Acronis True Image), то вирус этот раздел не трогает и можно вернуть рабочее состояние системы на дату контрольной точки.

В киберполиции сообщили, что кроме регистрационных данных, которые указывались пользователями программы «M.E.doc», никакой информации не передавалось.

Напомним, 27 июня 2017 года началась масштабная кибератака вируса-шифровальщика Petya.A на IT-системы украинских компаний и госучреждений.

Исследователи и эксперты в области кибербезопасности сообщают, что вирус, который (больше всего от атаки пострадала Украина, на которую изначально был нацелен этот вирус), создан с намеренной целью полностью выводить из строя машины жертв и не предусматривает системы расшифровки информации. Если вирус Petya.C поразил компьютер, на определенном этапе пользователь еще может перезапустить систему, но вот расшифровать информацию уже не получится.

Представители компаний «Сайберсекьюрити и Ко » и Positive Technologies , а также официальное представительство СБУ Украины рассказали о том, что при первых признаках заражения единственным способом предотвратить шифрование информации будет выключение компьютера.

Когда вредоносный код попадает на устройство жертвы, вирус создает отложенную задачу на перезагрузку девайса. До этого момента можно выполнить команду bootrec /fixMbr для восстановления раздела. За счет этого система сохранит работоспособность, но файлы все равно будут зашифрованы. Это – билет в один конец. Petya.C действует таким образом, что при заражении генерирует специальный ключ дешифровки, который практически сразу же удаляется.

После успешного шифрования информации компьютера на экран выводится сообщение с требованием заплатить 300 долларов в биткоинах, чтобы получить ключ для расшифровки информации. На счет хакеров уже поступило несколько тысяч долларов, но ни одна из жертв не получила нужный код. Дело в том, что германский провайдер электронной почты заблокировал ящик злоумышленников, который был единственным способом связаться с хакерами. Кроме того, представители «Лаборатории Касперского» сообщили, что сами авторы Petya.C не имеют физической возможности расшифровать компьютеры своих жертв, поскольку вирус не предусматривает создание идентификатора компьютеры жертвы, который позволил бы хакерам отправить ключ.

Для шифрования устройств Petya.C использует уязвимость EternalBlue, которая утекла из-под АНБ в начале этого года. Этот же эксплойт использовали создатели вымогателя WannaCry в мае. Microsoft выпустила необходимые патчи еще в марте этого года и даже обновила Windows XP, чтобы предотвратить дальнейшие заражения. Компания предупредила, что подобные атаки с большой долей вероятности будут повторяться, поэтому пользователям необходимо как можно скорее обновить свои компьютеры. Никто не отрицает тот факт, что в будущем может появиться еще какой-нибудь Vasia или Lyosha, который попытается повторить "успех" WannaCry или Petya.C.

Напомним, что Microsoft объявила ряд изменений в системах безопасности Windows 10, которые сделаны для предотвращения повторных атак в будущем. Компания уже (он использовался в атаках WannaCry и Petya.C), а также добавит , усложняющих использование эксплойта для заражения компьютера жертвы.

27.06.2017, для тех кто не делает бэкапы на съемные носители, стал самым черным днём, когда вирус-вайпер Petya за каких-то полчаса своей работы уничтожил у кого-то неделю, а у кого-то 10-12 лет наработок, архива ценных файлов, баз данных и прочего. Заставив начать жизнь с чистого листа. Однако есть шанс спасти хотя бы архивы Outlook и фото. Подробности под катом.
Вирус работал в два этапа: шифровал файлы (причем не все и не полностью), затем инициировал перезагрузку и после перезагрузки шифровал загрузчик (MBR) жесткого диска. В итоге жесткий диск превращался в условную «тыкву», из которой ничего не вытащить.
В случае, если ПК пережил только первый этап, то после восстановления MBR можно полноценно продолжать работать за ПК и наблюдать последствия работы шифровальщика файлов и искать те, что уцелели. Если ПК пережил два этапа, то всё гораздо хуже и даже просто вытащить файлы гораздо сложнее.

Поиск информации в Рунете по способам спасения информации с такого жесткого диска практически нет, поэтому мне пришлось опытным путем подбирать оптимальную стратегию поиска и восстановления того, что могло уцелеть. Были опробованы порядка десятка программ восстановления информации, но больше всего информации удалось вытащить при помощи программы R-Studio, о ней и пойдет речь далее, с описанием последовательности действий для спасения (все действия будут осуществляться под Windows 7, но я думаю неважно какая версия windows у вас лишь бы запустился R-studio).

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

Итак последовательность действий:

1. Подключаем неотформатированный зашифрованный диск (это ключевое требование, если диск форматировался или на нем была переустановлена ОС, то шансы восстановить хоть что-то стремятся к нулю), который прошел 2 этапа шифрования с потерей файловой системы, к ПК под управлением Windows (подключать можно как напрямую к материнской плате через порты sata/ide так и через USB адаптеры, кому как удобнее). И после загрузки ПК получаем сообщение о необходимости отформатировать вновь подключенный диск (в моем случае это диск G).

Скриншот


Жмем отмену. Убеждаемся, что наш диск действительно поврежден, в диспетчере дисков он определится с файловой системой RAW:

Скриншот



2. Запускаем программу R-Studio (я использовал версию 8.2) и смотрим найденные диски. Наш подопытный жесткий диск объемом 320 Гб был подключен через док-станцию USB 3.0 и определился как JMicron Tech 023 под буквой «G».

Скриншот



Далее делаем двойной клик на строку с диском «G», как на рисунке выше, и ждем окончания сканирования диска.

3. Нам откроется окно R-Studio с результатами сканирования (см. рис. ниже):

Скриншот



Как правило, находится очень мало папок с понятным названием, всё самое ценное находится в разделе «Дополнительно найденные файлы». Поэтому переходим к следующему шагу.

4. Выделяем мышкой строку «Дополнительно найденный файлы» и жмем кнопку «Найти/отметить» на панели управления программы.

5. В открывшемся окне выбираем поиск по расширению файлов и указываем расширение pst (формат файла архивных папок Outlook) и нажимаем кнопку «Да».

Скриншот



6. Поиск нам найдет архивные файлы, их может быть много и в разных папках. Поэтому ориентируемся на путь, по которому у вас хранились архивные файлы. На примере ниже видно, что искомые файлы находились в папке «Файлы Outlook».

Скриншот



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

Скриншот



7. Далее ставим галочки на искомых файлах с расширением pst и жмём кнопку «Восстановить помеченные», указываем место для сохранения спасаемых файлов (в моем случае это папка Recover на диске С). Ждем окончания процесса копирования файлов.

Скриншот



8. Восстановленный файл архива как правило поврежден и не определяется программой Outlook. К счастью у больших файлов вирус шифровал только первый мегабайт, оставляя остальное нетронутым. Поэтому нам нужно попытаться восстановить структуру архива, для этого есть несколько способов:

А) Использовать утилиту SCANPST входящую в стандартный комплект MS Office. Например в MS Office 2010 эта утилита находится в папке C:\Program Files (x86)\Microsoft Office\Office14\ если у вас 64 битной Windows и по пути C:\Program Files\Microsoft Office\Office14 при использовании 32-битной версии Windows.

Б) Использовать утилиты сторонних разработчиков. Коих можно найти много на просторах гугла.

Я использовал первый вариант и в принципе он сработал на всех ПК, которые мне принесли на восстановление.

Также прилагаю к посту ссылку на пошаговую инструкцию по работе с утилитой SCANPST.

На этом собственно всё, другие файлы восстанавливаются аналогичным алгоритмом, необходимо только подставить нужное расширение файла, либо вручную пролистать все папки в разделе «Дополнительно найденные файлы» и выбрать что именно необходимо восстановить.
Если кому-то мой пост покажется «капитанским» просьба сильно не критиковать, не у всех есть опыт восстановления данных и проверенные инструменты. Если остались еще вопросы можете писать в ЛС или тут в комментариях.

С недавних пор существует элегантная формула для вычисления числа Пи, которую в 1995 году впервые опубликовали Дэвид Бэйли, Питер Борвайн и Саймон Плафф:

Казалось бы: что в ней особенного — формул для вычисления Пи великое множество: от школьного метода Монте-Карло до труднопостижимого интеграла Пуассона и формулы Франсуа Виета из позднего Средневековья. Но именно на эту формулу стоит обратить особое внимание — она позволяет вычислить n-й знак числа пи без нахождения предыдущих. За информацией о том, как это работает, а также за готовым кодом на языке C, вычисляющим 1 000 000-й знак, прошу под хабракат.

Как же работает алгоритм вычисления N-го знака Пи?
К примеру, если нам нужен 1000-й шестнадцатеричный знак числа Пи, мы домножаем всю формулу на 16^1000, тем самым обращая множитель, стоящий перед скобками, в 16^(1000-k). При возведении в степень мы используем двоичный алгоритм возведения в степень или, как будет показано в примере ниже, возведение в степень по модулю . После этого вычисляем сумму нескольких членов ряда. Причём необязательно вычислять много: по мере возрастания k 16^(N-k) быстро убывает, так что, последующие члены не будут оказывать влияния на значение искомых цифр). Вот и вся магия — гениальная и простая.

Формула Бэйли-Борвайна-Плаффа была найдена Саймоном Плаффом при помощи алгоритма PSLQ , который был в 2000 году включён в список Top 10 Algorithms of the Century . Сам же алгоритм PSLQ был в свою очередь разработан Бэйли. Вот такой мексиканский сериал про математиков.
Кстати, время работы алгоритма — O(N), использование памяти — O(log N), где N — порядковый номер искомого знака.

Думаю, уместно будет привести код на языке Си, написанный непосредственно автором алгоритма, Дэвидом Бэйли:

/* This program implements the BBP algorithm to generate a few hexadecimal digits beginning immediately after a given position id, or in other words beginning at position id + 1. On most systems using IEEE 64-bit floating- point arithmetic, this code works correctly so long as d is less than approximately 1.18 x 10^7. If 80-bit arithmetic can be employed, this limit is significantly higher. Whatever arithmetic is used, results for a given position id can be checked by repeating with id-1 or id+1, and verifying that the hex digits perfectly overlap with an offset of one, except possibly for a few trailing digits. The resulting fractions are typically accurate to at least 11 decimal digits, and to at least 9 hex digits. */ /* David H. Bailey 2006-09-08 */ #include #include int main() { double pid, s1, s2, s3, s4; double series (int m, int n); void ihex (double x, int m, char c); int id = 1000000; #define NHX 16 char chx; /* id is the digit position. Digits generated follow immediately after id. */ s1 = series (1, id); s2 = series (4, id); s3 = series (5, id); s4 = series (6, id); pid = 4. * s1 - 2. * s2 - s3 - s4; pid = pid - (int) pid + 1.; ihex (pid, NHX, chx); printf (" position = %i\n fraction = %.15f \n hex digits = %10.10s\n", id, pid, chx); } void ihex (double x, int nhx, char chx) /* This returns, in chx, the first nhx hex digits of the fraction of x. */ { int i; double y; char hx = "0123456789ABCDEF"; y = fabs (x); for (i = 0; i < nhx; i++){ y = 16. * (y - floor (y)); chx[i] = hx[(int) y]; } } double series (int m, int id) /* This routine evaluates the series sum_k 16^(id-k)/(8*k+m) using the modular exponentiation technique. */ { int k; double ak, eps, p, s, t; double expm (double x, double y); #define eps 1e-17 s = 0.; /* Sum the series up to id. */ for (k = 0; k < id; k++){ ak = 8 * k + m; p = id - k; t = expm (p, ak); s = s + t / ak; s = s - (int) s; } /* Compute a few terms where k >= id. */ for (k = id; k <= id + 100; k++){ ak = 8 * k + m; t = pow (16., (double) (id - k)) / ak; if (t < eps) break; s = s + t; s = s - (int) s; } return s; } double expm (double p, double ak) /* expm = 16^p mod ak. This routine uses the left-to-right binary exponentiation scheme. */ { int i, j; double p1, pt, r; #define ntp 25 static double tp; static int tp1 = 0; /* If this is the first call to expm, fill the power of two table tp. */ if (tp1 == 0) { tp1 = 1; tp = 1.; for (i = 1; i < ntp; i++) tp[i] = 2. * tp; } if (ak == 1.) return 0.; /* Find the greatest power of two less than or equal to p. */ for (i = 0; i < ntp; i++) if (tp[i] > p) break; pt = tp; p1 = p; r = 1.; /* Perform binary exponentiation algorithm modulo ak. */ for (j = 1; j <= i; j++){ if (p1 >= pt){ r = 16. * r; r = r - (int) (r / ak) * ak; p1 = p1 - pt; } pt = 0.5 * pt; if (pt >= 1.){ r = r * r; r = r - (int) (r / ak) * ak; } } return r; }
Какие возможности это даёт? Например: мы можем создать систему распределённых вычислений, рассчитывающую число Пи и поставить всем Хабром новый рекорд по точности вычисления (который сейчас, к слову, составляет 10 триллионов знаков после запятой). Согласно эмпирическим данным, дробная часть числа Пи представляет собой нормальную числовую последовательность (хотя доказать это достоверно ещё не удалось), а значит, последовательности цифр из него можно использовать в генерации паролей и просто случайных чисел, или в криптографических алгоритмах (например, в хэшировании). Способов применения можно найти великое множество - надо только включить фантазию.

Больше информации по теме вы можете найти в статье самого Дэвида Бэйли, где он подробно рассказывает про алгоритм и его имплементацию (pdf);

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



Понравилась статья? Поделитесь с друзьями!