Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
10 / 12 / 2
Регистрация: 13.01.2010
Сообщений: 363
1

Пинг

30.08.2010, 20:03. Показов 2940. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Честно, ассемблером только начал заниматься. Кто может, киньте код программы, которая будет пинговать нужный сервер.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.08.2010, 20:03
Ответы с готовыми решениями:

TSR программа - подобие пинг-понга
Написать TSR-программу, реализующую следующую игру. Из случайного места в центре экрана...

С ПК1 к ПК2 идет пинг. А с ПК2 к ПК1 не идет пинг. Как сделать что бы с ПК2 шел пинг к ПК1 ?
В работе есть два сети, один старый, другой новый, так говорили. С новой сети можно пинговать...

Ip пинг
Здравствуйте кто подскажет как можно делать проверку IP адреса. Например есть адрес и нужно...

Высокий пинг по Wi-Fi
Друзья, помогите разобраться. Поставил точку доступа CISCO WAP321. Настройки самые простые,...

6
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
08.09.2010, 13:02 2
Лучше поздно чем никогда - задача то не пятиминутная. Пробовал сначала через сокеты- там гемор нереальный - указатель указателем погоняет в структурах. Решил попробовать через icmp.dll тоже че то не получилось. Выкладываю что есть, если кто подскажет ошибку буду благодарен
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
.486 
.model flat, stdcall 
option casemap :none
 
 
include \masm32\include\windows.inc
      include \masm32\include\user32.inc
      include \masm32\include\kernel32.inc
      include \masm32\include\wsock32.inc
 
 
includelib \masm32\lib\masm32.lib
      includelib \masm32\lib\user32.lib
      includelib \masm32\lib\kernel32.lib
      includelib \masm32\lib\ws2_32.lib
 
 
.data
 
strHost db "localhost",0
 
dll_name db "ICMP.DLL",0
 
sIcmpCreateFile db "IcmpCreateFile",0
sIcmpCloseHandle db "IcmpCloseHandle",0
sIcmpSendEcho db "IcmpSendEcho",0
 
.data?
 
IPINFO struc
 Ttl db ?  ; Time To Live
 Tos db ?  ; Type Of Service
 IPFlags db ?  ; IP flags
 OptSize db ?  ; Size of options data
 Options dd ?  ; Options data buffer
IPINFO ends
 
ICMPECHO struc
 Source dd ? ; Source address
 Status dd ? ; IP status
 RTTime dd ? ; Round trip time in milliseconds
 DataSize dw ? ; Reply data size
 Reserved dw ? ; Unknown
 pData dd ? ; Reply data buffer
 ipInfo IPINFO <?> ; Reply options
ICMPECHO ends
 
hMod dd ?
wsa WSADATA <?>
ipInfo IPINFO <?>
icmpEcho ICMPECHO <?>
addrDest dd ?  ; in_addr
pHost   dd  ?  ; LPHOSTENT
dwAddress dd ?
hFile dd ?
 
pIcmpCreateFile dd ?
pIcmpCloseHandle dd ?
pIcmpSendEcho dd ?
 
.code
start:
 
invoke LoadLibrary, offset dll_name
mov hMod, eax
 
invoke GetProcAddress, hMod, offset sIcmpCreateFile
mov pIcmpCreateFile, eax
invoke GetProcAddress, hMod, offset sIcmpCloseHandle
mov pIcmpCloseHandle, eax
invoke GetProcAddress, hMod, offset sIcmpSendEcho
mov pIcmpSendEcho, eax
 
invoke WSAStartup,101h,addr wsa
 
invoke inet_addr, offset strHost
mov addrDest, eax ; addrDest.s_addr
cmp eax, INADDR_NONE
jnz byAddr
invoke gethostbyname, offset strHost
mov pHost, eax
or eax, eax
jz _exit
jmp _crFile
byAddr:
invoke gethostbyaddr, addrDest, 4, AF_INET
mov pHost, eax
or eax, eax
jz _exit
 
_crFile:
mov eax, dword ptr [pHost]
mov eax,[eax+28]
bswap eax
mov dwAddress, eax
call dword ptr [pIcmpCreateFile]
mov hFile, eax
 
 
mov ecx, 4
_loop:
push ecx
 
mov al, 255
mov [ipInfo.Ttl], al
xor eax, eax
mov [ipInfo.Tos], al
mov [ipInfo.IPFlags], al
mov [ipInfo.OptSize], al
mov [ipInfo.Options], eax
;mov [icmpEcho.Status], eax
 
 
push 2000
push sizeof icmpEcho
push offset icmpEcho
push offset ipInfo
push 0
push 0
push dwAddress
push hFile
call dword ptr [pIcmpSendEcho]
 
mov eax, [icmpEcho.Status]
 
pop ecx
loop _loop
 
_exit:
push hFile
call dword ptr [pIcmpCloseHandle]
invoke FreeLibrary, hMod
call WSACleanup
invoke ExitProcess, 0 
 
end start
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
10.09.2010, 16:27 3
ни у кого нет идей?
0
270 / 113 / 18
Регистрация: 26.12.2010
Сообщений: 468
12.02.2011, 18:20 4
Я находил в сети пример, вроде как рабочий (по отзывам), но там нужен icmp.inc Что это такое и где взять - никто не знает. Если надо, выложу тот пример.
0
Maniac
Эксперт С++
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
12.02.2011, 20:23 5
а если читать данные с команды ping? пойдет?
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
12.02.2011, 23:29 6
опа. Выплыло Я тогда доделал код и он заработал нормально. К сожалению он не сохранился, если вам интересно попробую заново исправить
0
270 / 113 / 18
Регистрация: 26.12.2010
Сообщений: 468
13.02.2011, 16:30 7
Я в иностранном инете уже нашел этот хитрый либ) Если кому надо, пишу рабочий пример для Масма:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.586            
.model flat,stdcall      
option casemap:none      
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
include \masm32\include\ws2_32.inc
include \masm32\include\icmp.inc
 
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\ws2_32.lib
includelib \masm32\lib\icmp.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICMP_ECHO_REPLYTA STRUCT
   Address          DWORD      ?
   Status           DWORD      ?
   RoundTripTime    DWORD      ?
   DataSize         WORD       ?
   Reserved         WORD       ?
   DataPointer      DWORD      ?
   Options          ICMP_OPTIONS  <?>
   zData            BYTE 250 dup (?)
ICMP_ECHO_REPLYTA ENDS
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
   AppName      db   "Ping Test With ICMP",13,10,0
   Usage      db   "Usage: Ping <hostname/Ip>",13,10,13,10
   CRLF      db   13,10,0
 
   Msg_Ping   db   13,10,"Pinging %s With ICMP ......",0
   Msg_Reply   db   13,10,"Reply from %s Time: %d ms TTL: %d, Hops: %d",0
   Msg_Timeout   db   13,10,"Request Timed out",0
   Err_Winsock   db   "Error loading winsock dll : %d",13,10,0
   Err_NoHost   db   "Cannot find host: %s",13,10,0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data?
   hIcmp      HANDLE      ?      
   hLib      HANDLE      ?      
   dwAddress   DWORD      ?      
   nHops      DWORD      ?
 
   HostBuffer   db   256 dup(?)      
   OutBuffer   db   256 dup(?)      
 
   wsadata      WSADATA      <?>      
   icmpOptions   ICMP_OPTIONS   <?>      
   icmpReply   ICMP_ECHO_REPLYTA <?>      
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
Start:         
   invoke WSAStartup,202h,ADDR wsadata   
   .if eax!=0            
      invoke wsprintf,ADDR OutBuffer,ADDR Err_Winsock,eax
      invoke StdOut,ADDR OutBuffer
      jmp @Exit
   .endif
   invoke GetCL,1,ADDR HostBuffer      
   .if (eax!=1)            
      invoke StdOut,ADDR Usage   
      jmp @Exit            
   .endif
   invoke inet_addr,ADDR HostBuffer   
   .if eax==INADDR_NONE         
      invoke gethostbyname,ADDR HostBuffer      
      .if eax==0               
         invoke wsprintf,ADDR OutBuffer,ADDR Err_NoHost,ADDR HostBuffer 
         invoke StdOut,ADDR OutBuffer
         jmp @Exit
      .endif
      mov eax,[eax+12]   
      mov eax,[eax]      
      mov eax,[eax]      
   .endif
   mov dwAddress,eax      
   invoke IcmpCreateFile      
   mov hIcmp,eax         
   
   invoke wsprintf,ADDR OutBuffer,ADDR Msg_Ping,ADDR HostBuffer
   invoke StdOut,ADDR CRLF   
   invoke StdOut,ADDR OutBuffer   
   invoke StdOut,ADDR CRLF   
   
   xor ebx,ebx         
   .WHILE ebx < 4         
      push ebx      
      mov icmpOptions.Ttl,255   
      mov icmpOptions.Tos,0   
      mov icmpOptions.Flags,0   
      mov icmpOptions.OptionsSize,0   
      mov icmpOptions.OptionsData,0   
      
      invoke IcmpSendEcho,hIcmp,dwAddress,0,0,ADDR icmpOptions,ADDR icmpReply,SIZEOF ICMP_ECHO_REPLYTA+SIZEOF ICMP_OPTIONS,5000   
      .if eax !=0
         invoke inet_ntoa,icmpReply.Address   
         movzx ecx,icmpReply.Options.Ttl      
         mov nHops,256            
         sub nHops,ecx            
         mov edx,nHops
         .if edx==192            
            mov nHops,1         
         .elseif edx==128         
            mov nHops,0         
         .endif
         invoke wsprintf,ADDR OutBuffer,ADDR Msg_Reply,eax,icmpReply.RoundTripTime,ecx,nHops
         invoke StdOut,ADDR OutBuffer         
      .else
         invoke StdOut,ADDR Msg_Timeout
      .endif
      pop ebx                     
      inc ebx                     
   .ENDW
   invoke StdOut,ADDR CRLF      
   invoke IcmpCloseHandle,hIcmp   
   
@Exit:   
   invoke WSACleanup      
   invoke ExitProcess,0      
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
end Start
Компилить как консольное приложение, запускаем потом через cmd вида .....\наш.ехе 127.0.0.1 , ну я думаю кто более менее шарит в Асме, поймет это)

Необходимый либ и инк файлы - http://www.madwizard.org/download/ICMP.zip

vital792, если не сложно и будет время - попробуйте исправить, пожалуйста. Интересно посмотреть на реализацию без посторонних библиотек (как в моем примере).
1
13.02.2011, 16:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2011, 16:30
Помогаю со студенческими работами здесь

Пинг до компов
Всем доброго времени суток) и хорошего рабочего дня) Написал адресную книгу с ип адресами, не могу...

Провайдер и пинг
Доброго времени суток. В прошлом году, вроде, уже создавал подобную тему, однако: 1) проблема не...

Нестабильный пинг
Вот такая проблема возникает каждый вечер в период с 16:00 и до 00:00,бывают короткие перерывы при...

Скачет пинг
Всем привет.Уже 2 недели мучаюсь с проблемой нестабильного пинга,не знаю с чем это связано,особо в...

Пинг сервера
При попытке пропинговать адрес - получаю ошибку &quot;Access Denied&quot; Работаю под Владельцем на Win 8.1...

Скачет пинг
В общем имеется Wi-fi роутер, когда собираюсь по играть онлайн, то стабильно раз в 2 минуты может...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru