· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.NETWORKS —› IP адрес удаленного сокета?

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Апр 28, 2004 22:36:33

Имеем кусок кода:
    ; Сообщение от WSAAsyncSelect
    @wmsocket:
              mov eax,[lParam]
              and eax,0FFFFh
              cmp eax,FD_ACCEPT
              je @fd_accept
              cmp eax,FD_READ
              je @fd_read
              cmp eax,FD_CLOSE
              je @fd_close
              jmp @done

         @fd_accept:
              ; Разрешить входящее соединение
              @call accept,[wParam],offset iaddr,[temp_var]
              cmp eax,-1
              je @accept_error
              ; Указываем Windows, чтобы она извещала нас о готовности
              ; сокета для чтения или его закрытии
              @call WSAAsyncSelect,eax,edi,WM_SOCKET,FD_READ+FD_CLOSE

в структуру iaddr адрес созвращается через раз, если ли сполоб получить IP адрес того кто к тебе присосался? как, например, использовать функцию getpeername?


Дата: Апр 29, 2004 11:15:54 · Поправил: Безпощадный даос

.data
AppName db "x", 0 
inadrlen      dd SIZEOF sockaddr_in 
WM_SOCKET equ WM_USER + 100 
wsadata          WSADATA <?> 
sin              sockaddr_in<?> 
sock dd ? 
ip dd ? 


  invoke WSAStartup, 101h, addr wsadata 
       invoke socket, AF_INET, SOCK_STREAM, 0 
       mov sock, eax

       invoke htons, 111
       mov sin.sin_port, ax
       mov sin.sin_family, AF_INET
       mov sin.sin_addr, INADDR_ANY

       invoke bind, sock, addr sin, sizeof sin
       invoke listen, sock, 0

__AcceptConn: 
       xor eax, eax 
       invoke accept, sock, addr sin, addr inadrlen

  ;------------  Определить IP  -----
       mov eax, sin.sin_addr 
       xchg ah,al 
       rol eax,10h 
       xchg ah,al 
       invoke IPtoString, eax,addr ip

invoke MessageBox,NULL,offset ip,addr AppName,MB_OK


Дата: Апр 29, 2004 13:17:25

KiNDeR
в структуру iaddr адрес созвращается через раз
значит ошибка гдето в другом месте, должна быть всегда, по идее:) хотя у меня accept всегда возвращала.


Дата: Апр 29, 2004 17:57:59

Flasher благодарю, опробуем.


Дата: Май 10, 2004 18:33:09

Flasher
ОЙ,
а если спрошу что значит
xchg ah,al
rol eax,10h
xchg ah,al
сможешь ответить?
и почему именно 10h?


Дата: Май 10, 2004 18:38:07

jabber
Это вместо bswap,eax :-)


Дата: Май 11, 2004 03:19:15

Quantum
а если спрошу почему перед eax запятая? :-)
а если серьёзно то я знаю потому что сам этот код писал.
просто не думаю что это очень круто что человек тянет с одного форума на другой чужой код даже не зная как он работает


Дата: Май 11, 2004 06:11:05

jabber
а если спрошу почему перед eax запятая? :-)
Описка.

просто не думаю что это очень круто что человек тянет с одного форума на другой чужой код даже не зная как он работает
securitylab? :-)


Дата: Май 12, 2004 10:52:44

jabber, я не намеренно.., просто под руку попался... :)
кстати.. вот Вам код, где без пробелов
szStr db "%i.%i.%i.%i",0

and ebx, not 255
mov eax, sin.sin_addr
xchg ah,al
rol eax,10h
xchg ah,al
movzx ebx,al
push ebx
shr eax,8
movzx ebx,al
push ebx
shr eax,8
movzx ebx,AL
push ebx
shr eax,8
push eax
push offset szStr
push offset ip
call wsprintfA


Дата: Май 12, 2004 11:32:42

Flasher
Чем не устраивает inet_ntoa?


Дата: Май 12, 2004 12:18:00

разве она без пробелов возвращает ?


Дата: Май 12, 2004 12:45:17

Flasher
У меня да.


Дата: Май 12, 2004 17:33:33

Flasher
О каких пробелах идёт речь?

ЗЫ: После wsprintf нужно выровнять стек.


Дата: Май 12, 2004 18:23:51

Quantum, кода юзал этот код:
xchg ah,al
rol eax,10h
xchg ah,al
показывало: 192 .168 . 0. 1
конечно это моно показать в listboxe, но если нуно в дальнейшем использовать где-нить этот ip - лучше юзать тот, который я дал.


Дата: Май 13, 2004 01:09:47

Flasher
Аааа... Это баг в DW2A, которую вызывает IPtoString.

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.066