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

Расчет хеша MD5 на Ассемблере
23.11.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Функция расчета хеша MD5 на Ассемблере. Готовых решений на FASM как всегда не было, пришлось портировать из MASM. Для работы процедуры в сегменте .data надо подготовить следующие данные:Code (Assembler) : Убрать нумерацию
- ; Сегмент данных
- section '.data' data readable writeable
- ...
- ; Шаблоны функции wsprintf для перевода хеша в строковый вид,
- ; при необходимости можно оставить только какой-нибудь один
- szMD5Format1 db '%.8X%.8X%.8X%.8X',0 ; Для получения заглавных букв
- szMD5Format2 db '%.8x%.8x%.8x%.8x',0 ; Для маленьких букв в строке хеша
- stMD5Result:
- stdtA dd ? ; Переменные для получения и хранения
- stdtB dd ? ; результата хеширования
- stdtC dd ?
- stdtD dd ?
- stMD5Hash rb 33 ; Буфер для строки хеша в формате ASCIIZ
Читать статью целиком »
Просмотров: 8273 | Комментариев: 5

Проверка принадлежности IP-адреса заданному диапазону
19.11.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
Проверка вхождения IP в заданный диапазон может применяться во многих ситуациях. Например бан всей подсетки злоумышленника, принудительное ограничение скорости для зарубежного трафика, переадресация на различные разделы сайта в зависимости от провайдера пользователя и т.д. Я использую такие функции:Code (PHP) : Убрать нумерацию
- // ------------------------------------------------------------
- // Проверка вхождения IP в заданный диапазон
- // На входе:
- // $ip - массив октетов проверяемого IP
- // $ip_start - массив октетов начала интервала
- // $ip_end - массив октетов конца интервала
- // В интервалах допускаются маски '*'
- // На выходе: TRUE или FALSE, входит IP или нет в диапазон
- // ------------------------------------------------------------
- function chk_ips($ip,$ip_start,$ip_end) {
- for ($i=0; $i<4; $i++) {
- if ($ip_start[$i]=='*') { $ip_start[$i]='0'; }
- if ($ip_end[$i]=='*') { $ip_end[$i]='255'; }
- }
- $ip_num=ip2long(join('.',$ip));
- if ($ip_num>=ip2long(join('.',$ip_start))
- && $ip_num<=ip2long(join('.',$ip_end))) {
- // IP входит в интервал
- return true;
- }
- else {
- // IP не входит в интервал
- return false;
- }
- }
Читать статью целиком »
Просмотров: 16202 | Комментариев: 1

Как качать софт и игры с Giveaway of the Day
15.11.2008 | Категория: Темная сторона Силы | Автор: ManHunter
Пару лет назад появился и успешно работает интересный проект - Giveaway of the Day и их дочерний проект Game Giveaway of the Day. Смысл их в том, что каждый день они выкладывают в свободный доступ какую-нибудь коммерческую программу или игру с ключом или серийным номером.
Giveaway of the day - новое слово в распространении компьютерных программ. Каждый день мы предлагаем вам лицензированные программы совершенно бесплатно, чтобы вам не пришлось их покупать.
Более подробно о проекте можете почитать на офсайте. Это не варез, а совершенно легальные ключи и дистрибутивы программ, которые разработчики сами предоставляют для распространения. В чем же тогда подвох? А фишка в том, что установка или регистрация такой программы доступна только в ограниченный период времени, а именно 24 часа (с 11.00 до 11.00 по московскому времени). Дистрибутивы и активаторы соединяются с сервером Giveaway of the day, выполняют проверку, и если срок установки еще не закончился, то запускают основной инсталлятор или прописывают в реестр регистрационные данные. По истечению срока установки "просроченные" дистрибутивы становятся бесполезны. Можно ли получить чистый дистрибутив с регистрационными данными, но без ограничений на время установки? Легко!
Читать статью целиком »
Просмотров: 9904 | Комментариев: 15

Создание выпадающего списка (Combobox)
13.11.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Выпадающий список ComboBox описывается через ресурсы, но заполняется элементами отдельно, на этапе инициализации родительского окна. Для удобства заполнения выпадающих списков я написал и использую такой код.Code (Assembler) : Убрать нумерацию
- ; Идентификатор списка в ресурсах
- ID_LIST = 104
- ; Сегмент данных
- section '.data' data readable writeable
- ; Элементы списка в формате ASCIIZ
- items db 'item 0',0
- db 'item 1',0
- db 'item 2',0
- db 'item 3',0
- db 0 ; Признак окончания списка
- CtrlID dd ? ; Хэндл списка
- ; Сегмент кода
- section '.code' code readable executable
- ...
- ; Процедура обработчика окна
- proc DialogProc hwnddlg,msg,wparam,lparam
- ...
- ; Инициализация окна?
- cmp [msg], WM_INITDIALOG
- je wminitdialog
- ...
- wminitdialog:
- ...
- ; Заполнение списка строками
- invoke GetDlgItem,[hwnddlg],ID_LIST
- mov [CtrlID],eax
- mov esi,items ; Указатель на список элементов
- fill_list:
- invoke lstrlen,esi ; Длина строки
- or eax,eax
- jz fill_end
- push eax
- ; Добавить строку в список
- invoke SendMessage, [CtrlID], CB_ADDSTRING, 0, esi
- pop eax
- add esi,eax ; Следующий элемент списка
- inc esi
- jmp fill_list
- fill_end:
- ; Установить пункт ID=2 дефолтным, нумерация ID начинается с 0
- ; По умолчанию дефолтный первый пункт с ID=0
- invoke SendMessage, [CtrlID], CB_SETCURSEL, 2, FALSE
- ...
- ; Секция ресурсов
- section '.rsrc' resource data readable
- ...
- ; Определение выпадающего списка в ресурсах
- ; 200 - максимальный вертикальный размер раскрываемой области списка,
- ; высота самого элемента расчитывается автоматически и в ресурсах
- ; изменить ее невозможно
- dialogitem 'COMBOBOX', '', ID_LIST, 2, 10, 150, 200,\
- WS_VISIBLE+CBS_DROPDOWNLIST+CBS_HASSTRINGS+WS_VSCROLL
- ...
Читать статью целиком »
Просмотров: 10569 | Комментариев: 3

Поздравляю с Днем милиции!
10.11.2008 | Категория: Всякая всячина | Автор: ManHunter

Поздравляю с Днем милиции
Всех действующих и бывших сотрудников милиции, а особенно сотрудников подразделений специального назначения МВД, сердечно поздравляю с нашим профессиональным праздником! Желаю крепкого здоровья, счастья и мирного неба! Берегите себя!
Инженер саперного отделения ОМОН
капитан милиции - ManHunter
Просмотров: 7792 | Комментариев: 6
