Пишут что можно с помощью PacketGetNetInfoEx() Дают пример. Код (Text): ; if(PacketGetNetInfoEx(adapterlist[open-1],&ipbuff,&npflen)) ; { ; sin=*(struct sockaddr_in *)&(ipbuff.Broadcast); ; printf("[Broadcast:]\t%.16s\t",inet_ntoa(sin.sin_addr)); ; ; sin=*(struct sockaddr_in *)&(ipbuff.SubnetMask); ; printf("[SubnetMask:]\t%.16s\n",inet_ntoa(sin.sin_addr)); ; ; sin=*(struct sockaddr_in *)&(ipbuff.IPAddress); ; printf("[IPAddress:]\t%.16s\t",inet_ntoa(sin.sin_addr)); ; myip=ntohl(sin.sin_addr.s_addr); Структуры Код (Text): ; typedef struct npf_if_addr { ; struct sockaddr_storage IPAddress; ///< IP address. ; struct sockaddr_storage SubnetMask; ///< Netmask for that address. ; struct sockaddr_storage Broadcast; ///< Broadcast address. ; }npf_if_addr; npf_if_addr struct IPAddress sockaddr_in <> SubnetMask sockaddr_in <> Broadcast sockaddr_in <> npf_if_addr ends ipbuff npf_if_addr <> sin sockaddr_in <> Помогите перевести в masm это ... Код (Text): sin=*(struct sockaddr_in *)&(ipbuff.IPAddress); printf("[IPAddress:]\t%.16s\t",inet_ntoa(sin.sin_addr)); Пожа-а-а-алуйта! Спасибо.)))
Если перевести это на masm, то ... Код (Text): sin=*(struct sockaddr_in *)&(ipbuff.IPAddress); printf("[IPAddress:]\t%.16s\t",inet_ntoa(sin.sin_addr)); ... так правильно? Код (Text): mov eax, ha invoke PacketGetNetInfoEx, dword ptr [eax], addr ipbuff, 16 lea esi,ipbuff lea ecx,(npf_if_addr ptr [esi]).IPAddress lea eax,(in_addr ptr [ecx]).S_un.S_addr invoke inet_ntoa,eax Подскажите пожалуйста !!! ))
Пытаюсь найти локальный ip. Чего-то бред какой-то выдает ((( Код (Text): .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\masm32.inc include \masm32\include\user32.inc include \masm32\include\wsock32.inc include ..\packet\packet.inc include ..\wpcap\wpcap.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\masm32.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\wsock32.lib includelib ..\packet\packet.lib includelib ..\wpcap\wpcap.lib getip PROTO :DWORD .data szformat db '%hS',0 szErrOpenDev db 'Unable to open the adapter.',0 crlf db 13,10,0 szErrpcap_findalldevs db '[-] Error in pcap_findalldevs',0 DevSelection dd 1 .data? adhandle pcap_t <?> alldevs pcap_if_t <?> errbuf db [PCAP_ERRBUF_SIZE] dup (?) buffsz db [MAX_PATH] dup (?) .code start: invoke pcap_findalldevs,addr alldevs,addr errbuf .if (eax == -1) invoke StdOut, addr szErrpcap_findalldevs .endif mov eax,1 assume ecx:ptr pcap_if mov ecx,alldevs assume edx:ptr pcap_if mov edx,alldevs .while (eax != DevSelection) assume edx:ptr pcap_if mov edx,[ecx].next mov ecx,edx inc eax .endw invoke wsprintf,addr buffsz, addr szformat,[edx]._name invoke pcap_open_live,addr buffsz,\ ;имя устройства 0,0,0,0 mov adhandle,eax .if !eax invoke StdOut, addr szErrOpenDev invoke pcap_freealldevs,alldevs jmp __exit .endif invoke getip, adhandle invoke pcap_freealldevs,alldevs __exit: invoke ExitProcess,0 ;=================================================================== .data szformatMAC_t db 'ip Address: %s ',0 npf_if_addr struct IPAddress sockaddr_in <> SubnetMask sockaddr_in <> Broadcast sockaddr_in <> npf_if_addr ends ipbuff npf_if_addr <> sin sockaddr_in <> .code getip proc ha:DWORD mov eax, ha invoke PacketGetNetInfoEx, dword ptr [eax], addr ipbuff, 16;= MAX_NETWORK_ADDRESSES lea esi,ipbuff lea ecx,(npf_if_addr ptr [esi]).IPAddress lea eax,(in_addr ptr [ecx]).S_un.S_addr invoke inet_ntoa,eax push eax push offset szformatMAC_t push offset buffsz call wsprintf invoke StdOut, addr buffsz invoke StdOut, addr crlf ret getip endp end start Кто пользовал эту PacketGetNetInfoEx() отзовитесь !!!