обратная функция htons

Тема в разделе "WASM.NETWORKS", создана пользователем Flasher, 4 фев 2005.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Например для inet_addr - обратная функция inet_ntoa.

    Есть ли что-нить подобное для htons?

    А то написал маленький port-scaner, а получить список открытых портов не получается.

    Вот код сканера, может что подскажите, посиба заранее!


    Код (Text):
    1. .data
    2. sin sockaddr_in <?>
    3. ws WSADATA <?>
    4. _port  byte 512 dup(0)
    5. ConThrBuf byte 1024 dup (?)
    6. _port_ dd ?
    7.  
    8. .code
    9. ConThr proc
    10.        local sock:dword
    11.        invoke socket,2,1,0
    12.        mov dword ptr [sock],eax
    13.         inc eax
    14.         jz a_exit
    15.        invoke connect,dword ptr [sock],offset sin,sizeof sin
    16.         inc eax
    17.         jz a_next
    18.     ;   invoke inet_ntoa, dword ptr [sin.sin_port]
    19.     ;   mov _port_,eax
    20.        invoke lstrcat,offset _port,_port_
    21.        invoke lstrcat,offset _port,$CTA0(', ')
    22. a_next:invoke closesocket,dword ptr [sock]
    23.        ret
    24. ConThr endp
    25. start:
    26.       invoke WSAStartup,00000101h,offset ws
    27.         inc eax
    28.         jz a_exit
    29.        mov word ptr [sin.sin_family],02h
    30.        invoke inet_addr,$CTA0("10.5.16.190")
    31.        mov dword ptr [sin.sin_addr],eax
    32.  
    33.        mov edx,1
    34.        mov ecx,1000
    35.        @@:push ecx
    36.        push edx
    37.        invoke htons,edx
    38.        mov word ptr [sin.sin_port],ax
    39.  
    40.        invoke CreateThread,0,0,offset ConThr,0,0,offset ConThrBuf
    41.        invoke CloseHandle,offset ConThr
    42.        invoke Sleep,10
    43.  
    44.        pop edx
    45.        inc edx
    46.        pop ecx
    47.        dec ecx
    48.        jnz @B
    49. a_exit:invoke WSACleanup
    50.        invoke MessageBox,0,offset _port,$CTA0("порты"),0
    51.        invoke ExitProcess,0
    52. end start
    53.  
     
  2. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
  3. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Я вить правильно делаю?
    Код (Text):
    1.        invoke connect,dword ptr [sock],offset sin,sizeof sin
    2.         inc eax
    3.         jz a_next
    4.        invoke ntohs,word ptr [sin.sin_port]
    5.        mov _port_,eax
    6.        invoke lstrcat,offset _port,_port_
    7.        invoke lstrcat,offset _port,$CTA0(', ')
    8.  
    9.  
     
  4. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    [hton] - Host TO Network

    [ntoh] - Network TO Host
     
  5. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    Кстати насчет сокетов, я давал классную ссылко давно, там все классно было расписано.
     
  6. Songoku

    Songoku Эдгар

    Публикаций:
    0
    Регистрация:
    1 мар 2003
    Сообщения:
    68
    Адрес:
    Belarus
    Вот мой способ,без добавления htons в таблицу импорта


    Код (Text):
    1.         mov  ebx,[port] ; }
    2.     bswap    ebx        ; }   htons by x-sgg
    3.     shr  ebx,16     ; }
     
  7. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Songoku, спасибо, твой код очень помог.

    всё работает, и даже на 1 секунду быстрее чем x-port, написанный умелцами xfocus.org :))



    Может кому понадобится..


    Код (Text):
    1. .586
    2. .model flat,stdcall
    3. option casemap:none
    4. include \masm32\include\windows.inc
    5. include \masm32\include\user32.inc
    6. includelib \masm32\lib\user32.lib
    7. include \masm32\include\kernel32.inc
    8. includelib \masm32\lib\kernel32.lib
    9. include \masm32\include\wsock32.inc
    10. includelib \masm32\lib\wsock32.lib
    11. include \masm32\macros\strings.mac
    12.  
    13.  
    14. .data
    15. sin sockaddr_in <?>
    16. ws WSADATA <?>
    17. _port  byte 512 dup(0)
    18. ConThrBuf byte 1024 dup (?)
    19. szPort db 16 dup(0)
    20.  
    21. .code
    22. ConThr proc
    23.        local sock:dword
    24.        invoke socket,2,1,0
    25.        mov dword ptr [sock],eax
    26.         inc eax
    27.         jz a_exit
    28.        invoke connect,dword ptr [sock],offset sin,sizeof sin
    29.         inc eax
    30.         jz a_next
    31.  
    32.        mov ebx,dword ptr [sin.sin_port]
    33.        bswap ebx
    34.        shr ebx,16
    35.        push ebx
    36.        push $CTA0('%i')
    37.        push offset szPort
    38.        call wsprintfA
    39.  
    40.        invoke lstrcat,offset _port,offset szPort
    41.        invoke lstrcat,offset _port,$CTA0(', ')
    42. a_next:invoke closesocket,dword ptr [sock]
    43.        ret
    44. ConThr endp
    45. start:
    46.       invoke WSAStartup,00000101h,offset ws
    47.         inc eax
    48.         jz a_exit
    49.        mov word ptr [sin.sin_family],02h
    50.        invoke inet_addr,$CTA0("10.5.16.190")
    51.        mov dword ptr [sin.sin_addr],eax
    52.  
    53.        mov edx,1
    54.        mov ecx,1030
    55.        @@:push ecx
    56.        push edx
    57.        mov ebx,edx
    58.        bswap ebx
    59.        shr ebx,16
    60.        mov word ptr [sin.sin_port],bx
    61.  
    62.        invoke CreateThread,0,0,offset ConThr,0,0,offset ConThrBuf
    63.        invoke CloseHandle,offset ConThr
    64.        invoke Sleep,1
    65.  
    66.        pop edx
    67.        inc edx
    68.        pop ecx
    69.        dec ecx
    70.        jnz @B
    71. a_exit:invoke WSACleanup
    72.        invoke MessageBox,0,offset _port,$CTA0("открытые порты"),0
    73.        invoke ExitProcess,0
    74. end start