Subversion Repositories Kolibri OS

Rev

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: