Blog. Just Blog

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

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

Защита от спама на сайтах и форумах

14.12.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
Проблема спама в комментариях, гостевых книгах, сообщениях на форумах в настоящее время стоит очень остро. Раньше даже простенькая капча или подтверждение регистрации на форуме по e-mail были практически непреодолимым препятствием для спамботов и автосабмиттеров. Теперь появились достаточно мощные программы для авторегистрации и рассылки спама, способные реально обходить эти защиты. Никаких названий и ссылок на сайты указывать не буду, чтобы не делать рекламы этим ублюдкам. В описании одного из спамботов его аффтар хвалится:


Эксклюзивная возможность - программа обходит ЛЮБЫЕ виды защиты от автоматической регистрации и автосабмита! Такие, как:
- Защита при помощи пиктокода (тикетов) типа "Введите число, которое видите".
- Защита при помощи активации по e-mail.
- Защита при помощи некоторых Java-скриптов.
- Возможность распознавания защиты в виде арифметических операций и логических вопросов


а на следующей же страничке расписывается в своей беспомощности:


Изредка на некоторых форумах встречается защита от автосабмита в виде java- или VB-скрипта.
Как показала практика, чтобы научить программу обходить такого рода защиту, совсем необязательно писать полнофункциональный обработчик скрипта. Главное, чтобы такой вид защиты был достаточно распространён: нецелесообразно создавать обработчик, если такая защита используется только на одном-двух форумах.


Значит наш удар будет нанесен в самое слабое место спамботов - невозможность обрабатывать формы, защищенные при помощи скриптов JavaScript. Лично я противник использования на сайтах различных навороченных капчей, которые не то что робот, а и не каждый здоровый человек разберет. После первого же неправильного ввода желание оставлять комментарий, да и вообще посещать подобный ресурс, очень резко уменьшается. Туда же идут всякие "сколько будет 2+3", "что нарисовано на картинке" и прочие лишние телодвижения, не связанные непосредственно с комментированием.

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

Обработка перетаскивания файлов (Drag'n'Drop)

10.12.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Если в вашем приложении используется обработка файлов, то кроме открытия через стандартные диалоги выбора файла и каталога, можно получать их из Проводника Windows перетаскиванием. Обработка перетаскивания файлов выполняется в два этапа. При инициализации диалогового окна приложения должна вызываться функция DragAcceptFiles. Параметр функции TRUE разрешает принятие файлов окном, а FALSE его запрещает, так что прием файлов можно регулировать динамически. Непосредственно прием файлов окном выполняется функцией DragQueryFile.
  1. ; Сегмент кода
  2. section '.code' code readable executable
  3.         ... 
  4. ; Процедура обработчика окна
  5. proc DialogProc hwnddlg,msg,wparam,lparam 
  6.         ...
  7.         ; Инициализация окна
  8.         cmp     [msg],WM_INITDIALOG
  9.         je      wminitdialog
  10.         ; Обработка перетаскивания файлов
  11.         cmp     [msg],WM_DROPFILES
  12.         je      wmdropfiles
  13.         ...
  14. wminitdialog:
  15.         ; Разрешить окну принимать файлы
  16.         invoke  DragAcceptFiles,[hwnddlg],TRUE
  17.         jmp     processed
  18.  
  19. wmdropfiles:
  20.         ; Обработка полученных файлов. Функция DragQueryFile возвращает имя
  21.         ; файла с указанным индексом (нумерация индексов начинается с нуля).
  22.         ; Для получения общего количества переданных файлов ее надо вызвать с
  23.         ; индексом равным 0FFFFFFFFh
  24.         invoke  DragQueryFile,[wparam],0FFFFFFFFh,NULL,NULL
  25.         ; В регистре EAX количество переданных файлов
  26.  
  27.         ; Перебрать по очереди все переданные окну файлы
  28.         xor     ecx,ecx
  29. process_file:
  30.         push    ecx eax
  31.         ; Получить имя файла или каталога в буфер fname
  32.         invoke  DragQueryFile,[wparam],ecx,fname,100h
  33.         ...
  34.         ; Тут будет обработчик переданных файлов и каталогов
  35.         ...
  36.         pop     eax ecx
  37.         inc     ecx
  38.         cmp     ecx,eax
  39.         jne     process_file
  40.  
  41.         ; Освободить дескриптор операции
  42.         invoke  DragFinish,[wparam]
  43.         ...
Если требуется получить только один файл, то запрашивать общее количество файлов не обязательно, достаточно вызвать DragQueryFile с нулевым индексом файла. Если в интерфейсе предусмотрено несколько полей для приема файлов, то может возникнуть необходимость определять, в какое именно поле выполнятся сброс файла. Делать это можно, например, через субклассирование, но есть способ проще. При помощи функции DragQueryPoint можно определять координаты точки внутри окна, на которых был выполнен бросок файла. Сравнив их с координатами полей ввода, легко определить, какому из них предназначался файл.

После выполнения всех необходимых действий с файлом, надо освободить память, выделенную под файлы, при помощи функции DragFinish.

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

Готовим свинину в пиве

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

Готовим свинину в пиве

Как я и говорил, мясо я люблю больше шоколада. Поэтому сегодня у меня на обед свинина в пиве.

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

Фишинг серийников в Blumentals Screensaver Factory

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


Окно настроек скринсейвера

В зависимости от использованной версии "фабрики" вкладок может быть больше или меньше, но общий стиль оформления остается неизменный.

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

Окно поверх всех окон (Always On Top)

03.12.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Установка окна поверх всех других окон бывает удобна, когда надо привлечь внимание пользователя к важной информации, или окно с какими-либо данными должно находиться всегда перед глазами. Такое свойство окна можно прописать сразу в ресурсах, а можно изменять динамически, например при нажатии на кнопку-чекбокс "Always on top" или при изменении каких-нибудь внутренних настроек вашей программы.

Для создания окна поверх всех других окон, оно должно быть описано в ресурсах с флагом DS_SYSMODAL. Для динамического изменения используется функция SetWindowPos с флагами SWP_NOMOVE и SWP_NOSIZE. Флаги нужны для того, чтобы не изменять размеры и положение окна.
  1. ; Идентификатор чекбокса в ресурсах
  2. ID_ONTOP        = 101
  3.  
  4. ; Сегмент кода
  5. section '.code' code readable executable
  6.         ...
  7. ; Процедура обработчика окна
  8. proc DialogProc hwnddlg,msg,wparam,lparam
  9.         ; Обработка нажатия на кнопку-чекбокс
  10.         cmp     [wparam],BN_CLICKED shl 16 + ID_ONTOP
  11.         je      .ontop
  12.         ...
  13. .ontop:
  14.         ; Получить состояние чекбокса
  15.         invoke  IsDlgButtonChecked,[hwnddlg],ID_ONTOP
  16.         cmp     eax,BST_CHECKED
  17.         ; По умолчанию будем считать что галочка поставлена
  18.         mov     eax,HWND_TOPMOST
  19.         je      @f
  20.         ; Галочка не поставлена, убрать атрибут "поверх всех окон"
  21.         mov     eax,HWND_NOTOPMOST
  22. @@:
  23.         ; Установить параметр окна "поверх всех окон", изменение размера
  24.         ; и положения окна не производится, это установлено флагами
  25.         invoke  SetWindowPos,[hwnddlg],eax,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE
  26.         jmp     .processed
  27.         ...
  28.  
  29. ; Секция ресурсов
  30. section '.rsrc' resource data readable
  31. ; Диалог описан со стилем DS_SYSMODAL - поверх всех окон
  32. dialog demonstration, 'Always on top Demo', 0, 0, 190, 55,\
  33.         WS_CAPTION+WS_SYSMENU+DS_CENTER+DS_SYSMODAL
  34.         ...
  35.         ; Кнопка-чекбокс, которая будет управлять положением окна
  36.         dialogitem 'BUTTON','Always on top', ID_ONTOP, 5, 150, 63, 13,\
  37.         WS_VISIBLE+BS_AUTOCHECKBOX+BS_FLAT
  38.         ...
В приведенном примере при поставленной галочке "Always on top" окно будет находиться поверх других окон. Исходник с откомпилированным файлом прилагается.

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

01 ... 350 351 352 353 354 355 356 ... 362
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2022
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.12 сек. / MySQL: 2 (0.0395 сек.) / Память: 5 Mb
Наверх