forked from KolibriOS/kolibrios
505 lines
8.2 KiB
NASM
505 lines
8.2 KiB
NASM
|
;
|
||
|
; Netstat for KolibriOS v0.1
|
||
|
;
|
||
|
; hidnplayr@gmail.com
|
||
|
;
|
||
|
|
||
|
use32
|
||
|
|
||
|
org 0x0
|
||
|
|
||
|
db 'MENUET01' ; 8 byte id
|
||
|
dd 0x01 ; header version
|
||
|
dd START ; start of code
|
||
|
dd I_END ; size of image
|
||
|
dd IM_END ; memory for app
|
||
|
dd IM_END ; esp
|
||
|
dd I_PARAM , 0x0 ; I_Param , I_Icon
|
||
|
|
||
|
__DEBUG__ equ 1
|
||
|
__DEBUG_LEVEL__ equ 1
|
||
|
|
||
|
include '..\macros.inc'
|
||
|
include '..\debug-fdo.inc'
|
||
|
|
||
|
START: ; start of execution
|
||
|
; TODO: check Parameters
|
||
|
|
||
|
DEBUGF 1, 'Hello!\n'
|
||
|
|
||
|
|
||
|
redraw:
|
||
|
|
||
|
mcall 12, 1
|
||
|
|
||
|
mcall 0, 100 shl 16 + 520, 100 shl 16 + 240, 0x34bcbcbc, ,name
|
||
|
|
||
|
mov edx, 101
|
||
|
mov esi, 0x00aaaaff
|
||
|
mov edi, 0x00aaffff
|
||
|
|
||
|
cmp dl, [mode]
|
||
|
cmove esi, edi
|
||
|
mcall 8, 25 shl 16 + 65, 25 shl 16 + 20
|
||
|
|
||
|
@@:
|
||
|
inc edx
|
||
|
add ebx, 75 shl 16
|
||
|
mov esi, 0x00aaaaff
|
||
|
|
||
|
cmp dl, [mode]
|
||
|
cmove esi, edi
|
||
|
mcall
|
||
|
|
||
|
cmp edx, 105
|
||
|
jle @r
|
||
|
|
||
|
mcall 4, 28 shl 16 + 31, 0x80000000, modes
|
||
|
|
||
|
cmp [mode], 101
|
||
|
jne @f
|
||
|
|
||
|
mcall 4, 20 shl 16 + 75, 0x80000000, str_packets_tx
|
||
|
add ebx, 18
|
||
|
mov edx, str_packets_rx
|
||
|
mcall
|
||
|
add ebx, 18
|
||
|
mov edx, str_bytes_tx
|
||
|
mcall
|
||
|
add ebx, 18
|
||
|
mov edx, str_bytes_rx
|
||
|
mcall
|
||
|
add ebx, 18
|
||
|
mov edx, str_MAC
|
||
|
mcall
|
||
|
add ebx, 18
|
||
|
mov edx, str_queue_in
|
||
|
mcall
|
||
|
add ebx, 18
|
||
|
mov edx, str_queue_out
|
||
|
mcall
|
||
|
|
||
|
push end_of_draw
|
||
|
|
||
|
mov ebx,1337 shl 16 + 4
|
||
|
mov bh, [device]
|
||
|
mcall 75
|
||
|
push eax
|
||
|
push bx
|
||
|
|
||
|
mov edx, 135 shl 16 + 75 + 4*18
|
||
|
jmp draw_mac
|
||
|
|
||
|
@@:
|
||
|
|
||
|
cmp [mode], 102
|
||
|
jne @f
|
||
|
|
||
|
mcall 4, 20 shl 16 + 75, 0x80000000, str_packets_tx
|
||
|
add ebx, 18
|
||
|
mov edx, str_packets_rx
|
||
|
mcall
|
||
|
add ebx, 18
|
||
|
mov edx, str_ip
|
||
|
mcall
|
||
|
add ebx, 18
|
||
|
mov edx, str_dns
|
||
|
mcall
|
||
|
add ebx, 18
|
||
|
mov edx, str_subnet
|
||
|
mcall
|
||
|
add ebx, 18
|
||
|
mov edx, str_gateway
|
||
|
mcall
|
||
|
|
||
|
|
||
|
mov ebx, 0 shl 16 + 8
|
||
|
mov bh, [device]
|
||
|
mcall 75
|
||
|
push eax
|
||
|
|
||
|
dec bl
|
||
|
dec bl
|
||
|
mcall 75
|
||
|
push eax
|
||
|
|
||
|
dec bl
|
||
|
dec bl
|
||
|
mcall 75
|
||
|
push eax
|
||
|
|
||
|
dec bl
|
||
|
dec bl
|
||
|
mcall 75
|
||
|
push eax
|
||
|
|
||
|
mov edx, 135 shl 16 + 75 + 2*18
|
||
|
call draw_ip
|
||
|
|
||
|
add edx, 18
|
||
|
call draw_ip
|
||
|
|
||
|
add edx, 18
|
||
|
call draw_ip
|
||
|
|
||
|
add edx, 18
|
||
|
call draw_ip
|
||
|
|
||
|
jmp end_of_draw
|
||
|
|
||
|
@@:
|
||
|
|
||
|
cmp [mode], 103
|
||
|
jne @f
|
||
|
|
||
|
mcall 4, 20 shl 16 + 75, 0x80000000, str_packets_tx
|
||
|
add ebx, 18
|
||
|
mov edx, str_packets_rx
|
||
|
mcall
|
||
|
add ebx, 18
|
||
|
mov edx, str_arp
|
||
|
mcall
|
||
|
|
||
|
jmp end_of_draw
|
||
|
|
||
|
@@:
|
||
|
|
||
|
mcall 4, 20 shl 16 + 75, 0x80000000, str_packets_tx
|
||
|
add ebx, 18
|
||
|
mov edx, str_packets_rx
|
||
|
mcall
|
||
|
|
||
|
end_of_draw:
|
||
|
|
||
|
mcall 12, 2
|
||
|
|
||
|
jmp draw_stats
|
||
|
|
||
|
mainloop:
|
||
|
|
||
|
mcall 23,50 ; wait for event with timeout (0,5 s)
|
||
|
|
||
|
cmp eax, 1
|
||
|
je redraw
|
||
|
cmp eax, 2
|
||
|
je key
|
||
|
cmp eax, 3
|
||
|
je button
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
;-------------------------------
|
||
|
;
|
||
|
;------------------------------
|
||
|
|
||
|
draw_stats:
|
||
|
|
||
|
cmp [mode], 101
|
||
|
jne not_101
|
||
|
|
||
|
mov ebx, 1337 shl 16 + 0
|
||
|
mov bh, [device]
|
||
|
@@:
|
||
|
mcall 75
|
||
|
push eax
|
||
|
inc bl
|
||
|
cmp bl, 3
|
||
|
jle @r
|
||
|
|
||
|
|
||
|
inc bl
|
||
|
inc bl
|
||
|
|
||
|
@@:
|
||
|
mcall 75
|
||
|
push eax
|
||
|
inc bl
|
||
|
cmp bl, 7
|
||
|
jle @r
|
||
|
|
||
|
mov eax, 47
|
||
|
mov ebx, 0x000a0000
|
||
|
mov esi, 0x40000000
|
||
|
mov edi, 0x00bcbcbc
|
||
|
mov edx, 135 shl 16 + 75 + 6*18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
sub edx, 18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
sub edx, 2*18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
sub edx, 18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
sub edx, 18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
sub edx, 18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
|
||
|
jmp mainloop
|
||
|
|
||
|
|
||
|
not_101:
|
||
|
|
||
|
cmp [mode], 102
|
||
|
jne not_102
|
||
|
|
||
|
mov ebx, 0 shl 16
|
||
|
mov bh, [device]
|
||
|
mcall 75
|
||
|
push eax
|
||
|
inc bl
|
||
|
mcall 75
|
||
|
push eax
|
||
|
inc bl
|
||
|
|
||
|
mov eax, 47
|
||
|
mov ebx, 0x000a0000
|
||
|
mov esi, 0x40000000
|
||
|
mov edi, 0x00bcbcbc
|
||
|
mov edx, 135 shl 16 + 75 + 18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
sub edx, 18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
|
||
|
jmp mainloop
|
||
|
|
||
|
|
||
|
not_102:
|
||
|
|
||
|
cmp [mode], 103
|
||
|
jne not_103
|
||
|
|
||
|
mov ebx, 0x0608 shl 16 + 0
|
||
|
mov bh, [device]
|
||
|
mcall 75
|
||
|
push eax
|
||
|
inc bl
|
||
|
mcall 75
|
||
|
push eax
|
||
|
inc bl
|
||
|
mcall 75
|
||
|
push eax
|
||
|
inc bl
|
||
|
|
||
|
mov eax, 47
|
||
|
mov ebx, 0x000a0000
|
||
|
mov esi, 0x40000000
|
||
|
mov edi, 0x00bcbcbc
|
||
|
mov edx, 135 shl 16 + 75 + 2*18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
sub edx, 18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
sub edx, 18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
|
||
|
jmp mainloop
|
||
|
|
||
|
not_103:
|
||
|
|
||
|
cmp [mode], 104
|
||
|
jne not_104
|
||
|
|
||
|
mov ebx, 1 shl 16 + 0
|
||
|
mov bh, [device]
|
||
|
mcall 75
|
||
|
push eax
|
||
|
inc bl
|
||
|
mcall 75
|
||
|
push eax
|
||
|
inc bl
|
||
|
|
||
|
mov eax, 47
|
||
|
mov ebx, 0x000a0000
|
||
|
mov esi, 0x40000000
|
||
|
mov edi, 0x00bcbcbc
|
||
|
mov edx, 135 shl 16 + 75 + 18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
sub edx, 18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
|
||
|
jmp mainloop
|
||
|
|
||
|
not_104:
|
||
|
|
||
|
cmp [mode], 105
|
||
|
jne not_105
|
||
|
|
||
|
mov ebx, 17 shl 16 + 0
|
||
|
mov bh, [device]
|
||
|
mcall 75
|
||
|
push eax
|
||
|
inc bl
|
||
|
mcall 75
|
||
|
push eax
|
||
|
inc bl
|
||
|
|
||
|
mov eax, 47
|
||
|
mov ebx, 0x000a0000
|
||
|
mov esi, 0x40000000
|
||
|
mov edi, 0x00bcbcbc
|
||
|
mov edx, 135 shl 16 + 75 + 18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
sub edx, 18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
|
||
|
jmp mainloop
|
||
|
|
||
|
not_105:
|
||
|
|
||
|
cmp [mode], 106
|
||
|
jne not_106
|
||
|
|
||
|
mov ebx, 6 shl 16 + 0
|
||
|
mov bh, [device]
|
||
|
mcall 75
|
||
|
push eax
|
||
|
inc bl
|
||
|
mcall 75
|
||
|
push eax
|
||
|
inc bl
|
||
|
|
||
|
mov eax, 47
|
||
|
mov ebx, 0x000a0000
|
||
|
mov esi, 0x40000000
|
||
|
mov edi, 0x00bcbcbc
|
||
|
mov edx, 135 shl 16 + 75 + 18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
sub edx, 18
|
||
|
pop ecx
|
||
|
mcall
|
||
|
|
||
|
jmp mainloop
|
||
|
|
||
|
not_106:
|
||
|
|
||
|
jmp mainloop
|
||
|
|
||
|
key:
|
||
|
mcall 2
|
||
|
jmp mainloop
|
||
|
|
||
|
|
||
|
button: ; button
|
||
|
mcall 17 ; get id
|
||
|
cmp ah, 1
|
||
|
je close
|
||
|
mov [mode], ah
|
||
|
jmp redraw
|
||
|
|
||
|
close:
|
||
|
mcall -1
|
||
|
|
||
|
|
||
|
|
||
|
draw_mac:
|
||
|
|
||
|
mov eax, 47
|
||
|
mov ebx, 0x00020100
|
||
|
mov esi, 0x40000000
|
||
|
mov edi, 0x00bcbcbc
|
||
|
|
||
|
mov cl, [esp]
|
||
|
mcall
|
||
|
|
||
|
mov cl, [esp+1]
|
||
|
add edx, 15 shl 16
|
||
|
mcall
|
||
|
|
||
|
mov cl, [esp+2]
|
||
|
add edx, 15 shl 16
|
||
|
mcall
|
||
|
|
||
|
mov cl, [esp+3]
|
||
|
add edx, 15 shl 16
|
||
|
mcall
|
||
|
|
||
|
mov cl, [esp+4]
|
||
|
add edx, 15 shl 16
|
||
|
mcall
|
||
|
|
||
|
mov cl, [esp+5]
|
||
|
add edx, 15 shl 16
|
||
|
mcall
|
||
|
|
||
|
add esp, 6
|
||
|
sub edx, 5*15 shl 16
|
||
|
|
||
|
ret
|
||
|
|
||
|
|
||
|
draw_ip:
|
||
|
|
||
|
mov eax, 47
|
||
|
mov ebx, 0x00030000
|
||
|
mov esi, 0x40000000
|
||
|
mov edi, 0x00bcbcbc
|
||
|
|
||
|
xor ecx, ecx
|
||
|
|
||
|
mov cl, [esp+4]
|
||
|
mcall
|
||
|
|
||
|
mov cl, [esp+4+1]
|
||
|
add edx, 30 shl 16
|
||
|
mcall
|
||
|
|
||
|
mov cl, [esp+4+2]
|
||
|
add edx, 30 shl 16
|
||
|
mcall
|
||
|
|
||
|
mov cl, [esp+4+3]
|
||
|
add edx, 30 shl 16
|
||
|
mcall
|
||
|
|
||
|
sub edx, 3*30 shl 16
|
||
|
mov eax, [esp]
|
||
|
add esp, 8
|
||
|
jmp eax
|
||
|
|
||
|
|
||
|
; DATA AREA
|
||
|
|
||
|
I_END:
|
||
|
|
||
|
name db 'Netstat',0
|
||
|
mode db 101
|
||
|
device db 0
|
||
|
modes db 'Ethernet IPv4 ARP ICMP UDP TCP',0
|
||
|
|
||
|
str_packets_tx db 'Packets sent:',0
|
||
|
str_packets_rx db 'Packets received:',0
|
||
|
str_bytes_tx db 'Bytes sent:',0
|
||
|
str_bytes_rx db 'Bytes received:',0
|
||
|
str_MAC db 'MAC address:',0
|
||
|
str_queue_in db 'IN-queue size:',0
|
||
|
str_queue_out db 'OUT-queue size:',0
|
||
|
str_ip db 'IP address:',0
|
||
|
str_dns db 'DNS address:',0
|
||
|
str_subnet db 'Subnet mask:',0
|
||
|
str_gateway db 'Standard gateway:',0
|
||
|
str_arp db 'ARP entrys:',0
|
||
|
|
||
|
include_debug_strings ; ALWAYS present in data section
|
||
|
|
||
|
I_PARAM rb 1024
|
||
|
|
||
|
IM_END:
|
||
|
|
||
|
|