Подскажите API для получения мака по ip и для изменения арп-таблицы. И так же есть ли в винде готовая функция для пинга? ЗЫ:че пишу уже понятно...
мака по ip моно узнать через функцию SendARP из iphlpapi по поводу пинга - поиск по форуму рулит, и по сайту тоже..
Считается что соответствие mac-ip уже есть в локальной arp-таблице. Как его из таблицы вытащить по ip_у?
TarasCo Сорри за назойливость. Можешь кинуть пример ее использования на ассме, или описание, но с объявлением небходимых структур? Искал на васме---нету вообще никакого упоминания о ней. Искал в гуугле--описания не нашел, ток сомнительные сишные варианты в серединах программ..
Код (Text): #define MAXLEN_PHYSADDR 8 typedef struct _MIB_IPNETROW { IF_INDEX dwIndex; DWORD dwPhysAddrLen; UCHAR bPhysAddr[MAXLEN_PHYSADDR]; DWORD dwAddr; DWORD dwType; } MIB_IPNETROW, *PMIB_IPNETROW; typedef struct _MIB_IPNETTABLE { DWORD dwNumEntries; MIB_IPNETROW table[ANY_SIZE]; } MIB_IPNETTABLE, *PMIB_IPNETTABLE; ULONG WINAPI GetIpNetTable( OUT PMIB_IPNETTABLE IpNetTable, IN OUT PULONG SizePointer, IN BOOL Order ); Вроде все скопировал... PS: с вистой не совместимо - там MIB_IPNETROW слегка другой
pikador Код (Text): ANY_SIZE equ 1 MAXLEN_PHYSADDR equ 8 struct MIB_IPNETROW dwIndex dd ? dwPhysAddress dd ? bPhysAddr rb MAXLEN_PHYSADDR dwAddr dd ? dwType dd ? ends struct MIB_IPNETTABLE dwNumEntries dd ? table MIB_IPNETROW ends
Спасиб большое. С Вистой ладно, под такое извращение не пишу(ИМХО) Я вот относительно недавно пытаюсь кодить на масме и очень много подводных камней встречаю. Не мог бы описать эти структуры на ассме? Вот что как я пробовал переписать: Код (Text): _MIB_IPNETROW struc IF_INDEX dwIndex; dwPhysAddrLen DWORD ? bPhysAddr DB 8; dwAddr DWORD ? dwType DWORD ? _MIB_IPNETROW ENDS _MIB_IPNETTABLE struc dwNumEntries DWORD ? MIB_IPNETROW table[ANY_SIZE]; _MIB_IPNETTABLE ENDS ...... ;Сегмент данных. _DATA SEGMENT DWORD PUBLIC USE32 'DATA' MAXLEN_PHYSADDR db 8 ------------------------------------------------------- По поводу пинга: Нашел топик -- http://www.wasm.ru/forum/viewtopic.php?id=14447 Там есть прога 184196340__pinger.zip, к сожалению там написано все на сообщениях винды. выделить сложновато для меня. Хорошо что есть там вырезка: Код (Text): typedef struct tagIPINFO { u_char Ttl; u_char Tos; u_char IPFlags; u_char OptSize; u_char *Options; // Как в масме будет u_char и влияет ли * на тип переменной? }IPINFO; typedef IPINFO* PIPINFO; typedef struct tagICMPECHO { u_long Source; u_long Status; u_long RTTime; u_short DataSize; u_short Reserved; void FAR *pData; // как эт будет на масме IPINFO ipInfo; }ICMPECHO; typedef ICMPECHO* PICMPECHO; DWORD Ping(void) { DWORD ulAddr=inet_addr("127.1.2.3");//адрес который надо пинговать SOCKADDR_IN sin; IPINFO ipInfo; ICMPECHO icmpEcho; HANDLE hndlFile; hndlFile = pIcmpCreateFile(); ipInfo.Ttl = 255; ipInfo.Tos = 0; ipInfo.IPFlags = 0; ipInfo.OptSize = 0; ipInfo.Options = NULL; icmpEcho.Status = 0; pIcmpSendEcho( hndlFile,ulAddr, NULL, 0, &ipInfo, &icmpEcho, sizeof(struct tagICMPECHO), 2000); if (icmpEcho.Status) { //Ошибка хост не доступен // понятно -- тут ошибка, а если пинг прошел, как узнать время отклика? } pIcmpCloseHandle(hndlFile); return 0; } Черт, ассм классная штука, только вот одному по книгам очень тяжко. Даже не верится что на защите информации никто асм не знает кроме меня(хоть как то) ((((