ARP & Ping

Тема в разделе "WASM.NETWORKS", создана пользователем pikador, 13 авг 2007.

  1. pikador

    pikador New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2007
    Сообщения:
    101
    Подскажите API для получения мака по ip и для изменения арп-таблицы.
    И так же есть ли в винде готовая функция для пинга?

    ЗЫ:че пишу уже понятно...
     
  2. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    мака по ip моно узнать через функцию SendARP из iphlpapi
    по поводу пинга - поиск по форуму рулит, и по сайту тоже..
     
  3. pikador

    pikador New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2007
    Сообщения:
    101
    Считается что соответствие mac-ip уже есть в локальной arp-таблице.
    Как его из таблицы вытащить по ip_у?
     
  4. TarasCo

    TarasCo New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2005
    Сообщения:
    106
    GetIpNetTable?
     
  5. pikador

    pikador New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2007
    Сообщения:
    101
    TarasCo
    Сорри за назойливость. Можешь кинуть пример ее использования на ассме, или описание, но с объявлением небходимых структур?
    Искал на васме---нету вообще никакого упоминания о ней.
    Искал в гуугле--описания не нашел, ток сомнительные сишные варианты в серединах программ..
     
  6. TarasCo

    TarasCo New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2005
    Сообщения:
    106
    Код (Text):
    1. #define MAXLEN_PHYSADDR 8
    2.  
    3. typedef struct _MIB_IPNETROW {
    4.     IF_INDEX dwIndex;
    5.     DWORD dwPhysAddrLen;
    6.     UCHAR bPhysAddr[MAXLEN_PHYSADDR];
    7.     DWORD dwAddr;
    8.     DWORD dwType;
    9. } MIB_IPNETROW, *PMIB_IPNETROW;
    10.  
    11. typedef struct _MIB_IPNETTABLE {
    12.     DWORD dwNumEntries;
    13.     MIB_IPNETROW table[ANY_SIZE];
    14. } MIB_IPNETTABLE, *PMIB_IPNETTABLE;
    15.  
    16. ULONG
    17. WINAPI
    18. GetIpNetTable(
    19.     OUT PMIB_IPNETTABLE IpNetTable,
    20.     IN OUT PULONG SizePointer,
    21.     IN BOOL Order
    22.     );
    Вроде все скопировал...

    PS: с вистой не совместимо - там MIB_IPNETROW слегка другой
     
  7. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    pikador
    Код (Text):
    1. ANY_SIZE                    equ     1
    2. MAXLEN_PHYSADDR         equ     8
    3.  
    4. struct                      MIB_IPNETROW
    5. dwIndex                 dd          ?
    6. dwPhysAddress               dd          ?
    7. bPhysAddr                   rb          MAXLEN_PHYSADDR
    8. dwAddr                  dd          ?
    9. dwType                  dd          ?
    10.                         ends
    11.  
    12. struct                      MIB_IPNETTABLE
    13. dwNumEntries                dd          ?
    14. table                       MIB_IPNETROW
    15.                         ends
     
  8. pikador

    pikador New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2007
    Сообщения:
    101
    Спасиб большое. С Вистой ладно, под такое извращение не пишу(ИМХО) :)

    Я вот относительно недавно пытаюсь кодить на масме и очень много подводных камней встречаю.
    Не мог бы описать эти структуры на ассме?

    Вот что как я пробовал переписать:
    Код (Text):
    1. _MIB_IPNETROW struc
    2.     IF_INDEX dwIndex;
    3.     dwPhysAddrLen DWORD ?
    4.     bPhysAddr DB 8;
    5.     dwAddr DWORD ?
    6.     dwType DWORD ?
    7. _MIB_IPNETROW ENDS
    8.  
    9. _MIB_IPNETTABLE struc
    10.     dwNumEntries DWORD ?
    11.     MIB_IPNETROW table[ANY_SIZE];
    12. _MIB_IPNETTABLE ENDS
    13.  
    14. ......
    15.  
    16. ;Сегмент данных.
    17. _DATA SEGMENT DWORD PUBLIC USE32 'DATA'
    18.         MAXLEN_PHYSADDR db 8
    -------------------------------------------------------

    По поводу пинга:
    Нашел топик -- http://www.wasm.ru/forum/viewtopic.php?id=14447
    Там есть прога 184196340__pinger.zip, к сожалению там написано все на сообщениях винды. выделить сложновато для меня.

    Хорошо что есть там вырезка:
    Код (Text):
    1. typedef struct tagIPINFO
    2. {
    3.     u_char Ttl;
    4.     u_char Tos;
    5.     u_char IPFlags;
    6.     u_char OptSize;
    7.     u_char *Options;     // Как в масме будет u_char и влияет ли * на тип переменной?
    8. }IPINFO;
    9.  
    10. typedef IPINFO* PIPINFO;
    11.  
    12. typedef struct tagICMPECHO
    13. {
    14.     u_long Source;
    15.     u_long Status;
    16.     u_long RTTime;
    17.     u_short DataSize;
    18.     u_short Reserved;
    19.     void FAR *pData;   // как эт будет на масме
    20.     IPINFO  ipInfo;
    21. }ICMPECHO;
    22.  
    23. typedef ICMPECHO* PICMPECHO;
    24.  
    25.  
    26. DWORD Ping(void)
    27. {
    28.     DWORD ulAddr=inet_addr("127.1.2.3");//адрес который надо пинговать
    29.     SOCKADDR_IN sin;
    30.     IPINFO ipInfo;
    31.     ICMPECHO icmpEcho;
    32.     HANDLE hndlFile;
    33.     hndlFile = pIcmpCreateFile();
    34.     ipInfo.Ttl = 255;
    35.     ipInfo.Tos = 0;
    36.     ipInfo.IPFlags = 0;
    37.     ipInfo.OptSize = 0;
    38.     ipInfo.Options = NULL;
    39.     icmpEcho.Status = 0;
    40.     pIcmpSendEcho( hndlFile,ulAddr, NULL, 0, &ipInfo, &icmpEcho, sizeof(struct tagICMPECHO), 2000);
    41.     if (icmpEcho.Status)  
    42.     {
    43.         //Ошибка хост не доступен                // понятно -- тут ошибка, а если пинг прошел, как узнать время отклика?
    44.     }
    45.     pIcmpCloseHandle(hndlFile);
    46.     return 0;
    47. }
    Черт, ассм классная штука, только вот одному по книгам очень тяжко. Даже не верится что на защите информации никто асм не знает кроме меня(хоть как то) ((((
     
  9. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"