Blog. Just Blog

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

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

Прячем IP-адрес сервера в ссылке

26.06.2018 | Категория: Web-мастеру и не только | Автор: ManHunter
Все мы давно привыкли, что IP-адрес записывается при помощи 4 октетов, разделенных точками. Я имею в виду IPv4. Но по стандарту протокол TCP/IP также поддерживает адресацию, когда IP-адрес задан единым числом. Это число получается из октетов IP-адреса по определенной формуле. К примеру, IP-адрес главной страницы поисковика Google 64.233.165.94. Разобьем его на октеты и преобразуем в число:

(64<<24) + (233<<16) + (165<<8) + 94 = 1089054046
или более наглядный вариант:

(64*256*256*256) + (233*256*256) + (165*256) + 94 = 1089054046
В PHP такое преобразование делается вообще одной командой ip2long. Теперь подставляем найденное значение в ссылку вместо IP-адреса: закодированная ссылка на Google. Современные браузеры распознают такие подмены и при наведении курсора на ссылку показывают корректный IP-адрес, но можете посмотреть в исходном коде страницы и убедиться, что вместо IP-адреса там действительно стоит число. При клике по этой ссылке открывается главная страница поисковика. По таким ссылкам можно загружать файлы, открывать сайты, пересылать данные, делать все то же самое, что и с обычными адресами. Единственное условие, чтобы целевой ресурс однозначно сопоставлялся с конкретным IP-адресом.

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

Установка окна по центру с учетом нескольких мониторов

24.06.2018 | Категория: Образ мышления: Assembler | Автор: ManHunter
И вновь работа над ошибками. На этот раз переосмысление статьи об установке окна по центру экрана. Приведенный там код работает без проблем, но только для единственного монитора, при наличии двух и более мониторов результат получается неправильным. Основные принципы работы с несколькими мониторами я расписал в предыдущей статье, повторять не буду.
  1. ;-------------------------------------------------------------------------
  2. ; Процедура перемещения окна в центр экрана. Если окно развернуто или
  3. ; его размеры превышают размеры экрана, то окно не перемещается
  4. ; Параметры:
  5. ;   hwnd - хэндл окна
  6. ;   mode - относительно каких координат центровать окно (1 - только
  7. ;          рабочая область экрана с учетом размеров панели задач и
  8. ;          различных тулбаров, 0 - относительно размеров всего экрана)
  9. ;-------------------------------------------------------------------------
  10. proc    WindowToCenterEx hwnd:DWORD, mode:DWORD
  11.  
  12.         MONITOR_DEFAULTTONEAREST = 2
  13.  
  14.         struct MONITORINFO
  15.           cbSize    dd ?
  16.           rcMonitor RECT
  17.           rcWork    RECT
  18.           dwFlags   dd ?
  19.         ends
  20.  
  21.         locals
  22.           minfo MONITORINFO
  23.           coord RECT
  24.         endl
  25.  
  26.         ; Сохранить все регистры
  27.         pusha
  28.  
  29.         ; Такое окно существует?
  30.         invoke  IsWindow,[hwnd]
  31.         or      eax,eax
  32.         jz      .loc_ret
  33.         ; Окно развернуто на весь экран?
  34.         invoke  IsZoomed,[hwnd]
  35.         or      eax,eax
  36.         jnz     .loc_ret
  37.  
  38.         ; Получить размеры окна
  39.         lea     eax,[coord]
  40.         invoke  GetWindowRect,[hwnd],eax
  41.  
  42.         ; Монитор, на котором находится окно
  43.         invoke  MonitorFromWindow,[hwnd],MONITOR_DEFAULTTONEAREST
  44.  
  45.         ; В регистре ESI указатель на структуру информации о мониторе
  46.         lea     esi,[minfo]
  47.         mov     [esi+MONITORINFO.cbSize],sizeof.MONITORINFO
  48.         invoke  GetMonitorInfo,eax,esi
  49.  
  50.         ; Весь экран
  51.         lea     esi,[minfo.rcMonitor]
  52.         cmp     [mode],0
  53.         je      @f
  54.         ; Рабочая область экрана
  55.         lea     esi,[minfo.rcWork]
  56. @@:
  57.         mov     eax,[esi+RECT.right]
  58.         sub     eax,[esi+RECT.left]
  59.  
  60.         lea     edi,[coord]
  61.         mov     ebx,[edi+RECT.right]
  62.         sub     ebx,[edi+RECT.left]
  63.  
  64.         ; Окно шире монитора
  65.         cmp     ebx,eax
  66.         jg      .loc_ret
  67.  
  68.         mov     ecx,[esi+RECT.bottom]
  69.         sub     ecx,[esi+RECT.top]
  70.  
  71.         mov     edx,[edi+RECT.bottom]
  72.         sub     edx,[edi+RECT.top]
  73.  
  74.         ; Окно выше монитора
  75.         cmp     edx,ecx
  76.         jg      .loc_ret
  77.  
  78.         shr     ebx,1
  79.         shr     eax,1
  80.         add     eax,[esi+RECT.left]
  81.         sub     eax,ebx
  82.  
  83.         shr     edx,1
  84.         shr     ecx,1
  85.         add     ecx,[esi+RECT.top]
  86.         sub     ecx,edx
  87.  
  88.         ; Разместить окно по центру монитора
  89.         invoke  SetWindowPos,[hwnd],NULL,eax,ecx,NULL,NULL,\
  90.                 SWP_NOSIZE+SWP_NOZORDER
  91.  
  92. .loc_ret:
  93.         ; Восстановить все регистры
  94.         popa
  95.         ret
  96. endp
Параметры вызова точно такие же, как и у старой функции: hwnd - хэндл окна, которое надо отцентровать, mode - режим центровки: 0 - установить окно по центру всего экрана, 1 - установить окно по центру рабочей области, то есть с учетом размеров панели задач и различных тулбаров.

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

Отпуск во Вьетнаме

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

Отпуск во Вьетнаме

Наконец долгожданный отпуск. Возможность умчаться подальше от всех этих пафосных мундиалей, плановых отключений горячей воды, километров кода, бесконечных пробок, угрюмых лиц в метро и прочих радостей городской жизни. На этот раз я решил поехать действительно подальше и в качестве пункта назначения выбрал Вьетнам, остров Фукуок. С культурой Азии я уже познакомился в Китае, поэтому летел с большим интересом.

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

Shutter Count Viewer 1.7

09.06.2018 | Категория: Мои программы | Автор: ManHunter

Скриншот программы Shutter Count Viewer

Программа Shutter Count Viewer предназначена для проверки зеркальных фотоаппаратов производства Nikon, Pentax, Samsung, Sony и некоторых моделей зеркальных фотоаппаратов Canon перед покупкой или продажей, чтобы узнать реальный пробег камеры. Для этого достаточно сделать снимок в формате JPEG или RAW и открыть фотографию в программе. Если фотоаппарат поддерживает эту функцию, то Shutter Count Viewer сразу же покажет счетчик сделанных кадров, информацию о дате съемки, версии программного обеспечения, производителе и модели камеры, а также комментарии и описания фотографии, если в фотоаппарате можно устанавливать эти параметры. Счетчик кадров отображается не только в числовом виде, но и в процентном соотношении от заявленного производителем ресурса затвора. Это позволяет наглядно оценить активность использования камеры. Но все же помните, что ресурс затвора - это не время до поломки фотоаппарата, а количество кадров, которое камера гарантированно сделает при условии правильной эксплуатации.

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

Исследование защиты программы Franzis HDR Projects

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

Скриншот программы Franzis HDR Projects

Franzis HDR Projects - графический редактор для создания HDR изображений. С его помощью можно собрать эффектный снимок из нескольких кадров с разной экспозицией, а также откорректировать одиночный снимок, чтобы он стал максимально похож на HDR-изображение. В программе множество готовых пресетов и ручных настроек, обламывает только ограничение по времени бесплатного использования.

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

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2018
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0097 сек.) / Память: 4.75 Mb
Наверх