Суббота, 15.11.2025, 22:25
Rudoysecurity
Приветствую Вас Гость | RSS
Главная Каталог файлов Регистрация Вход
Меню сайта

Категории раздела
Файлы администрации [9]
Файлы, разрешенные к свободному бесплатному скачиванию.
Программы [3]
Установочные дистрибутивы или демонстрационные версии программ серии Rudoysecurity для бесплатного скачивания
Сертификаты, списки доверия, файлы обмена личной информацией [1]
Сертификаты, списки доверия, файлы обмена личной информацией предназначены для установки открытых и закрытых ключей шифрования и электронной цифровой подписи

Мини-чат

Наш опрос
Ваше отношение к программе "Рейнджер"
Всего ответов: 92

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Вход в портал

Главная » Файлы » Файлы администрации » Файлы администрации

MouseEntropyCollector 1
[ Скачать с сервера (10.1 Kb) ] 05.11.2025, 19:32

 

📌 Общая характеристика модуля

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

Реализация: Модуль выполнен на языке Object Pascal (Delphi) и включает класс TMouseEntropyCollector, обеспечивающий удобный интерфейс для запуска процедуры сбора энтропии, её мониторинга и прерывания.


⚙️ Основные компоненты класса TMouseEntropyCollector

Конструктор и Деструктор

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

Основные Методы

  • CollectMouseEntropy: Запускает процесс сбора энтропии. Создается специальная форма, занимающая весь экран, которая становится прозрачной и незаметной для пользователя, но позволяет отслеживать любые движения мыши.
  • CancelCollection: Позволяет досрочно прервать процесс сбора данных.
  • AddToBuffer: Метод добавляет новые порции данных в накопительный буфер.
  • UpdateProgress: Отображает текущий прогресс сбора данных с указанием скорости и оставшегося времени.
  • IsEscapePressed: Контролирует возможность экстренного выхода из режима сбора энтропии по нажатию клавиши ESC.

🔍 Принцип работы механизма сбора энтропии

Процесс сбора энтропии реализуется следующим образом:

  1. Создание специальной формы: Формируется прозрачная форма, покрывающая весь экран компьютера. Эта форма предназначена исключительно для захвата событий мыши.
  2. Отслеживание движений мыши: Каждый раз, когда пользователь перемещает мышь, фиксируется разница между предыдущими и новыми координатами, а также точные моменты времени каждого движения.
  3. Запись данных в буфер: Информация о каждом движении сохраняется в специальном буфере. Данные включают:
    • Изменения координат мыши (по осям X и Y),
    • Высокоточные отметки времени каждого события,
    • Состояние клавиш-модификаторов (Ctrl, Alt, Shift и др.)
  4. Мониторинг прогресса: Пользователь видит индикатор прогресса, отражающий объем уже собранных данных относительно необходимого количества.
  5. Завершение процесса: Процедура прекращается либо при достижении нужного объема данных, либо при ручном прерывании пользователем (нажатием клавиши ESC).

✅ Особенности и преимущества подхода

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

🛠 Возможные улучшения и рекомендации

Несмотря на качественную реализацию, существуют направления дальнейшего совершенствования:

  • Дополнительная защита от сбоев: Рекомендуется реализовать обработку ошибок и аварийных ситуаций, возникающих при работе с низкоуровневыми функциями Windows.
  • Расширенная статистика: Можно дополнить функциональность модулем статистики качества собранной энтропии (например, тестами на равномерность распределения).
  • Поддержка альтернативных источников: Рассмотрение возможности расширения функционала добавлением поддержки иных источников энтропии (например, звуковые устройства, сетевые задержки и прочее).

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


 

📌 Общая характеристика модуля

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

Реализация: Модуль выполнен на языке Object Pascal (Delphi) и включает класс TMouseEntropyCollector, обеспечивающий удобный интерфейс для запуска процедуры сбора энтропии, её мониторинга и прерывания.


⚙️ Основные компоненты класса TMouseEntropyCollector

Конструктор и Деструктор

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

Основные Методы

  • CollectMouseEntropy: Запускает процесс сбора энтропии. Создается специальная форма, занимающая весь экран, которая становится прозрачной и незаметной для пользователя, но позволяет отслеживать любые движения мыши.
  • CancelCollection: Позволяет досрочно прервать процесс сбора данных.
  • AddToBuffer: Метод добавляет новые порции данных в накопительный буфер.
  • UpdateProgress: Отображает текущий прогресс сбора данных с указанием скорости и оставшегося времени.
  • IsEscapePressed: Контролирует возможность экстренного выхода из режима сбора энтропии по нажатию клавиши ESC.

🔍 Принцип работы механизма сбора энтропии

Процесс сбора энтропии реализуется следующим образом:

  1. Создание специальной формы: Формируется прозрачная форма, покрывающая весь экран компьютера. Эта форма предназначена исключительно для захвата событий мыши.
  2. Отслеживание движений мыши: Каждый раз, когда пользователь перемещает мышь, фиксируется разница между предыдущими и новыми координатами, а также точные моменты времени каждого движения.
  3. Запись данных в буфер: Информация о каждом движении сохраняется в специальном буфере. Данные включают:
    • Изменения координат мыши (по осям X и Y),
    • Высокоточные отметки времени каждого события,
    • Состояние клавиш-модификаторов (Ctrl, Alt, Shift и др.)
  4. Мониторинг прогресса: Пользователь видит индикатор прогресса, отражающий объем уже собранных данных относительно необходимого количества.
  5. Завершение процесса: Процедура прекращается либо при достижении нужного объема данных, либо при ручном прерывании пользователем (нажатием клавиши ESC).

✅ Особенности и преимущества подхода

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

🛠 Возможные улучшения и рекомендации

Несмотря на качественную реализацию, существуют направления дальнейшего совершенствования:

  • Дополнительная защита от сбоев: Рекомендуется реализовать обработку ошибок и аварийных ситуаций, возникающих при работе с низкоуровневыми функциями Windows.
  • Расширенная статистика: Можно дополнить функциональность модулем статистики качества собранной энтропии (например, тестами на равномерность распределения).
  • Поддержка альтернативных источников: Рассмотрение возможности расширения функционала добавлением поддержки иных источников энтропии (например, звуковые устройства, сетевые задержки и прочее).

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


 

📌 Общая характеристика модуля

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

Реализация: Модуль выполнен на языке Object Pascal (Delphi) и включает класс TMouseEntropyCollector, обеспечивающий удобный интерфейс для запуска процедуры сбора энтропии, её мониторинга и прерывания.


⚙️ Основные компоненты класса TMouseEntropyCollector

Конструктор и Деструктор

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

Основные Методы

  • CollectMouseEntropy: Запускает процесс сбора энтропии. Создается специальная форма, занимающая весь экран, которая становится прозрачной и незаметной для пользователя, но позволяет отслеживать любые движения мыши.
  • CancelCollection: Позволяет досрочно прервать процесс сбора данных.
  • AddToBuffer: Метод добавляет новые порции данных в накопительный буфер.
  • UpdateProgress: Отображает текущий прогресс сбора данных с указанием скорости и оставшегося времени.
  • IsEscapePressed: Контролирует возможность экстренного выхода из режима сбора энтропии по нажатию клавиши ESC.

🔍 Принцип работы механизма сбора энтропии

Процесс сбора энтропии реализуется следующим образом:

  1. Создание специальной формы: Формируется прозрачная форма, покрывающая весь экран компьютера. Эта форма предназначена исключительно для захвата событий мыши.
  2. Отслеживание движений мыши: Каждый раз, когда пользователь перемещает мышь, фиксируется разница между предыдущими и новыми координатами, а также точные моменты времени каждого движения.
  3. Запись данных в буфер: Информация о каждом движении сохраняется в специальном буфере. Данные включают:
    • Изменения координат мыши (по осям X и Y),
    • Высокоточные отметки времени каждого события,
    • Состояние клавиш-модификаторов (Ctrl, Alt, Shift и др.)
  4. Мониторинг прогресса: Пользователь видит индикатор прогресса, отражающий объем уже собранных данных относительно необходимого количества.
  5. Завершение процесса: Процедура прекращается либо при достижении нужного объема данных, либо при ручном прерывании пользователем (нажатием клавиши ESC).

✅ Особенности и преимущества подхода

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

🛠 Возможные улучшения и рекомендации

Несмотря на качественную реализацию, существуют направления дальнейшего совершенствования:

  • Дополнительная защита от сбоев: Рекомендуется реализовать обработку ошибок и аварийных ситуаций, возникающих при работе с низкоуровневыми функциями Windows.
  • Расширенная статистика: Можно дополнить функциональность модулем статистики качества собранной энтропии (например, тестами на равномерность распределения).
  • Поддержка альтернативных источников: Рассмотрение возможности расширения функционала добавлением поддержки иных источников энтропии (например, звуковые устройства, сетевые задержки и прочее).

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


 

📌 Общая характеристика модуля

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

Реализация: Модуль выполнен на языке Object Pascal (Delphi) и включает класс TMouseEntropyCollector, обеспечивающий удобный интерфейс для запуска процедуры сбора энтропии, её мониторинга и прерывания.


⚙️ Основные компоненты класса TMouseEntropyCollector

Конструктор и Деструктор

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

Основные Методы

  • CollectMouseEntropy: Запускает процесс сбора энтропии. Создается специальная форма, занимающая весь экран, которая становится прозрачной и незаметной для пользователя, но позволяет отслеживать любые движения мыши.
  • CancelCollection: Позволяет досрочно прервать процесс сбора данных.
  • AddToBuffer: Метод добавляет новые порции данных в накопительный буфер.
  • UpdateProgress: Отображает текущий прогресс сбора данных с указанием скорости и оставшегося времени.
  • IsEscapePressed: Контролирует возможность экстренного выхода из режима сбора энтропии по нажатию клавиши ESC.

🔍 Принцип работы механизма сбора энтропии

Процесс сбора энтропии реализуется следующим образом:

  1. Создание специальной формы: Формируется прозрачная форма, покрывающая весь экран компьютера. Эта форма предназначена исключительно для захвата событий мыши.
  2. Отслеживание движений мыши: Каждый раз, когда пользователь перемещает мышь, фиксируется разница между предыдущими и новыми координатами, а также точные моменты времени каждого движения.
  3. Запись данных в буфер: Информация о каждом движении сохраняется в специальном буфере. Данные включают:
    • Изменения координат мыши (по осям X и Y),
    • Высокоточные отметки времени каждого события,
    • Состояние клавиш-модификаторов (Ctrl, Alt, Shift и др.)
  4. Мониторинг прогресса: Пользователь видит индикатор прогресса, отражающий объем уже собранных данных относительно необходимого количества.
  5. Завершение процесса: Процедура прекращается либо при достижении нужного объема данных, либо при ручном прерывании пользователем (нажатием клавиши ESC).

✅ Особенности и преимущества подхода

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

🛠 Возможные улучшения и рекомендации

Несмотря на качественную реализацию, существуют направления дальнейшего совершенствования:

  • Дополнительная защита от сбоев: Рекомендуется реализовать обработку ошибок и аварийных ситуаций, возникающих при работе с низкоуровневыми функциями Windows.
  • Расширенная статистика: Можно дополнить функциональность модулем статистики качества собранной энтропии (например, тестами на равномерность распределения).
  • Поддержка альтернативных источников: Рассмотрение возможности расширения функционала добавлением поддержки иных источников энтропии (например, звуковые устройства, сетевые задержки и прочее).

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


 

📌 Общая характеристика модуля

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

Реализация: Модуль выполнен на языке Object Pascal (Delphi) и включает класс TMouseEntropyCollector, обеспечивающий удобный интерфейс для запуска процедуры сбора энтропии, её мониторинга и прерывания.


⚙️ Основные компоненты класса TMouseEntropyCollector

Конструктор и Деструктор

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

Основные Методы

  • CollectMouseEntropy: Запускает процесс сбора энтропии. Создается специальная форма, занимающая весь экран, которая становится прозрачной и незаметной для пользователя, но позволяет отслеживать любые движения мыши.
  • CancelCollection: Позволяет досрочно прервать процесс сбора данных.
  • AddToBuffer: Метод добавляет новые порции данных в накопительный буфер.
  • UpdateProgress: Отображает текущий прогресс сбора данных с указанием скорости и оставшегося времени.
  • IsEscapePressed: Контролирует возможность экстренного выхода из режима сбора энтропии по нажатию клавиши ESC.

🔍 Принцип работы механизма сбора энтропии

Процесс сбора энтропии реализуется следующим образом:

  1. Создание специальной формы: Формируется прозрачная форма, покрывающая весь экран компьютера. Эта форма предназначена исключительно для захвата событий мыши.
  2. Отслеживание движений мыши: Каждый раз, когда пользователь перемещает мышь, фиксируется разница между предыдущими и новыми координатами, а также точные моменты времени каждого движения.
  3. Запись данных в буфер: Информация о каждом движении сохраняется в специальном буфере. Данные включают:
    • Изменения координат мыши (по осям X и Y),
    • Высокоточные отметки времени каждого события,
    • Состояние клавиш-модификаторов (Ctrl, Alt, Shift и др.)
  4. Мониторинг прогресса: Пользователь видит индикатор прогресса, отражающий объем уже собранных данных относительно необходимого количества.
  5. Завершение процесса: Процедура прекращается либо при достижении нужного объема данных, либо при ручном прерывании пользователем (нажатием клавиши ESC).

✅ Особенности и преимущества подхода

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

🛠 Возможные улучшения и рекомендации

Несмотря на качественную реализацию, существуют направления дальнейшего совершенствования:

  • Дополнительная защита от сбоев: Рекомендуется реализовать обработку ошибок и аварийных ситуаций, возникающих при работе с низкоуровневыми функциями Windows.
  • Расширенная статистика: Можно дополнить функциональность модулем статистики качества собранной энтропии (например, тестами на равномерность распределения).
  • Поддержка альтернативных источников: Рассмотрение возможности расширения функционала добавлением поддержки иных источников энтропии (например, звуковые устройства, сетевые задержки и прочее).

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


 

📌 Общая характеристика модуля

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

Реализация: Модуль выполнен на языке Object Pascal (Delphi) и включает класс TMouseEntropyCollector, обеспечивающий удобный интерфейс для запуска процедуры сбора энтропии, её мониторинга и прерывания.


⚙️ Основные компоненты класса TMouseEntropyCollector

Конструктор и Деструктор

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

Основные Методы

  • CollectMouseEntropy: Запускает процесс сбора энтропии. Создается специальная форма, занимающая весь экран, которая становится прозрачной и незаметной для пользователя, но позволяет отслеживать любые движения мыши.
  • CancelCollection: Позволяет досрочно прервать процесс сбора данных.
  • AddToBuffer: Метод добавляет новые порции данных в накопительный буфер.
  • UpdateProgress: Отображает текущий прогресс сбора данных с указанием скорости и оставшегося времени.
  • IsEscapePressed: Контролирует возможность экстренного выхода из режима сбора энтропии по нажатию клавиши ESC.

🔍 Принцип работы механизма сбора энтропии

Процесс сбора энтропии реализуется следующим образом:

  1. Создание специальной формы: Формируется прозрачная форма, покрывающая весь экран компьютера. Эта форма предназначена исключительно для захвата событий мыши.
  2. Отслеживание движений мыши: Каждый раз, когда пользователь перемещает мышь, фиксируется разница между предыдущими и новыми координатами, а также точные моменты времени каждого движения.
  3. Запись данных в буфер: Информация о каждом движении сохраняется в специальном буфере. Данные включают:
    • Изменения координат мыши (по осям X и Y),
    • Высокоточные отметки времени каждого события,
    • Состояние клавиш-модификаторов (Ctrl, Alt, Shift и др.)
  4. Мониторинг прогресса: Пользователь видит индикатор прогресса, отражающий объем уже собранных данных относительно необходимого количества.
  5. Завершение процесса: Процедура прекращается либо при достижении нужного объема данных, либо при ручном прерывании пользователем (нажатием клавиши ESC).

✅ Особенности и преимущества подхода

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

🛠 Возможные улучшения и рекомендации

Несмотря на качественную реализацию, существуют направления дальнейшего совершенствования:

  • Дополнительная защита от сбоев: Рекомендуется реализовать обработку ошибок и аварийных ситуаций, возникающих при работе с низкоуровневыми функциями Windows.
  • Расширенная статистика: Можно дополнить функциональность модулем статистики качества собранной энтропии (например, тестами на равномерность распределения).
  • Поддержка альтернативных источников: Рассмотрение возможности расширения функционала добавлением поддержки иных источников энтропии (например, звуковые устройства, сетевые задержки и прочее).

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

///

/// Модуль для сбора энтропии с участием человека /// Автор: © Рудой Андрей Игоревич, 2005 - 2025 г. ///

/// © Рудой Андрей Игоревич unit MouseEntropyCollector; interface uses System.SysUtils, System.Classes, Vcl.Forms, Vcl.Controls, Vcl.ComCtrls, Winapi.Windows; type ///

/// Класс для сбора энтропии от движений мыши по всему экрану. Автор: © Рудой Андрей Игоревич, 2005 - 2025 г. ///

TMouseEntropyCollector = class private FBuffer: TBytes; FTargetSize: Integer; FProgressBar: TProgressBar; FIsCollecting: Boolean; FStartTime: Cardinal; FLastMousePos: TPoint; FForm: TForm; // Форма для перехвата событий мыши ///

/// Обработчик движения мыши для формы. Автор: © Рудой Андрей Игоревич, 2005 - 2025 г. ///

procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); ///

/// Добавляет данные в буфер энтропии ///

procedure AddToBuffer(const Data; DataSize: Integer); ///

/// Обновляет отображение прогресса. Автор: © Рудой Андрей Игоревич, 2005 - 2025 г. ///

procedure UpdateProgress; ///

/// Проверяет, была ли нажата клавиша ESC. Автор: © Рудой Андрей Игоревич, 2005 - 2025 г. ///

function IsEscapePressed: Boolean; public ///

/// Создает экземпляр сборщика энтропии. Автор: © Рудой Андрей Игоревич, 2005 - 2025 г. ///

constructor Create; ///

/// Освобождает ресурсы. Автор: © Рудой Андрей Игоревич, 2005 - 2025 г. ///

destructor Destroy; override; ///

/// Собирает энтропию от движений мыши по всему экрану. Автор: © Рудой Андрей Игоревич, 2005 - 2025 г. ///

///Целевой размер буфера в байтах ///ProgressBar для отображения прогресса ///Выходной буфер с собранной энтропией /// /// Для работы создает прозрачную форму на весь экран для перехвата событий мыши /// procedure CollectMouseEntropy(Size: Integer; ProgressBar: TProgressBar; out Buffer: TBytes); ///

/// Прерывает сбор энтропии ///

procedure CancelCollection; end; implementation { TMouseEntropyCollector } constructor TMouseEntropyCollector.Create; begin inherited Create; FIsCollecting := False; SetLength(FBuffer, 0); FForm := nil; end; destructor TMouseEntropyCollector.Destroy; begin CancelCollection; if Assigned(FForm) then FForm.Free; // Безопасная очистка буфера if Length(FBuffer) > 0 then begin FillChar(FBuffer[0], Length(FBuffer), 0); SetLength(FBuffer, 0); end; inherited Destroy; end; procedure TMouseEntropyCollector.CollectMouseEntropy(Size: Integer; ProgressBar: TProgressBar; out Buffer: TBytes); var ScreenWidth, ScreenHeight: Integer; begin if Size <= 0 then raise Exception.Create('Размер буфера должен быть положительным числом'); if not Assigned(ProgressBar) then raise Exception.Create('ProgressBar должен быть назначен'); if FIsCollecting then raise Exception.Create('Сбор энтропии уже выполняется'); // Инициализация FTargetSize := Size; FProgressBar := ProgressBar; SetLength(FBuffer, 0); FIsCollecting := True; FStartTime := GetTickCount; // Получаем текущую позицию мыши if not GetCursorPos(FLastMousePos) then begin FIsCollecting := False; raise Exception.Create('Не удалось получить позицию мыши'); end; // Создаем невидимую форму на весь экран для перехвата событий мыши FForm := TForm.Create(nil); try FForm.BorderStyle := bsNone; FForm.FormStyle := fsStayOnTop; FForm.Visible := False; // Устанавливаем размер формы на весь экран ScreenWidth := GetSystemMetrics(SM_CXSCREEN); ScreenHeight := GetSystemMetrics(SM_CYSCREEN); FForm.SetBounds(0, 0, ScreenWidth, ScreenHeight); // Устанавливаем прозрачность и возможность клика сквозь форму FForm.AlphaBlend := True; FForm.AlphaBlendValue := 1; // Почти невидимая, но перехватывает события // Назначаем обработчик движения мыши FForm.OnMouseMove := FormMouseMove; // Показываем форму FForm.Show; // Настройка ProgressBar FProgressBar.Min := 0; FProgressBar.Max := FTargetSize; FProgressBar.Position := 0; // Основной цикл сбора while FIsCollecting and (Length(FBuffer) < FTargetSize) do begin Application.ProcessMessages; if IsEscapePressed then begin FIsCollecting := False; Break; end; Sleep(10); // Снижаем нагрузку на CPU end; finally if Assigned(FForm) then begin FForm.Hide; FForm.Free; FForm := nil; end; end; // Возвращаем результат if Length(FBuffer) >= FTargetSize then begin SetLength(Buffer, FTargetSize); Move(FBuffer[0], Buffer[0], FTargetSize); end else begin Buffer := Copy(FBuffer, 0, Length(FBuffer)); end; // Очищаем временные данные if Length(FBuffer) > 0 then begin FillChar(FBuffer[0], Length(FBuffer), 0); SetLength(FBuffer, 0); end; FIsCollecting := False; end; procedure TMouseEntropyCollector.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var CurrentPos: TPoint; DeltaX, DeltaY: SmallInt; MouseData: array[0..3] of Byte; HighPrecisionTime: Int64; TimeData: array[0..7] of Byte; GlobalX, GlobalY: Integer; begin if not FIsCollecting or (Length(FBuffer) >= FTargetSize) then Exit; // Получаем глобальные координаты мыши GetCursorPos(CurrentPos); GlobalX := CurrentPos.X; GlobalY := CurrentPos.Y; // Вычисляем разницу с предыдущей позицией :cite[1] DeltaX := GlobalX - FLastMousePos.X; DeltaY := GlobalY - FLastMousePos.Y; // Обновляем позицию :cite[8] FLastMousePos := CurrentPos; // Добавляем данные только при реальном движении :cite[1] if (DeltaX <> 0) or (DeltaY <> 0) then begin // Кодируем разницу координат (4 байта) MouseData[0] := Byte(DeltaX and $FF); MouseData[1] := Byte((DeltaX shr 8) and $FF); MouseData[2] := Byte(DeltaY and $FF); MouseData[3] := Byte((DeltaY shr 8) and $FF); AddToBuffer(MouseData, SizeOf(MouseData)); // Добавляем высокоточное время (8 байт) if QueryPerformanceCounter(HighPrecisionTime) then begin Move(HighPrecisionTime, TimeData[0], SizeOf(HighPrecisionTime)); AddToBuffer(TimeData, SizeOf(TimeData)); end; // Добавляем состояние клавиш-модификаторов (1 байт) AddToBuffer(Shift, 1); // Обновляем прогресс UpdateProgress; end; end; procedure TMouseEntropyCollector.AddToBuffer(const Data; DataSize: Integer); var OldLen: Integer; begin if not FIsCollecting or (DataSize <= 0) then Exit; // Проверяем, не превысим ли целевой размер if (Length(FBuffer) + DataSize) > FTargetSize then DataSize := FTargetSize - Length(FBuffer); if DataSize <= 0 then Exit; OldLen := Length(FBuffer); SetLength(FBuffer, OldLen + DataSize); Move(Data, FBuffer[OldLen], DataSize); end; procedure TMouseEntropyCollector.UpdateProgress; var CurrentSize: Integer; ElapsedTime: Cardinal; Speed: Double; begin if not Assigned(FProgressBar) then Exit; CurrentSize := Length(FBuffer); TThread.Synchronize(nil, procedure begin FProgressBar.Position := CurrentSize; ElapsedTime := GetTickCount - FStartTime; if ElapsedTime > 0 then begin Speed := CurrentSize / (ElapsedTime / 1000); FProgressBar.Hint := Format('Собрано: %d/%d байт' + sLineBreak + 'Скорость: %.2f байт/сек' + sLineBreak + 'Время: %.1f сек', [CurrentSize, FTargetSize, Speed, ElapsedTime / 1000]); end else begin FProgressBar.Hint := Format('Собрано: %d/%d байт', [CurrentSize, FTargetSize]); end; FProgressBar.Repaint; end ); end; function TMouseEntropyCollector.IsEscapePressed: Boolean; begin Result := (GetAsyncKeyState(VK_ESCAPE) and $8000) <> 0; end; procedure TMouseEntropyCollector.CancelCollection; begin FIsCollecting := False; end; end.

 

Категория: Файлы администрации | Добавил: Rudoysecurity | Теги: Сбор энтропии, Энтропия, Entropy, Mouse Entropy Collector
Просмотров: 18 | Загрузок: 9 | Рейтинг: 5.0/1
Всего комментариев: 0
avatar
Новости ГСПИ

Вход в почту
Логин:
Пароль:
(что это)

Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • ООО Аспект-С
  • Кадровое агентство
  • Рекламное агентство
  • ИКЦ Эксперт
  • Rudoysecurity
  • Центр сертификации

  • Система авторегистрации в каталогах, статьи про раскрутку сайтов, web дизайн, flash, photoshop, хостинг, рассылки; форум, баннерная сеть, каталог сайтов, услуги продвижения и рекламы сайтов ROBOKASSA
    Copyright Rudoysecurity ©2009 - 2025 Бесплатный конструктор сайтовuCoz