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

Блокировка отдельных IP c помощью политики безопасности
07.11.2011 | Категория: Software | Автор: ManHunter

Блокировка отдельных IP c помощью политики безопасности
С развитием интернета и сетевых сервисов все более актуальна задача отсеивания ненужных ресурсов. Это могут быть рекламные сайты, различные сервисы для проверки активации всякого коммерческого софта, да и просто сайты, по какой-либо причине нежелательные для посещения. Обычно такая блокировка обеспечивается на уровне браузеров (баннерорезки), системных служб (AdMuncher, Proxomitron, HtFilter), прописыванием перенаправлений в файле hosts, а также разграничением доступа в правилах фаервола. При всем этом многообразии способов ограничения доступа в сеть, иногда встречается софт, аффтары которого однозначно больны варезом головного мозга. Некоторые пытаются проверять свою регистрацию через браузер, другие сканируют файл hosts на предмет наличия в нем записей о своих доменах, а совсем конченные уроды докатились даже до проверки установленных фаерволов и требуют их отключения. Для подобных клинических случаев можно использовать блокировку отдельных IP c помощью настроек политики IP-безопасности Windows.
Читать статью целиком »
Просмотров: 35447 | Комментариев: 29

Расчет CRC8 на Ассемблере
25.09.2011 | Категория: Образ мышления: Assembler | Автор: ManHunter
Контрольная сумма CRC8 применяется в основном для коротких сетевых пакетов и в микроконтроллерах. Из-за большой вероятности появления коллизий, использовать ее можно или для контроля целостности небольших объемах данных (оптимально - до 15 байт информации), или в случаях, когда возможность появления искажений исходных данных крайне мала. Алгоритм расчета CRC8 реализуется очень просто, работает очень быстро, из-за чего до сих пор находит свое применение. Первый вариант - прямой расчет.Code (Assembler) : Убрать нумерацию
- ;-----------------------------------------------------------------------
- ; Функция вычисления хеша CRC8
- ; by ManHunter / PCL
- ; http://www.manhunter.ru
- ;-----------------------------------------------------------------------
- ; Параметры:
- ; lpData - указатель на строку
- ; dSize - длина строки
- ; На выходе:
- ; AL = полученный хеш
- ;-----------------------------------------------------------------------
- proc CRC8 lpData:DWORD, dSize:DWORD
- push ebx ecx edx esi edi
- CRC8_POLYNOM = 31h
- ; Инициализация
- mov al,0FFh
- ; Длина строки
- cmp [dSize],0
- je .loc_ret
- ; Указатель на начало строки
- xor ecx,ecx
- @@:
- ; Получить символ из строки
- mov ebx,[lpData]
- xor al,byte [ebx+ecx]
- xor esi,esi
- .loc_cycle:
- test al,80h
- jz .loc_1
- shl al,1
- xor al,CRC8_POLYNOM
- jmp .loc_next
- .loc_1:
- shl al,1
- .loc_next:
- inc esi
- cmp esi,8
- jb .loc_cycle
- ; Следующий символ
- inc ecx
- cmp ecx,[dSize]
- jb @b
- .loc_ret:
- and eax,0FFh
- pop edi esi edx ecx ebx
- ret
- endp
Читать статью целиком »
Просмотров: 10369 | Комментариев: 3

Расчет хеша Adler-32 на Ассемблере
12.07.2011 | Категория: Образ мышления: Assembler | Автор: ManHunter
Adler-32 - хеш-функция, разработанная Марком Адлером, хорошо известным по его работам в области компрессии данных. Этот хеш используется в библиотеке zlib, соавтором которой и является Марк Адлер. По скорости работы Adler-32 превосходит CRC32, однако уступает ей по качеству обнаружения ошибок контрольной суммы, особенно на коротких строках. Есть несколько вариантов реализации алгоритма на разных языках и с разной степенью эффективности, мой вариант на Ассемблере такой:Code (Assembler) : Убрать нумерацию
- ;-----------------------------------------------------------------------
- ; Функция вычисления хеша Adler-32
- ; by ManHunter / PCL
- ; http://www.manhunter.ru
- ;-----------------------------------------------------------------------
- ; Параметры:
- ; lpData - указатель на строку
- ; dSize - длина строки
- ; На выходе:
- ; EAX = полученный хеш
- ;-----------------------------------------------------------------------
- proc Adler32 lpData:DWORD, dSize:DWORD
- push ebx ecx edx esi edi
- ; Инициализация
- mov edi,1 ; s1 = 1
- xor esi,esi ; s2 = 0
- ; Длина строки
- cmp [dSize],0
- je .loc_ret
- mov ebx,65521 ; base
- xor ecx,ecx
- @@:
- ; Получить символ из строки
- mov eax,[lpData]
- movzx eax,byte [eax+ecx]
- add eax,edi ; s1 = (s1 + buf[i]) % 65521
- xor edx,edx
- div ebx
- mov edi,edx
- add edx,esi ; s2 = (s2 + s1) % 65521
- mov eax,edx
- xor edx,edx
- div ebx
- mov esi,edx
- ; Следующий символ
- inc ecx
- cmp ecx,[dSize]
- jb @b
- .loc_ret:
- mov eax,esi ; adler32 = (s2 << 16) + s1
- rol eax,16
- add eax,edi
- pop edi esi edx ecx ebx
- ret
- endp
Code (Assembler) : Убрать нумерацию
- ; Сегмент данных
- section '.data' data readable writeable
- ...
- somedata db 'Yeah! I like Flat Assembler!',0 ; Исходные данные для хеширования
- ; Сегмент кода
- section '.code' code readable executable
- ...
- ; Расчет длины строки. Для бинарных данных lstrlen лучше не использовать
- invoke lstrlen,somedata
- ; Расчет Adler-32
- stdcall Adler32,somedata,eax
- ; EAX = 82E0095Dh
Читать статью целиком »
Просмотров: 4067 | Комментариев: 0

Перезагрузка компьютера из командной строки
02.07.2011 | Категория: Software | Автор: ManHunter
В некоторых случаях требуется перезагрузить компьютер из командной строки, пакетного файла, через удаленный доступ или в автоматическим режиме без участия человека (например, через планировщик). В этом случае привычная комбинация меню "Пуск" - "Завершение работы", естественно, недоступна. Можно, конечно, воспользоваться сторонними утилитами различных разработчиков, скриптами AutoIt и другими вспомогательными средствами, но они могут быть не всегда доступны. Здесь я собрал несколько способов перезагрузки компьютера с использованием команд самой операционной системы. Некоторые из них работают только на определенных версиях Windows, а некоторые универсальные.Первая универсальная команда перезагрузки через shutdown, работающая на Windows XP и Windows 7. Параметры команды: -r - перезагрузка (reboot), -f - остановить все запущенные приложения, -t 0 - перезагрузить сразу же, без ожидания.
shutdown -t 0 -r -f
Вторая команда экзотичная, выполняется через команду ping. Работает также на Windows XP и Windows 7:
ping -n 0 127.0.0.1>nul&wmic OS WHERE Primary="TRUE" CALL Win32Shutdown 6
Следующие две команды специфичны только для Windows XP. Эта работает на всех версиях Windows XP:
rundll32 user.exe,ExitWindowsExec 2
А эта работает только до версии SP2 включительно. Останавливается служба журнала событий, после чего система автоматически уходит в перезагрузку. На более новых системах подобный фокус не срабатывает.
echo y|net stop eventlog
Следующий метод перезагрузки самый громоздкий и основан на использовании скрипта VBS. Скрипт состоит из нескольких строчек, поэтому его придется создавать через команды консоли copy con имя_файла.vbs или через перенаправление вывода команды echo в файл. Зато сохраненный файл можно использовать в будущем. Такой способ подходит для Windows XP и Windows 7.
Читать статью целиком »
Просмотров: 118747 | Комментариев: 18

Алгоритм шифрования ROT13 на Ассемблере
14.06.2011 | Категория: Образ мышления: Assembler | Автор: ManHunter
Шифр ROT13 - вариация "шифра Цезаря", в котором используется сдвиг букв в алфавите или простейшая подстановка. Алгоритм не обладает даже минимальной криптостойкостью, поэтому не может применяться в серьезных системах. Вместе с тем, он часто используется при кодировании PHP-скриптов (функция str_rot13), так что алгоритм обратного кодирования будет полезен при написании расшифровщиков. Вот что у меня получилось:Code (Assembler) : Убрать нумерацию
- ;-----------------------------------------------------------------------
- ; Функция шифрования строки по алгоритму ROT13
- ; Copyright (C) ManHunter / PCL
- ; http://www.manhunter.ru
- ;-----------------------------------------------------------------------
- ; Параметры:
- ; lpData - указатель на строку
- ; dSize - длина строки
- ;-----------------------------------------------------------------------
- proc ROT13 lpData:DWORD, dSize:DWORD
- pusha
- ; Длина строки
- mov ecx,[dSize]
- or ecx,ecx
- jz .loc_ret
- ; Указатели на строку
- mov esi,[lpData]
- mov edi,esi
- .loc_crypt:
- ; Получить символ из строки
- lodsb
- inc edi
- ; Сохранить бит регистра
- mov ah,al
- and ah,20h
- ; Символ в верхний регистр
- and al,(0FFh-20h)
- cmp al,'A'
- ; Кодировать не надо
- jb .no_crypt
- cmp al,'Z'
- ; Кодировать не надо
- ja .no_crypt
- sub al,13
- ; Cимвол первой половины алфавита?
- cmp al,'A'
- jae @f
- add al,26
- @@:
- ; Восстановить бит регистра
- or al,ah
- dec edi
- ; Записать измененный символ
- stosb
- .no_crypt:
- ; Следующий символ
- loop .loc_crypt
- .loc_ret:
- popa
- ret
- endp
Читать статью целиком »
Просмотров: 6628 | Комментариев: 6
