Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Пирожки с яблоками

19.10.2024 | Категория: А еще я туда ем! | Автор: ManHunter

Пирожки с яблоками

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

Читать статью целиком »
Просмотров: 266 | Комментариев: 1

Семейный отпуск в Египте

16.10.2024 | Категория: Жизнь в оффлайне | Автор: ManHunter

Семейный отпуск в Египте

Пару последних лет дети отдыхали на отечественных курортах, в этот раз я все-таки решил организовать семейный отдых за границей. Дети уже достаточно сознательные, чтобы не отвлекаться на них каждую секунду. Отель выбирали долго, сверялись с отзывами в интернете, интересовались у знакомых и друзей. В результате выбрали отель Aqua Mondo Abu Soma Resort в Хургаде. Если произнести его название зловещим голосом, то, наверное, можно даже вызвать какую-нибудь аццкую сотону :)

Читать статью целиком »
Просмотров: 300 | Комментариев: 2

Исследование защиты программы Secure Delete

04.10.2024 | Категория: Темная сторона Силы | Автор: ManHunter

Скриншот программы Secure Delete

Программа Secure Delete, по заверениям разработчиков, предназначена для гарантированного удаления файлов и каталогов без возможности их последующего восстановления. Перед удалением файл может быть несколько раз перезаписан случайными данными, у него может быть модифицирована дата создания, изменено имя файла, а также выполнены другие действия согласно выбранным настройкам безопасности. Без регистрации постоянно вываливает окна с предложением прогуляться в кассу, а также в таком режиме заблокированы некоторые полезные функции. Лицензия представляет наиболее мерзкую свою разновидность - платную подписку на ограниченный период. Что ж, будем исправлять.

Читать статью целиком »
Просмотров: 555 | Комментариев: 1

Создание и скачивание файлов в браузере на JavaScript

01.10.2024 | Категория: Web-мастеру и не только | Автор: ManHunter
Сохранять изображения из браузера мы уже научились, теперь разберем более общий пример, когда надо создать виртуальный файл и отправить его на скачивание. Современными средствами JavaScript можно "на лету" создавать ZIP-архивы, PDF-файлы и даже некоторые форматы офисных документов. Подобное управление файлами посредством JavaScript на стороне клиента значительно повышает удобство работы, так как все манипуляции выполняются без необходимости поддерживать связь с сервером.
  1. function virtual_download (datafile_namemime_type) {
  2.     // Создать элемент Blob
  3.     var blob=new Blob([data], { typemime_type });
  4.     var url=window.URL.createObjectURL(blob);
  5.  
  6.     // Создать элемент ссылки
  7.     var link=document.createElement('a');
  8.     link.href=url;
  9.     link.download=file_name;
  10.     // Добавить элемент в DOM
  11.     document.body.appendChild(link);
  12.     // Эмуляция клика на ссылке
  13.     link.click();
  14.     // Убрать элемент из DOM
  15.     document.body.removeChild(link);
  16.     // Очистить объект Blob
  17.     setTimeout(function() {
  18.         window.URL.revokeObjectURL(url)
  19.     }, 1000);
  20. }
Параметры вызова: data - содержимое виртуального файла, file_name - имя файла, который будет передан на скачивание, и mime_type - MIME-тип файла. Скрипт автоматически создает элемент ссылки, добавляет его в DOM, настраивает у него атрибуты href с содержимым скачиваемого файла и download с указанным имени файла. После этого эмулируется клик на ссылке, что непосредственно запускает загрузку.

Читать статью целиком »
Просмотров: 783 | Комментариев: 3

Алгоритм хеширования MaHash8 на Ассемблере

28.09.2024 | Категория: Образ мышления: Assembler | Автор: ManHunter
MaHash8 - эффективная функция с высокой производительностью, которая позволяет выполнять операции хеширования с минимальным количеством коллизий. Она основана на простых операциях, имеет очень понятную структуру и легко реализуется на различных языках программирования.

В алгоритме MaHash8 для хеширования используется таблица подстановки, позаимствованная из криптоалгоритма Skipjack. Если не хотите таскать готовую таблицу, то ее можно создавать динамически, используя формулы по приведенной ссылке.
  1. sTable  db 0a3h,0d7h,009h,083h,0f8h,048h,0f6h,0f4h,0b3h,021h,015h,078h
  2.         db 099h,0b1h,0afh,0f9h,0e7h,02dh,04dh,08ah,0ceh,04ch,0cah,02eh
  3.         db 052h,095h,0d9h,01eh,04eh,038h,044h,028h,00ah,0dfh,002h,0a0h
  4.         db 017h,0f1h,060h,068h,012h,0b7h,07ah,0c3h,0e9h,0fah,03dh,053h
  5.         db 096h,084h,06bh,0bah,0f2h,063h,09ah,019h,07ch,0aeh,0e5h,0f5h
  6.         db 0f7h,016h,06ah,0a2h,039h,0b6h,07bh,00fh,0c1h,093h,081h,01bh
  7.         db 0eeh,0b4h,01ah,0eah,0d0h,091h,02fh,0b8h,055h,0b9h,0dah,085h
  8.         db 03fh,041h,0bfh,0e0h,05ah,058h,080h,05fh,066h,00bh,0d8h,090h
  9.         db 035h,0d5h,0c0h,0a7h,033h,006h,065h,069h,045h,000h,094h,056h
  10.         db 06dh,098h,09bh,076h,097h,0fch,0b2h,0c2h,0b0h,0feh,0dbh,020h
  11.         db 0e1h,0ebh,0d6h,0e4h,0ddh,047h,04ah,01dh,042h,0edh,09eh,06eh
  12.         db 049h,03ch,0cdh,043h,027h,0d2h,007h,0d4h,0deh,0c7h,067h,018h
  13.         db 089h,0cbh,030h,01fh,08dh,0c6h,08fh,0aah,0c8h,074h,0dch,0c9h
  14.         db 05dh,05ch,031h,0a4h,070h,088h,061h,02ch,09fh,00dh,02bh,087h
  15.         db 050h,082h,054h,064h,026h,07dh,003h,040h,034h,04bh,01ch,073h
  16.         db 0d1h,0c4h,0fdh,03bh,0cch,0fbh,07fh,0abh,0e6h,03eh,05bh,0a5h
  17.         db 0adh,004h,023h,09ch,014h,051h,022h,0f0h,029h,079h,071h,07eh
  18.         db 0ffh,08ch,00eh,0e2h,00ch,0efh,0bch,072h,075h,06fh,037h,0a1h
  19.         db 0ech,0d3h,08eh,062h,08bh,086h,010h,0e8h,008h,077h,011h,0beh
  20.         db 092h,04fh,024h,0c5h,032h,036h,09dh,0cfh,0f3h,0a6h,0bbh,0ach
  21.         db 05eh,06ch,0a9h,013h,057h,025h,0b5h,0e3h,0bdh,0a8h,03ah,001h
  22.         db 005h,059h,02ah,046h
Ассемблерный вариант 32-битной версии функции MaHash8 выглядит примерно так. Я постарался ее максимально оптимизировать, в результате этого функция не использует никакие внешние данные и не требует выделения дополнительной памяти, все расчеты выполняются внутри нее.
  1. ;-----------------------------------------------------------------------
  2. ; Функция вычисления хеша MaHash8
  3. ; Автор: ManHunter / PCL
  4. ; https://www.manhunter.ru
  5. ;-----------------------------------------------------------------------
  6. ; Параметры:
  7. ;       lpData - указатель на строку
  8. ;       dSize  - длина строки
  9. ; На выходе:
  10. ;       EAX = полученный хеш
  11. ;-----------------------------------------------------------------------
  12. proc    MaHash8 lpData:DWORD, dSize:DWORD
  13.         locals
  14.                 hash1 dd ?
  15.                 hash2 dd ?
  16.         endl
  17.  
  18.         push    ebx ecx edx esi edi
  19.  
  20.         mov     esi,[lpData]
  21.         mov     eax,[dSize]
  22.         mov     [hash1],eax
  23.         mov     [hash2],eax
  24.         xor     ecx,ecx
  25. .loc_loop:
  26.         cmp     ecx,[dSize]
  27.         je      .loc_done
  28.  
  29.         mov     al,byte[esi]
  30.         add     eax,ecx
  31.         movzx   eax,al
  32.         movzx   edx,byte[sTable+eax]
  33.         add     [hash1],edx
  34.  
  35.         mov     edx,[hash1]
  36.         shl     edx,6
  37.         mov     eax,[hash1]
  38.         shr     eax,11
  39.         xor     eax,edx
  40.         add     eax,[hash1]
  41.         rol     eax,14
  42.         mov     [hash1],eax
  43.  
  44.         lodsb
  45.         add     eax,ecx
  46.         movzx   eax,al
  47.         movzx   edx,byte[sTable+eax]
  48.         add     [hash2],edx
  49.  
  50.         mov     edx,[hash2]
  51.         shl     edx,6
  52.         mov     eax,[hash2]
  53.         shr     eax,11
  54.         xor     eax,edx
  55.         add     eax,[hash2]
  56.         rol     eax,18
  57.         mov     [hash2],eax
  58.  
  59.         mov     ebx,[hash1]
  60.         mov     edi,[hash2]
  61.  
  62.         mov     eax,ebx
  63.         shr     eax,16
  64.         movzx   edx,ax
  65.         mov     eax,edi
  66.         shl     eax,16
  67.         or      eax,edx
  68.         mov     [hash1],eax
  69.  
  70.         mov     eax,edi
  71.         shr     eax,16
  72.         movzx   edx,ax
  73.         mov     eax,ebx
  74.         shl     eax,16
  75.         or      eax,edx
  76.         mov     [hash2],eax
  77.  
  78.         inc     ecx
  79.         jmp     .loc_loop
  80.  
  81. .loc_done:
  82.         mov     eax,[hash2]
  83.         xor     eax,[hash1]
  84.  
  85.         pop     edi esi edx ecx ebx
  86.         ret
  87. endp
На выходе передаются два параметра: lpData - указатель на блок данных, которые надо прохешировать, и dSize - длина этих данных. Результат возвращается в регистре EAX.

Читать статью целиком »
Просмотров: 335 | Комментариев: 3

01 ... 06 07 08 09 10 11 12 ... 422
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.08 сек. / MySQL: 2 (0.0174 сек.) / Память: 4.5 Mb
Наверх