Rev 3618 | Rev 4737 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3618 | Rev 3641 | ||
---|---|---|---|
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ;; ;; |
2 | ;; ;; |
3 | ;; Copyright (C) KolibriOS team 2010-2013. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2010-2013. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
5 | ;; ;; |
6 | ;; netstat.asm - Network Status Tool for KolibriOS ;; |
6 | ;; netstat.asm - Network Status Tool for KolibriOS ;; |
7 | ;; ;; |
7 | ;; ;; |
8 | ;; Written by hidnplayr@kolibrios.org ;; |
8 | ;; Written by hidnplayr@kolibrios.org ;; |
9 | ;; ;; |
9 | ;; ;; |
10 | ;; GNU GENERAL PUBLIC LICENSE ;; |
10 | ;; GNU GENERAL PUBLIC LICENSE ;; |
11 | ;; Version 2, June 1991 ;; |
11 | ;; Version 2, June 1991 ;; |
12 | ;; ;; |
12 | ;; ;; |
13 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
13 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
14 | 14 | ||
15 | format binary as "" |
15 | format binary as "" |
16 | 16 | ||
17 | use32 |
17 | use32 |
18 | 18 | ||
19 | org 0x0 |
19 | org 0x0 |
20 | 20 | ||
21 | db 'MENUET01' ; 8 byte id |
21 | db 'MENUET01' ; 8 byte id |
22 | dd 0x01 ; header version |
22 | dd 0x01 ; header version |
23 | dd START ; start of code |
23 | dd START ; start of code |
24 | dd I_END ; size of image |
24 | dd I_END ; size of image |
25 | dd (I_END+0x1000) ; memory for app |
25 | dd (I_END+0x1000) ; memory for app |
26 | dd (I_END+0x1000) ; esp |
26 | dd (I_END+0x1000) ; esp |
27 | dd 0, 0 ; I_Param , I_Path |
27 | dd 0, 0 ; I_Param , I_Path |
28 | 28 | ||
29 | include '../../macros.inc' |
29 | include '../../macros.inc' |
30 | include '../../network.inc' |
30 | include '../../network.inc' |
31 | 31 | ||
32 | START: |
32 | START: |
33 | mcall 40, EVM_REDRAW + EVM_BUTTON + EVM_STACK2 |
33 | mcall 40, EVM_REDRAW + EVM_BUTTON + EVM_STACK2 |
34 | 34 | ||
35 | redraw: |
35 | redraw: |
36 | mcall 12, 1 |
36 | mcall 12, 1 |
37 | mcall 0, 100 shl 16 + 600, 100 shl 16 + 240, 0x34bcbcbc, , name ; draw window |
37 | mcall 0, 100 shl 16 + 600, 100 shl 16 + 240, 0x34bcbcbc, , name ; draw window |
38 | 38 | ||
39 | call draw_interfaces |
39 | call draw_interfaces |
40 | 40 | ||
41 | xor ebx, ebx |
41 | xor ebx, ebx |
42 | mov bh, [device] |
42 | mov bh, [device] |
43 | mcall 74 |
43 | mcall 74 |
44 | mov [device_type], eax |
44 | mov [device_type], eax |
45 | 45 | ||
46 | mov edx, 101 |
46 | mov edx, 101 |
47 | mov esi, 0x00aaaaff |
47 | mov esi, 0x00aaaaff |
48 | mov edi, 0x00aaffff |
48 | mov edi, 0x00aaffff |
49 | 49 | ||
50 | cmp dl, [mode] |
50 | cmp dl, [mode] |
51 | cmove esi, edi |
51 | cmove esi, edi |
52 | mcall 8, 5 shl 16 + 55, 5 shl 16 + 20 |
52 | mcall 8, 5 shl 16 + 55, 5 shl 16 + 20 |
53 | .morebuttons: |
53 | .morebuttons: |
54 | inc edx |
54 | inc edx |
55 | add ebx, 60 shl 16 |
55 | add ebx, 60 shl 16 |
56 | mov esi, 0x00aaaaff |
56 | mov esi, 0x00aaaaff |
57 | 57 | ||
58 | cmp dl, [mode] |
58 | cmp dl, [mode] |
59 | cmove esi, edi |
59 | cmove esi, edi |
60 | mcall |
60 | mcall |
61 | 61 | ||
62 | cmp edx, 105 |
62 | cmp edx, 105 |
63 | jle .morebuttons |
63 | jle .morebuttons |
64 | 64 | ||
65 | mcall 4, 8 shl 16 + 11, 0x80000000, modes |
65 | mcall 4, 8 shl 16 + 11, 0x80000000, modes |
66 | 66 | ||
67 | cmp [mode], 101 |
67 | cmp [mode], 101 |
68 | jne .no_eth |
68 | jne .no_eth |
69 | 69 | ||
70 | mcall 4, 8 shl 16 + 35, 0x80000000, str_packets_tx |
70 | mcall 4, 8 shl 16 + 35, 0x80000000, str_packets_tx |
71 | add ebx, 18 |
71 | add ebx, 18 |
72 | mov edx, str_packets_rx |
72 | mov edx, str_packets_rx |
73 | mcall |
73 | mcall |
74 | add ebx, 18 |
74 | add ebx, 18 |
75 | mov edx, str_bytes_tx |
75 | mov edx, str_bytes_tx |
76 | mcall |
76 | mcall |
77 | add ebx, 18 |
77 | add ebx, 18 |
78 | mov edx, str_bytes_rx |
78 | mov edx, str_bytes_rx |
79 | mcall |
79 | mcall |
80 | add ebx, 18 |
80 | add ebx, 18 |
81 | mov edx, str_link |
81 | mov edx, str_link |
82 | mcall |
82 | mcall |
83 | 83 | ||
84 | cmp [device_type], 1 |
84 | cmp [device_type], 1 |
85 | jne end_of_draw |
85 | jne end_of_draw |
86 | 86 | ||
87 | add ebx, 18 |
87 | add ebx, 18 |
88 | mov edx, str_MAC |
88 | mov edx, str_MAC |
89 | mcall |
89 | mcall |
90 | 90 | ||
91 | mov ebx, API_ETH |
91 | mov ebx, API_ETH |
92 | mov bh, [device] |
92 | mov bh, [device] |
93 | mcall 76 |
93 | mcall 76 |
94 | push eax |
94 | push eax |
95 | push bx |
95 | push bx |
96 | 96 | ||
97 | mov edx, 135 shl 16 + 35 + 5*18 |
97 | mov edx, 135 shl 16 + 35 + 5*18 |
98 | call draw_mac |
98 | call draw_mac |
99 | jmp end_of_draw |
99 | jmp end_of_draw |
100 | 100 | ||
101 | .no_eth: |
101 | .no_eth: |
102 | 102 | ||
103 | cmp [mode], 102 |
103 | cmp [mode], 102 |
104 | jne .no_ip |
104 | jne .no_ip |
105 | 105 | ||
106 | mcall 4, 8 shl 16 + 35, 0x80000000, str_packets_tx |
106 | mcall 4, 8 shl 16 + 35, 0x80000000, str_packets_tx |
107 | add ebx, 18 |
107 | add ebx, 18 |
108 | mov edx, str_packets_rx |
108 | mov edx, str_packets_rx |
109 | mcall |
109 | mcall |
110 | add ebx, 18 |
110 | add ebx, 18 |
111 | mov edx, str_ip |
111 | mov edx, str_ip |
112 | mcall |
112 | mcall |
113 | add ebx, 18 |
113 | add ebx, 18 |
114 | mov edx, str_dns |
114 | mov edx, str_dns |
115 | mcall |
115 | mcall |
116 | add ebx, 18 |
116 | add ebx, 18 |
117 | mov edx, str_subnet |
117 | mov edx, str_subnet |
118 | mcall |
118 | mcall |
119 | add ebx, 18 |
119 | add ebx, 18 |
120 | mov edx, str_gateway |
120 | mov edx, str_gateway |
121 | mcall |
121 | mcall |
122 | 122 | ||
123 | 123 | ||
124 | mov ebx, API_IPv4 + 8 |
124 | mov ebx, API_IPv4 + 8 |
125 | mov bh, [device] |
125 | mov bh, [device] |
126 | mcall 76 |
126 | mcall 76 |
127 | push eax |
127 | push eax |
128 | 128 | ||
129 | dec bl |
129 | dec bl |
130 | dec bl |
130 | dec bl |
131 | mcall 76 |
131 | mcall 76 |
132 | push eax |
132 | push eax |
133 | 133 | ||
134 | dec bl |
134 | dec bl |
135 | dec bl |
135 | dec bl |
136 | mcall 76 |
136 | mcall 76 |
137 | push eax |
137 | push eax |
138 | 138 | ||
139 | dec bl |
139 | dec bl |
140 | dec bl |
140 | dec bl |
141 | mcall 76 |
141 | mcall 76 |
142 | push eax |
142 | push eax |
143 | 143 | ||
144 | mov edx, 135 shl 16 + 35 + 2*18 |
144 | mov edx, 135 shl 16 + 35 + 2*18 |
145 | call draw_ip |
145 | call draw_ip |
146 | 146 | ||
147 | add edx, 18 |
147 | add edx, 18 |
148 | call draw_ip |
148 | call draw_ip |
149 | 149 | ||
150 | add edx, 18 |
150 | add edx, 18 |
151 | call draw_ip |
151 | call draw_ip |
152 | 152 | ||
153 | add edx, 18 |
153 | add edx, 18 |
154 | call draw_ip |
154 | call draw_ip |
155 | 155 | ||
156 | jmp end_of_draw |
156 | jmp end_of_draw |
157 | 157 | ||
158 | .no_ip: |
158 | .no_ip: |
159 | 159 | ||
160 | cmp [mode], 103 |
160 | cmp [mode], 103 |
161 | jne .no_arp |
161 | jne .no_arp |
162 | 162 | ||
163 | mcall 4, 8 shl 16 + 35, 0x80000000, str_packets_tx |
163 | mcall 4, 8 shl 16 + 35, 0x80000000, str_packets_tx |
164 | add ebx, 18 |
164 | add ebx, 18 |
165 | mov edx, str_packets_rx |
165 | mov edx, str_packets_rx |
166 | mcall |
166 | mcall |
167 | add ebx, 18 |
167 | add ebx, 18 |
168 | mov edx, str_arp |
168 | mov edx, str_arp |
169 | mcall |
169 | mcall |
170 | add ebx, 18 |
170 | add ebx, 18 |
171 | mov edx, str_conflicts |
171 | mov edx, str_conflicts |
172 | mcall |
172 | mcall |
173 | 173 | ||
174 | mcall 4, 8 shl 16 + 130, 0x80000000, str_ARP_legend |
174 | mcall 4, 8 shl 16 + 130, 0x80000000, str_ARP_legend |
175 | 175 | ||
176 | jmp end_of_draw |
176 | jmp end_of_draw |
177 | 177 | ||
178 | .no_arp: |
178 | .no_arp: |
179 | 179 | ||
180 | mcall 4, 8 shl 16 + 35, 0x80000000, str_packets_tx |
180 | mcall 4, 8 shl 16 + 35, 0x80000000, str_packets_tx |
181 | 181 | ||
182 | add ebx, 18 |
182 | add ebx, 18 |
183 | mov edx, str_packets_rx |
183 | mov edx, str_packets_rx |
184 | mcall |
184 | mcall |
185 | 185 | ||
186 | cmp [mode], 106 |
186 | cmp [mode], 106 |
187 | jne end_of_draw |
187 | jne end_of_draw |
188 | 188 | ||
189 | add ebx, 18 |
189 | add ebx, 18 |
190 | mov edx, str_missed |
190 | mov edx, str_missed |
191 | mcall |
191 | mcall |
192 | 192 | ||
193 | add ebx, 18 |
193 | add ebx, 18 |
194 | mov edx, str_dumped |
194 | mov edx, str_dumped |
195 | mcall |
195 | mcall |
196 | 196 | ||
197 | 197 | ||
198 | 198 | ||
199 | end_of_draw: |
199 | end_of_draw: |
200 | mcall 12, 2 |
200 | mcall 12, 2 |
201 | 201 | ||
202 | draw_stats: |
202 | draw_stats: |
203 | 203 | ||
204 | cmp [mode], 101 |
204 | cmp [mode], 101 |
205 | jne not_101 |
205 | jne not_101 |
206 | 206 | ||
207 | mov ebx, API_ETH |
207 | mov ebx, API_ETH |
208 | mov bh, [device] |
208 | mov bh, [device] |
209 | mov bl, 6 |
209 | mov bl, 6 |
210 | @@: |
210 | @@: |
211 | push ebx |
211 | push ebx |
212 | mcall 74 |
212 | mcall 74 |
213 | pop ebx |
213 | pop ebx |
214 | push eax |
214 | push eax |
215 | inc bl |
215 | inc bl |
216 | cmp bl, 10 |
216 | cmp bl, 10 |
217 | jbe @r |
217 | jbe @r |
218 | 218 | ||
219 | mov ebx, 0x000a0000 |
219 | mov ebx, 0x000a0000 |
220 | pop ecx |
220 | pop ecx |
221 | mov edx, 135 shl 16 + 35 + 4*18 |
221 | mov edx, 135 shl 16 + 35 + 4*18 |
222 | mov esi, 0x40000000 |
222 | mov esi, 0x40000000 |
223 | mov edi, 0x00bcbcbc |
223 | mov edi, 0x00bcbcbc |
224 | mcall 47 |
224 | mcall 47 |
225 | 225 | ||
226 | sub edx, 18 |
226 | sub edx, 18 |
227 | pop ecx |
227 | pop ecx |
228 | mcall |
228 | mcall |
229 | 229 | ||
230 | sub edx, 18 |
230 | sub edx, 18 |
231 | pop ecx |
231 | pop ecx |
232 | mcall |
232 | mcall |
233 | 233 | ||
234 | sub edx, 18 |
234 | sub edx, 18 |
235 | pop ecx |
235 | pop ecx |
236 | mcall |
236 | mcall |
237 | 237 | ||
238 | sub edx, 18 |
238 | sub edx, 18 |
239 | pop ecx |
239 | pop ecx |
240 | mcall |
240 | mcall |
241 | 241 | ||
242 | jmp mainloop |
242 | jmp mainloop |
243 | 243 | ||
244 | 244 | ||
245 | not_101: |
245 | not_101: |
246 | 246 | ||
247 | cmp [mode], 102 |
247 | cmp [mode], 102 |
248 | jne not_102 |
248 | jne not_102 |
249 | 249 | ||
250 | mov ebx, API_IPv4 |
250 | mov ebx, API_IPv4 |
251 | mov bh, [device] |
251 | mov bh, [device] |
252 | push ebx |
252 | push ebx |
253 | mcall 76 |
253 | mcall 76 |
254 | pop ebx |
254 | pop ebx |
255 | push eax |
255 | push eax |
256 | 256 | ||
257 | inc bl |
257 | inc bl |
258 | push ebx |
258 | push ebx |
259 | mcall 76 |
259 | mcall 76 |
260 | pop ebx |
260 | pop ebx |
261 | push eax |
261 | push eax |
262 | 262 | ||
263 | 263 | ||
264 | mov ebx, 0x000a0000 |
264 | mov ebx, 0x000a0000 |
265 | pop ecx |
265 | pop ecx |
266 | mov edx, 135 shl 16 + 35 + 18 |
266 | mov edx, 135 shl 16 + 35 + 18 |
267 | mov esi, 0x40000000 |
267 | mov esi, 0x40000000 |
268 | mov edi, 0x00bcbcbc |
268 | mov edi, 0x00bcbcbc |
269 | mcall 47 |
269 | mcall 47 |
270 | 270 | ||
271 | sub edx, 18 |
271 | sub edx, 18 |
272 | pop ecx |
272 | pop ecx |
273 | mcall |
273 | mcall |
274 | 274 | ||
275 | jmp mainloop |
275 | jmp mainloop |
276 | 276 | ||
277 | 277 | ||
278 | not_102: |
278 | not_102: |
279 | 279 | ||
280 | cmp [mode], 103 |
280 | cmp [mode], 103 |
281 | jne not_103 |
281 | jne not_103 |
282 | 282 | ||
283 | mov ebx, API_ARP |
283 | mov ebx, API_ARP |
284 | mov bh, [device] |
284 | mov bh, [device] |
285 | push ebx |
285 | push ebx |
286 | mcall 76 |
286 | mcall 76 ; tx |
287 | pop ebx |
287 | pop ebx |
288 | push eax |
288 | push eax |
289 | 289 | ||
290 | inc bl |
290 | inc bl |
291 | push ebx |
291 | push ebx |
292 | mcall 76 |
292 | mcall 76 ; rx |
293 | pop ebx |
293 | pop ebx |
294 | push eax |
294 | push eax |
295 | 295 | ||
296 | inc bl |
296 | inc bl |
297 | push ebx |
297 | push ebx |
298 | mcall 76 |
298 | mcall 76 ; entries |
299 | pop ebx |
299 | pop ebx |
300 | push eax |
300 | push eax |
301 | 301 | ||
302 | mov bl, 7 |
302 | mov bl, 7 |
303 | push ebx |
303 | push ebx |
304 | mcall 76 |
304 | mcall 76 |
305 | pop ebx |
305 | pop ebx |
306 | push eax |
306 | push eax |
307 | 307 | ||
308 | mov ebx, 0x000a0000 |
308 | mov ebx, 0x000a0000 |
309 | pop ecx |
309 | pop ecx |
310 | mov edx, 135 shl 16 + 35 + 3*18 |
310 | mov edx, 135 shl 16 + 35 + 3*18 |
311 | mov esi, 0x40000000 |
311 | mov esi, 0x40000000 |
312 | mov edi, 0x00bcbcbc |
312 | mov edi, 0x00bcbcbc |
313 | mcall 47 |
313 | mcall 47 |
314 | 314 | ||
315 | sub edx, 18 |
315 | sub edx, 18 |
316 | pop ecx |
316 | pop ecx |
317 | mcall |
317 | mcall |
318 | 318 | ||
319 | sub edx, 18 |
319 | sub edx, 18 |
320 | pop ecx |
320 | pop ecx |
321 | mcall |
321 | mcall |
322 | 322 | ||
323 | sub edx, 18 |
323 | sub edx, 18 |
324 | pop ecx |
324 | pop ecx |
325 | mcall |
325 | mcall |
326 | 326 | ||
327 | ; mov edx, 50 shl 16 + 150 |
327 | ; mov edx, 50 shl 16 + 150 |
328 | mov [last], 0 |
328 | mov [last], 0 |
329 | 329 | ||
330 | .arp_loop: |
330 | .arp_loop: |
331 | mov ebx, API_ARP + 3 |
331 | mov ebx, API_ARP + 3 ; read ARP entry |
332 | mov bh, [device] |
332 | mov bh, [device] |
333 | mcall 76, , [last], , , arp_buf |
333 | mcall 76, ,[last], , , arp_buf |
334 | cmp eax, -1 |
334 | cmp eax, -1 |
335 | je mainloop |
335 | je mainloop |
- | 336 | ||
- | 337 | mov ebx, [last] |
|
- | 338 | imul ebx, 16 |
|
336 | 339 | add ebx, 8 shl 16 + 140 |
|
337 | mcall 4, 20 shl 16 + 140, 0x80000000, str_ARP_entry |
340 | mcall 4, , 0x80000000, str_ARP_entry |
338 | mov edx, ebx |
341 | mov edx, ebx |
339 | 342 | ||
340 | mov eax, 47 |
343 | mov eax, 47 |
341 | mov ebx, 0x00030000 |
344 | mov ebx, 0x00030000 |
342 | mov esi, 0x40000000 |
345 | mov esi, 0x40000000 |
343 | mov edi, 0x00bcbcbc |
346 | mov edi, 0x00bcbcbc |
344 | xor ecx, ecx |
347 | xor ecx, ecx |
345 | 348 | ||
346 | mov cl, byte[arp_buf.IP+0] |
349 | mov cl, byte[arp_buf.IP+0] |
347 | mcall |
350 | mcall |
348 | 351 | ||
349 | mov cl, byte[arp_buf.IP+1] |
352 | mov cl, byte[arp_buf.IP+1] |
350 | add edx, 24 shl 16 |
353 | add edx, 24 shl 16 |
351 | mcall |
354 | mcall |
352 | 355 | ||
353 | mov cl, byte[arp_buf.IP+2] |
356 | mov cl, byte[arp_buf.IP+2] |
354 | add edx, 24 shl 16 |
357 | add edx, 24 shl 16 |
355 | mcall |
358 | mcall |
356 | 359 | ||
357 | mov cl, byte[arp_buf.IP+3] |
360 | mov cl, byte[arp_buf.IP+3] |
358 | add edx, 24 shl 16 |
361 | add edx, 24 shl 16 |
359 | mcall |
362 | mcall |
360 | 363 | ||
361 | 364 | ||
362 | mov ebx, 0x00020100 |
365 | mov ebx, 0x00020100 |
363 | mov cl, byte[arp_buf.MAC+0] |
366 | mov cl, byte[arp_buf.MAC+0] |
364 | add edx, 36 shl 16 |
367 | add edx, 36 shl 16 |
365 | mcall |
368 | mcall |
366 | 369 | ||
367 | mov cl, byte[arp_buf.MAC+1] |
370 | mov cl, byte[arp_buf.MAC+1] |
368 | add edx, 18 shl 16 |
371 | add edx, 18 shl 16 |
369 | mcall |
372 | mcall |
370 | 373 | ||
371 | mov cl, byte[arp_buf.MAC+2] |
374 | mov cl, byte[arp_buf.MAC+2] |
372 | add edx, 18 shl 16 |
375 | add edx, 18 shl 16 |
373 | mcall |
376 | mcall |
374 | 377 | ||
375 | mov cl, byte[arp_buf.MAC+3] |
378 | mov cl, byte[arp_buf.MAC+3] |
376 | add edx, 18 shl 16 |
379 | add edx, 18 shl 16 |
377 | mcall |
380 | mcall |
378 | 381 | ||
379 | mov cl, byte[arp_buf.MAC+4] |
382 | mov cl, byte[arp_buf.MAC+4] |
380 | add edx, 18 shl 16 |
383 | add edx, 18 shl 16 |
381 | mcall |
384 | mcall |
382 | 385 | ||
383 | mov cl, byte[arp_buf.MAC+5] |
386 | mov cl, byte[arp_buf.MAC+5] |
384 | add edx, 18 shl 16 |
387 | add edx, 18 shl 16 |
385 | mcall |
388 | mcall |
386 | 389 | ||
387 | mov ebx, 0x00040000 |
390 | mov ebx, 0x00040000 |
388 | mov cx, [arp_buf.status] |
391 | mov cx, [arp_buf.status] |
389 | add edx, 30 shl 16 |
392 | add edx, 30 shl 16 |
390 | mcall |
393 | mcall |
391 | 394 | ||
392 | mov cx, [arp_buf.TTL] |
395 | mov cx, [arp_buf.TTL] |
393 | add edx, 60 shl 16 |
396 | add edx, 60 shl 16 |
394 | mcall |
397 | mcall |
395 | 398 | ||
396 | add dx, 18 |
399 | add dx, 18 |
397 | rol edx, 16 |
400 | rol edx, 16 |
398 | mov dx, 8 |
401 | mov dx, 8 |
399 | rol edx, 16 |
402 | rol edx, 16 |
400 | inc [last] |
403 | inc [last] |
401 | 404 | ||
402 | jmp .arp_loop |
405 | jmp .arp_loop |
403 | 406 | ||
404 | not_103: |
407 | not_103: |
405 | 408 | ||
406 | cmp [mode], 104 |
409 | cmp [mode], 104 |
407 | jne not_104 |
410 | jne not_104 |
408 | 411 | ||
409 | mov ebx, API_ICMP |
412 | mov ebx, API_ICMP |
410 | mov bh, [device] |
413 | mov bh, [device] |
411 | push ebx |
414 | push ebx |
412 | mcall 76 |
415 | mcall 76 |
413 | pop ebx |
416 | pop ebx |
414 | push eax |
417 | push eax |
415 | 418 | ||
416 | inc bl |
419 | inc bl |
417 | push ebx |
420 | push ebx |
418 | mcall 76 |
421 | mcall 76 |
419 | pop ebx |
422 | pop ebx |
420 | push eax |
423 | push eax |
421 | 424 | ||
422 | mov ebx, 0x000a0000 |
425 | mov ebx, 0x000a0000 |
423 | pop ecx |
426 | pop ecx |
424 | mov edx, 135 shl 16 + 35 + 18 |
427 | mov edx, 135 shl 16 + 35 + 18 |
425 | mov esi, 0x40000000 |
428 | mov esi, 0x40000000 |
426 | mov edi, 0x00bcbcbc |
429 | mov edi, 0x00bcbcbc |
427 | mcall 47 |
430 | mcall 47 |
428 | 431 | ||
429 | sub edx, 18 |
432 | sub edx, 18 |
430 | pop ecx |
433 | pop ecx |
431 | mcall |
434 | mcall |
432 | 435 | ||
433 | jmp mainloop |
436 | jmp mainloop |
434 | 437 | ||
435 | not_104: |
438 | not_104: |
436 | 439 | ||
437 | cmp [mode], 105 |
440 | cmp [mode], 105 |
438 | jne not_105 |
441 | jne not_105 |
439 | 442 | ||
440 | mov ebx, API_UDP |
443 | mov ebx, API_UDP |
441 | mov bh, [device] |
444 | mov bh, [device] |
442 | push ebx |
445 | push ebx |
443 | mcall 76 |
446 | mcall 76 |
444 | pop ebx |
447 | pop ebx |
445 | push eax |
448 | push eax |
446 | 449 | ||
447 | inc bl |
450 | inc bl |
448 | push ebx |
451 | push ebx |
449 | mcall 76 |
452 | mcall 76 |
450 | pop ebx |
453 | pop ebx |
451 | push eax |
454 | push eax |
452 | 455 | ||
453 | mov ebx, 0x000a0000 |
456 | mov ebx, 0x000a0000 |
454 | pop ecx |
457 | pop ecx |
455 | mov edx, 135 shl 16 + 35 + 18 |
458 | mov edx, 135 shl 16 + 35 + 18 |
456 | mov esi, 0x40000000 |
459 | mov esi, 0x40000000 |
457 | mov edi, 0x00bcbcbc |
460 | mov edi, 0x00bcbcbc |
458 | mcall 47 |
461 | mcall 47 |
459 | 462 | ||
460 | sub edx, 18 |
463 | sub edx, 18 |
461 | pop ecx |
464 | pop ecx |
462 | mcall |
465 | mcall |
463 | 466 | ||
464 | jmp mainloop |
467 | jmp mainloop |
465 | 468 | ||
466 | not_105: |
469 | not_105: |
467 | 470 | ||
468 | cmp [mode], 106 |
471 | cmp [mode], 106 |
469 | jne not_106 |
472 | jne not_106 |
470 | 473 | ||
471 | mov ebx, API_TCP |
474 | mov ebx, API_TCP |
472 | mov bh, [device] |
475 | mov bh, [device] |
473 | push ebx |
476 | push ebx |
474 | mcall 76 |
477 | mcall 76 |
475 | pop ebx |
478 | pop ebx |
476 | push eax |
479 | push eax |
477 | 480 | ||
478 | inc bl |
481 | inc bl |
479 | push ebx |
482 | push ebx |
480 | mcall 76 |
483 | mcall 76 |
481 | pop ebx |
484 | pop ebx |
482 | push eax |
485 | push eax |
483 | 486 | ||
484 | inc bl |
487 | inc bl |
485 | push ebx |
488 | push ebx |
486 | mcall 76 |
489 | mcall 76 |
487 | pop ebx |
490 | pop ebx |
488 | push eax |
491 | push eax |
489 | 492 | ||
490 | inc bl |
493 | inc bl |
491 | push ebx |
494 | push ebx |
492 | mcall 76 |
495 | mcall 76 |
493 | pop ebx |
496 | pop ebx |
494 | push eax |
497 | push eax |
495 | 498 | ||
496 | mov ebx, 0x000a0000 |
499 | mov ebx, 0x000a0000 |
497 | pop ecx |
500 | pop ecx |
498 | mov edx, 135 shl 16 + 35 + 18*3 |
501 | mov edx, 135 shl 16 + 35 + 18*3 |
499 | mov esi, 0x40000000 |
502 | mov esi, 0x40000000 |
500 | mov edi, 0x00bcbcbc |
503 | mov edi, 0x00bcbcbc |
501 | mcall 47 |
504 | mcall 47 |
502 | 505 | ||
503 | sub edx, 18 |
506 | sub edx, 18 |
504 | pop ecx |
507 | pop ecx |
505 | mcall |
508 | mcall |
506 | 509 | ||
507 | sub edx, 18 |
510 | sub edx, 18 |
508 | pop ecx |
511 | pop ecx |
509 | mcall |
512 | mcall |
510 | 513 | ||
511 | sub edx, 18 |
514 | sub edx, 18 |
512 | pop ecx |
515 | pop ecx |
513 | mcall |
516 | mcall |
514 | 517 | ||
515 | jmp mainloop |
518 | jmp mainloop |
516 | 519 | ||
517 | not_106: |
520 | not_106: |
518 | 521 | ||
519 | mainloop: |
522 | mainloop: |
520 | 523 | ||
521 | mcall 23, 50 ; wait for event with timeout (0,5 s) |
524 | mcall 23, 50 ; wait for event with timeout (0,5 s) |
522 | 525 | ||
523 | cmp eax, 1 |
526 | cmp eax, 1 |
524 | je redraw |
527 | je redraw |
525 | cmp eax, 3 |
528 | cmp eax, 3 |
526 | je button |
529 | je button |
527 | cmp eax, 11 |
530 | cmp eax, 11 |
528 | je redraw |
531 | je redraw |
529 | 532 | ||
530 | jmp draw_stats |
533 | jmp draw_stats |
531 | 534 | ||
532 | button: ; button |
535 | button: ; button |
533 | mcall 17 ; get id |
536 | mcall 17 ; get id |
534 | cmp ah, 1 |
537 | cmp ah, 1 |
535 | je exit |
538 | je exit |
536 | cmp ah, 0 |
539 | cmp ah, 0 |
537 | je .interface |
540 | je .interface |
538 | mov [mode], ah |
541 | mov [mode], ah |
539 | jmp redraw |
542 | jmp redraw |
540 | 543 | ||
541 | .interface: |
544 | .interface: |
542 | shr eax, 16 |
545 | shr eax, 16 |
543 | mov [device], al |
546 | mov [device], al |
544 | jmp redraw |
547 | jmp redraw |
545 | 548 | ||
546 | exit: |
549 | exit: |
547 | mcall -1 |
550 | mcall -1 |
548 | 551 | ||
549 | 552 | ||
550 | 553 | ||
551 | draw_mac: |
554 | draw_mac: |
552 | 555 | ||
553 | mov eax, 47 |
556 | mov eax, 47 |
554 | mov ebx, 0x00020100 |
557 | mov ebx, 0x00020100 |
555 | mov esi, 0x40000000 |
558 | mov esi, 0x40000000 |
556 | mov edi, 0x00bcbcbc |
559 | mov edi, 0x00bcbcbc |
557 | 560 | ||
558 | mov cl, [esp+4] |
561 | mov cl, [esp+4] |
559 | mcall |
562 | mcall |
560 | 563 | ||
561 | mov cl, [esp+4+1] |
564 | mov cl, [esp+4+1] |
562 | add edx, 15 shl 16 |
565 | add edx, 15 shl 16 |
563 | mcall |
566 | mcall |
564 | 567 | ||
565 | mov cl, [esp+4+2] |
568 | mov cl, [esp+4+2] |
566 | add edx, 15 shl 16 |
569 | add edx, 15 shl 16 |
567 | mcall |
570 | mcall |
568 | 571 | ||
569 | mov cl, [esp+4+3] |
572 | mov cl, [esp+4+3] |
570 | add edx, 15 shl 16 |
573 | add edx, 15 shl 16 |
571 | mcall |
574 | mcall |
572 | 575 | ||
573 | mov cl, [esp+4+4] |
576 | mov cl, [esp+4+4] |
574 | add edx, 15 shl 16 |
577 | add edx, 15 shl 16 |
575 | mcall |
578 | mcall |
576 | 579 | ||
577 | mov cl, [esp+4+5] |
580 | mov cl, [esp+4+5] |
578 | add edx, 15 shl 16 |
581 | add edx, 15 shl 16 |
579 | mcall |
582 | mcall |
580 | 583 | ||
581 | sub edx, 5*15 shl 16 |
584 | sub edx, 5*15 shl 16 |
582 | 585 | ||
583 | ret 6 |
586 | ret 6 |
584 | 587 | ||
585 | 588 | ||
586 | draw_ip: |
589 | draw_ip: |
587 | 590 | ||
588 | mov eax, 47 |
591 | mov eax, 47 |
589 | mov ebx, 0x00030000 |
592 | mov ebx, 0x00030000 |
590 | mov esi, 0x40000000 |
593 | mov esi, 0x40000000 |
591 | mov edi, 0x00bcbcbc |
594 | mov edi, 0x00bcbcbc |
592 | 595 | ||
593 | xor ecx, ecx |
596 | xor ecx, ecx |
594 | 597 | ||
595 | mov cl, [esp+4] |
598 | mov cl, [esp+4] |
596 | mcall |
599 | mcall |
597 | 600 | ||
598 | mov cl, [esp+4+1] |
601 | mov cl, [esp+4+1] |
599 | add edx, 30 shl 16 |
602 | add edx, 30 shl 16 |
600 | mcall |
603 | mcall |
601 | 604 | ||
602 | mov cl, [esp+4+2] |
605 | mov cl, [esp+4+2] |
603 | add edx, 30 shl 16 |
606 | add edx, 30 shl 16 |
604 | mcall |
607 | mcall |
605 | 608 | ||
606 | mov cl, [esp+4+3] |
609 | mov cl, [esp+4+3] |
607 | add edx, 30 shl 16 |
610 | add edx, 30 shl 16 |
608 | mcall |
611 | mcall |
609 | 612 | ||
610 | sub edx, 3*30 shl 16 |
613 | sub edx, 3*30 shl 16 |
611 | ret 4 |
614 | ret 4 |
612 | 615 | ||
613 | 616 | ||
614 | draw_interfaces: |
617 | draw_interfaces: |
615 | 618 | ||
616 | mov [.btnpos], 5 shl 16 + 20 |
619 | mov [.btnpos], 5 shl 16 + 20 |
617 | mov [.txtpos], 455 shl 16 + 12 |
620 | mov [.txtpos], 455 shl 16 + 12 |
618 | 621 | ||
619 | mcall 74, -1 ; get number of active network devices |
622 | mcall 74, -1 ; get number of active network devices |
620 | mov ecx, eax |
623 | mov ecx, eax |
621 | 624 | ||
622 | xor ebx, ebx ; get device type |
625 | xor ebx, ebx ; get device type |
623 | .loop: |
626 | .loop: |
624 | mcall 74 |
627 | mcall 74 |
625 | cmp eax, 1 ; loopback or ethernet? |
628 | cmp eax, 1 ; loopback or ethernet? |
626 | jbe .hit |
629 | jbe .hit |
627 | inc bh |
630 | inc bh |
628 | jb .loop ; tried all 256? |
631 | jb .loop ; tried all 256? |
629 | ret |
632 | ret |
630 | 633 | ||
631 | 634 | ||
632 | .hit: |
635 | .hit: |
633 | push ecx ebx |
636 | push ecx ebx |
634 | movzx edx, bh |
637 | movzx edx, bh |
635 | shl edx, 8 |
638 | shl edx, 8 |
636 | mov esi, 0x00aaaaff |
639 | mov esi, 0x00aaaaff |
637 | cmp bh, [device] |
640 | cmp bh, [device] |
638 | cmove esi, 0x00aaffff |
641 | cmove esi, 0x00aaffff |
639 | mcall 8, 450 shl 16 + 135, [.btnpos] |
642 | mcall 8, 450 shl 16 + 135, [.btnpos] |
640 | mov ebx, [esp] |
643 | mov ebx, [esp] |
641 | inc bl |
644 | inc bl |
642 | mov ecx, namebuf |
645 | mov ecx, namebuf |
643 | mov edx, namebuf |
646 | mov edx, namebuf |
644 | mcall 74 ; get device name |
647 | mcall 74 ; get device name |
645 | cmp eax, -1 |
648 | cmp eax, -1 |
646 | jne @f |
649 | jne @f |
647 | mov edx, str_unknown |
650 | mov edx, str_unknown |
648 | @@: |
651 | @@: |
649 | mcall 4, [.txtpos], 0x80000000 ; print the name |
652 | mcall 4, [.txtpos], 0x80000000 ; print the name |
650 | pop ebx ecx |
653 | pop ebx ecx |
651 | 654 | ||
652 | inc bh |
655 | inc bh |
653 | 656 | ||
654 | add [.btnpos], 25 shl 16 |
657 | add [.btnpos], 25 shl 16 |
655 | add [.txtpos], 25 |
658 | add [.txtpos], 25 |
656 | 659 | ||
657 | dec ecx |
660 | dec ecx |
658 | jnz .loop |
661 | jnz .loop |
659 | 662 | ||
660 | ret |
663 | ret |
661 | 664 | ||
662 | .btnpos dd ? |
665 | .btnpos dd ? |
663 | .txtpos dd ? |
666 | .txtpos dd ? |
664 | 667 | ||
665 | 668 | ||
666 | 669 | ||
667 | 670 | ||
668 | ; DATA AREA |
671 | ; DATA AREA |
669 | 672 | ||
670 | name db 'Netstat', 0 |
673 | name db 'Netstat', 0 |
671 | mode db 101 |
674 | mode db 101 |
672 | device db 0 |
675 | device db 0 |
673 | device_type dd 0 |
676 | device_type dd 0 |
674 | last dd 0 |
677 | last dd 0 |
675 | modes db 'Physical IPv4 ARP ICMP UDP TCP', 0 |
678 | modes db 'Physical IPv4 ARP ICMP UDP TCP', 0 |
676 | 679 | ||
677 | str_packets_tx db 'Packets sent:', 0 |
680 | str_packets_tx db 'Packets sent:', 0 |
678 | str_packets_rx db 'Packets received:', 0 |
681 | str_packets_rx db 'Packets received:', 0 |
679 | str_bytes_tx db 'Bytes sent:', 0 |
682 | str_bytes_tx db 'Bytes sent:', 0 |
680 | str_bytes_rx db 'Bytes received:', 0 |
683 | str_bytes_rx db 'Bytes received:', 0 |
681 | str_MAC db 'MAC address:', 0 |
684 | str_MAC db 'MAC address:', 0 |
682 | str_ip db 'IP address:', 0 |
685 | str_ip db 'IP address:', 0 |
683 | str_dns db 'DNS address:', 0 |
686 | str_dns db 'DNS address:', 0 |
684 | str_subnet db 'Subnet mask:', 0 |
687 | str_subnet db 'Subnet mask:', 0 |
685 | str_gateway db 'Standard gateway:', 0 |
688 | str_gateway db 'Standard gateway:', 0 |
686 | str_arp db 'ARP entrys:', 0 |
689 | str_arp db 'ARP entrys:', 0 |
687 | str_conflicts db 'ARP conflicts:', 0 |
690 | str_conflicts db 'ARP conflicts:', 0 |
688 | str_unknown db 'unknown', 0 |
691 | str_unknown db 'unknown', 0 |
689 | str_missed db 'Packets missed:',0 |
692 | str_missed db 'Packets missed:',0 |
690 | str_dumped db 'Packets dumped:',0 |
693 | str_dumped db 'Packets dumped:',0 |
691 | str_link db 'Link state:',0 |
694 | str_link db 'Link state:',0 |
692 | 695 | ||
693 | str_ARP_legend db 'IP-address MAC-address Status TTL', 0 |
696 | str_ARP_legend db 'IP-address MAC-address Status TTL', 0 |
694 | str_ARP_entry db ' . . . - - - - - s', 0 |
697 | str_ARP_entry db ' . . . - - - - - s', 0 |
695 | 698 | ||
696 | namebuf rb 64 |
699 | namebuf rb 64 |
697 | arp_buf ARP_entry |
700 | arp_buf ARP_entry |
698 | 701 | ||
699 | I_END: |
702 | I_END: |