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