Blog. Just Blog

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

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

Как узнать локальный IP-адрес компьютера

17.01.2024 | Категория: Образ мышления: Assembler | Автор: ManHunter
Очередной небольшой сниппет, который может пригодиться в работе. Получение IP-адреса компьютера, на котором запущено приложение. Обратите внимание, что это будет локальный адрес, например, который прописан на роутере.

Для удобства дальнейшей работы надо определить структуру, в которой содержится информация о хосте. Остальное вроде бы все штатное.
  1. ; Маска для IP
  2. mask    db '%u.%u.%u.%u',0
  3.  
  4. struct HOSTENT
  5.         h_name      dd ?
  6.         h_aliases   dd ?
  7.         h_addrtype  dw ?
  8.         h_length    dw ?
  9.         h_addr_list dd ?
  10. ends
Остальной код достаточно простой. Получаем имя компьютера, по этому имени получаем информацию о хосте, затем из структуры HOSTENT извлекаем данные о IP-адресе.
  1.         invoke  WSAStartup,0101h,wsadata
  2.         or      eax,eax
  3.         jnz     loc_ret
  4.  
  5.         ; Получить имя хоста
  6.         invoke  gethostname,szHostName,MAX_PATH
  7.         or      eax,eax
  8.         jnz     loc_clean
  9.  
  10.         ; Получить адрес хоста по имени
  11.         invoke  gethostbyname,szHostName
  12.         or      eax,eax
  13.         jz      loc_clean
  14.  
  15.         ; Указатель на массив указателей на IP
  16.         mov     eax,[eax+HOSTENT.h_addr_list]
  17.         or      eax,eax
  18.         jz      loc_clean
  19.  
  20.         ; Первый указатель
  21.         mov     eax,[eax]
  22.         or      eax,eax
  23.         jz      loc_clean
  24.  
  25.         ; Преобразовать IP из формата TCP/IP в обычный
  26.         invoke  ntohl,[eax]
  27.  
  28.         ; Преобразовать байты в символы
  29.         mov     ecx,4
  30. loc_loop:
  31.         movzx   ebx,al
  32.         push    ebx
  33.         shr     eax,8
  34.         loop    loc_loop
  35.  
  36.         invoke  wsprintf,szIP,mask
  37.         add     esp,24
  38.  
  39.         ; szIP -> строка с IP хоста
  40.  
  41. loc_clean:
  42.         ; Прибраться за собой
  43.         invoke  WSACleanup
В принципе, адресов может быть больше одного, так что в случае необходимости потребуется сканировать весь массив указателей. В приведенном примере берется первый адрес.

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

Монитор курса валют ВТБ 1.2

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

Скриншот программы Монитор курса валют ВТБ

Маленькие программки для мониторинга курса валют банка ВТБ, Центробанка России и Московской биржи. Позволяют оперативно отследить комфортный курс покупки или продажи долларов и евро, в результате чего можно немного сэкономить при покупке или получить максимум при продаже безналичной валюты. Программы написаны для личных нужд, но может быть пригодятся кому-нибудь еще.

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

Обработка событий IWebBrowser на Ассемблере

29.05.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter

Обработка событий IWebBrowser на Ассемблере

В предыдущей статье про работу со встроенным браузером я написал, что статус полной загрузки страницы можно отслеживать при помощи таймера и вызова метода get_ReadyState интерфейса IWebBrowser2. Способ имеет место быть, но также имеет немало недостатков. Правильное решение этой задачи - получения сигналов от объекта браузера и обработка событий IWebBrowser. Пришлось провести пару бессонных ночей в отладчике, но результат меня порадовал.

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

Список WHOIS-серверов для доменных зон

28.03.2023 | Категория: Web-мастеру и не только | Автор: ManHunter

Список WHOIS-серверов для доменных зон

Ранее я уже рассказывал про современное разнообразие доменных зон, сегодня расскажу об одном из основных инструментов для работы с доменами - сервисами WHOIS. Это особые серверы, предназначенные для получения информации о сайтах, владельцах доменных имен, местах их регистрации и расположения хостинга. Открыв свободную регистрацию доменов верхнего уровня, ICANN фактически сложила с себя обязанности о поддержке доменов второго уровня, переложив ее на регистраторов. Соответственно, практически для каждой доменной зоны первого уровня есть свой WHOIS-сервер, к которому надо обращаться за информацией.

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

Отправка POST- и GET-запросов на Ассемблере

15.02.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter

Отправка POST- и GET-запросов на Ассемблере

В наше время интернет-технологий профессиональные приложения должны уметь работать с удаленными сервисами. Хороший пример был в недавней статье про оптимизацию изображений. Тут есть все: отправка файла через POST-запрос и получение ответа в виде текстового JSON, а затем скачивание изображения по прямой ссылке через GET-запрос. Давайте реализуем работу с POST- и GET-запросами на Ассемблере, а чтобы польза от работы получилась не только теоретической, но и практической, это будет пример с оптимизацией графических файлов через API сервиса TinyPNG.

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

prev 01 02 03 04 05 06 07 08
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 3 (0.0066 сек.) / Память: 4.5 Mb
Наверх