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

Защита от спама на сайтах и форумах
14.12.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
Проблема спама в комментариях, гостевых книгах, сообщениях на форумах в настоящее время стоит очень остро. Раньше даже простенькая капча или подтверждение регистрации на форуме по e-mail были практически непреодолимым препятствием для спамботов и автосабмиттеров. Теперь появились достаточно мощные программы для авторегистрации и рассылки спама, способные реально обходить эти защиты. Никаких названий и ссылок на сайты указывать не буду, чтобы не делать рекламы этим ублюдкам. В описании одного из спамботов его аффтар хвалится:
Эксклюзивная возможность - программа обходит ЛЮБЫЕ виды защиты от автоматической регистрации и автосабмита! Такие, как:
- Защита при помощи пиктокода (тикетов) типа "Введите число, которое видите".
- Защита при помощи активации по e-mail.
- Защита при помощи некоторых Java-скриптов.
- Возможность распознавания защиты в виде арифметических операций и логических вопросов
а на следующей же страничке расписывается в своей беспомощности:
Изредка на некоторых форумах встречается защита от автосабмита в виде java- или VB-скрипта.
Как показала практика, чтобы научить программу обходить такого рода защиту, совсем необязательно писать полнофункциональный обработчик скрипта. Главное, чтобы такой вид защиты был достаточно распространён: нецелесообразно создавать обработчик, если такая защита используется только на одном-двух форумах.
Значит наш удар будет нанесен в самое слабое место спамботов - невозможность обрабатывать формы, защищенные при помощи скриптов JavaScript. Лично я противник использования на сайтах различных навороченных капчей, которые не то что робот, а и не каждый здоровый человек разберет. После первого же неправильного ввода желание оставлять комментарий, да и вообще посещать подобный ресурс, очень резко уменьшается. Туда же идут всякие "сколько будет 2+3", "что нарисовано на картинке" и прочие лишние телодвижения, не связанные непосредственно с комментированием.
Читать статью целиком »
Просмотров: 31323 | Комментариев: 64

Обработка перетаскивания файлов (Drag'n'Drop)
10.12.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Если в вашем приложении используется обработка файлов, то кроме открытия через стандартные диалоги выбора файла и каталога, можно получать их из Проводника Windows перетаскиванием. Обработка перетаскивания файлов выполняется в два этапа. При инициализации диалогового окна приложения должна вызываться функция DragAcceptFiles. Параметр функции TRUE разрешает принятие файлов окном, а FALSE его запрещает, так что прием файлов можно регулировать динамически. Непосредственно прием файлов окном выполняется функцией DragQueryFile.Code (Assembler) : Убрать нумерацию
- ; Сегмент кода
- section '.code' code readable executable
- ...
- ; Процедура обработчика окна
- proc DialogProc hwnddlg,msg,wparam,lparam
- ...
- ; Инициализация окна
- cmp [msg],WM_INITDIALOG
- je wminitdialog
- ; Обработка перетаскивания файлов
- cmp [msg],WM_DROPFILES
- je wmdropfiles
- ...
- wminitdialog:
- ; Разрешить окну принимать файлы
- invoke DragAcceptFiles,[hwnddlg],TRUE
- jmp processed
- wmdropfiles:
- ; Обработка полученных файлов. Функция DragQueryFile возвращает имя
- ; файла с указанным индексом (нумерация индексов начинается с нуля).
- ; Для получения общего количества переданных файлов ее надо вызвать с
- ; индексом равным 0FFFFFFFFh
- invoke DragQueryFile,[wparam],0FFFFFFFFh,NULL,NULL
- ; В регистре EAX количество переданных файлов
- ; Перебрать по очереди все переданные окну файлы
- xor ecx,ecx
- process_file:
- push ecx eax
- ; Получить имя файла или каталога в буфер fname
- invoke DragQueryFile,[wparam],ecx,fname,100h
- ...
- ; Тут будет обработчик переданных файлов и каталогов
- ...
- pop eax ecx
- inc ecx
- cmp ecx,eax
- jne process_file
- ; Освободить дескриптор операции
- invoke DragFinish,[wparam]
- ...
После выполнения всех необходимых действий с файлом, надо освободить память, выделенную под файлы, при помощи функции DragFinish.
Читать статью целиком »
Просмотров: 5779 | Комментариев: 2

Готовим свинину в пиве
06.12.2008 | Категория: А еще я туда ем! | Автор: ManHunter

Готовим свинину в пиве
Как я и говорил, мясо я люблю больше шоколада. Поэтому сегодня у меня на обед свинина в пиве.
Читать статью целиком »
Просмотров: 10147 | Комментариев: 4

Фишинг серийников в Blumentals Screensaver Factory
04.12.2008 | Категория: Темная сторона Силы | Автор: ManHunter
При помощи программы Blumentals Screensaver Factory вы можете создавать красивые скринсейверы в виде слайдшоу из ваших фотографий. Саму "фабрику" можно без проблем найти в интернете, но речь сейчас не о ней, а о скринсейверах, которые сделаны с ее помощью. В Blumentals Screensaver Factory есть возможность создания коммерческих скринсейверов, защищенных серийным номером, и некоторые аффтары умудряются торговать подобными дешевками, на создание которых было затрачено всего несколько минут. Такие скринсейверы можно узнать по окну настроек:
Окно настроек скринсейвера
В зависимости от использованной версии "фабрики" вкладок может быть больше или меньше, но общий стиль оформления остается неизменный.
Читать статью целиком »
Просмотров: 6265 | Комментариев: 1

Окно поверх всех окон (Always On Top)
03.12.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Установка окна поверх всех других окон бывает удобна, когда надо привлечь внимание пользователя к важной информации, или окно с какими-либо данными должно находиться всегда перед глазами. Такое свойство окна можно прописать сразу в ресурсах, а можно изменять динамически, например при нажатии на кнопку-чекбокс "Always on top" или при изменении каких-нибудь внутренних настроек вашей программы.Для создания окна поверх всех других окон, оно должно быть описано в ресурсах с флагом DS_SYSMODAL. Для динамического изменения используется функция SetWindowPos с флагами SWP_NOMOVE и SWP_NOSIZE. Флаги нужны для того, чтобы не изменять размеры и положение окна.
Code (Assembler) : Убрать нумерацию
- ; Идентификатор чекбокса в ресурсах
- ID_ONTOP = 101
- ; Сегмент кода
- section '.code' code readable executable
- ...
- ; Процедура обработчика окна
- proc DialogProc hwnddlg,msg,wparam,lparam
- ; Обработка нажатия на кнопку-чекбокс
- cmp [wparam],BN_CLICKED shl 16 + ID_ONTOP
- je .ontop
- ...
- .ontop:
- ; Получить состояние чекбокса
- invoke IsDlgButtonChecked,[hwnddlg],ID_ONTOP
- cmp eax,BST_CHECKED
- ; По умолчанию будем считать что галочка поставлена
- mov eax,HWND_TOPMOST
- je @f
- ; Галочка не поставлена, убрать атрибут "поверх всех окон"
- mov eax,HWND_NOTOPMOST
- @@:
- ; Установить параметр окна "поверх всех окон", изменение размера
- ; и положения окна не производится, это установлено флагами
- invoke SetWindowPos,[hwnddlg],eax,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE
- jmp .processed
- ...
- ; Секция ресурсов
- section '.rsrc' resource data readable
- ; Диалог описан со стилем DS_SYSMODAL - поверх всех окон
- dialog demonstration, 'Always on top Demo', 0, 0, 190, 55,\
- WS_CAPTION+WS_SYSMENU+DS_CENTER+DS_SYSMODAL
- ...
- ; Кнопка-чекбокс, которая будет управлять положением окна
- dialogitem 'BUTTON','Always on top', ID_ONTOP, 5, 150, 63, 13,\
- WS_VISIBLE+BS_AUTOCHECKBOX+BS_FLAT
- ...
Читать статью целиком »
Просмотров: 11990 | Комментариев: 3
