Poderiam avaliar este script que fiz

1. Poderiam avaliar este script que fiz

José Lucas
NidoBr

(usa Manjaro Linux)

Enviado em 24/01/2021 - 17:00h

Este script é só um teste, ainda estou aprendendo tcl/tk.
Mostra conexões de rede local e remota com base no arquivo "/proc/net/tcp"

https://github.com/NIDObr/NET_TCL


#!/usr/bin/tclsh

# Autor: MINEMAM
# 24/01/2021
# Sobre: Mostra as conexões de rede, usando como base o arquivo "/proc/net/tcp"
# BSD-3-Clause License


#------------Funçoes----------------

# Converte hexadecimal(little-edian) para decimal
proc hex_to_dec { hex } {
set cont 0
set hex_lista {}
# Reordena o valor hexadecimal(little-edian) para convertelo
while { $cont != [ string length $hex ] } {
set hex_conv [ string index $hex $cont ]
set par [ regexp {([02468])} $cont par_m ]
if { $par == 1} {
set indice [ expr $cont + 1 ]
set hex_lista [ linsert $hex_lista $indice $hex_conv ]
} else {
set indice [ expr $cont - 1 ]
set hex_lista [ linsert $hex_lista $indice $hex_conv ]
}
incr cont
}
# Inverte a ordem da lista
set cont 7
set indice 0
set dec_lista {}
while { $cont != -1 } {
set var_atu [ lindex $hex_lista $cont ]
set dec_lista [ linsert $dec_lista $indice $var_atu ]
incr cont -1
incr indice
}
# Converte hexadecimal para decimal usando o "expr 0x"
set dec1 [ expr 0x[ lindex $dec_lista 0 ][ lindex $dec_lista 1 ] ]
set dec2 [ expr 0x[ lindex $dec_lista 2 ][ lindex $dec_lista 3 ] ]
set dec3 [ expr 0x[ lindex $dec_lista 4 ][ lindex $dec_lista 5 ] ]
set dec4 [ expr 0x[ lindex $dec_lista 6 ][ lindex $dec_lista 7 ] ]
set resultado "$dec1.$dec2.$dec3.$dec4"
return $resultado
}

#------------Inicio-----------------

# Verifica se o arquivo existe
if { [ file exists /proc/net/tcp ] } {
set tcp_file [ open /proc/net/tcp r ]
} else {
puts "Arquivo não existe!"
exit
}

set cont 0
while { ! [ eof $tcp_file ] } {
if { $cont == 0 } {
set tcp_linha [ gets $tcp_file ]
puts "Conexão Local: Conexão Remota:"
} else {
set tcp_linha [ gets $tcp_file ]
if { $tcp_linha == "" } {
break
}
# IP:PORTA DE ORIGEM
set hex_orig [ lindex $tcp_linha 1 ]
set hex_ip_o [ string range $hex_orig 0 7 ]
set ip_local [ hex_to_dec $hex_ip_o ]
set porta_local [ expr 0x[ string range $hex_orig 9 12 ] ]
# IP:PORTA DE DESTINO
set hex_dest [ lindex $tcp_linha 2 ]
set hex_ip_d [ string range $hex_dest 0 7 ]
set ip_dest [ hex_to_dec $hex_ip_d ]
set porta_dest [ expr 0x[ string range $hex_dest 9 12 ] ]
if { [ string first ":" "$ip_local:$porta_local" ] < 11 } {
set tab " "
} else {
set tab ""
}
puts "$ip_local:$porta_local $tab $ip_dest:$porta_dest"
}
incr cont
}

close $tcp_file



  


2. Re: Poderiam avaliar este script que fiz

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 24/01/2021 - 17:29h

Nossa, fazia muito tempo que não via nada sobre tcl.
Testei aqui e funcionou de boa. Eu vou deixar uma sugestão:
-ao invés de exibir o número do ipv4, poderia também exibir o ipv6
-ou, exibir o endereço da conexão remota ao invés só do ip, tipo www.google.com ao invés de 64.233.186.188
Acho que deve ter funções prontas pra isso. Faz anos que não mexo com socket e afins.

____________________________________________
https://nerdki.blogspot.com/ acessa aí vai lá, é grátis!
Capeta (demo) do meu trabalho:
https://cpusam.github.io/
"com o bug fix vem a perfeição"


3. Re: Poderiam avaliar este script que fiz

José Lucas
NidoBr

(usa Manjaro Linux)

Enviado em 24/01/2021 - 17:52h

Cara só depois percebi que a comunidade Tcl/Tk não recebia conteúdo desde 2015, também estava pensando em adicionar essas funções que você citou mas o problema é tempo ;-(

Mas ja dei uma mexida no codigo:
#!/usr/bin/tclsh

# Autor: MINEMAM
# 24/01/2021
# Sobre: Mostra as conexões de rede, usando como base o arquivo "/proc/net/tcp"
# BSD-3-Clause License


#------------Funçoes----------------

# Converte hexadecimal(little-edian) para decimal
proc hex_to_dec { hex } {
set cont 0
set hex_lista {}
# Reordena o valor hexadecimal(little-edian) para convertelo
while { $cont != [ string length $hex ] } {
set hex_conv [ string index $hex $cont ]
set par [ regexp {([02468])} $cont par_m ]
if { $par == 1} {
set indice [ expr $cont + 1 ]
set hex_lista [ linsert $hex_lista $indice $hex_conv ]
} else {
set indice [ expr $cont - 1 ]
set hex_lista [ linsert $hex_lista $indice $hex_conv ]
}
incr cont
}
# Inverte a ordem da lista
set cont 7
set indice 0
set dec_lista {}
while { $cont != -1 } {
set var_atu [ lindex $hex_lista $cont ]
set dec_lista [ linsert $dec_lista $indice $var_atu ]
incr cont -1
incr indice
}
# Converte hexadecimal para decimal usando o "expr 0x"
set dec1 [ expr 0x[ lindex $dec_lista 0 ][ lindex $dec_lista 1 ] ]
set dec2 [ expr 0x[ lindex $dec_lista 2 ][ lindex $dec_lista 3 ] ]
set dec3 [ expr 0x[ lindex $dec_lista 4 ][ lindex $dec_lista 5 ] ]
set dec4 [ expr 0x[ lindex $dec_lista 6 ][ lindex $dec_lista 7 ] ]
set resultado "$dec1.$dec2.$dec3.$dec4"
return $resultado
}

#------------Inicio-----------------

if { "$argv" == "-u" && [ file exists /proc/net/udp ] } {
set net_file [ open /proc/net/udp r ]
} elseif { "$argv" == "-t" && [ file exists /proc/net/tcp ] } {
set net_file [ open /proc/net/tcp r ]
} elseif { $argc == 0 } {
puts "$argv0: Mostra as conexões de rede\n\n $argv0 \[opções\]\n Opções:\n -u Lista as conexões UDP\n -t Lista as conexões TCP"
exit
} else {
puts "Arquivo não encontrado"
exit
}

set cont 0
while { ! [ eof $net_file ] } {
if { $cont == 0 } {
set net_linha [ gets $net_file ]
puts "Conexão Local: Conexão Remota:"
} else {
set net_linha [ gets $net_file ]
if { $net_linha == "" } {
break
}
# IP:PORTA DE ORIGEM
set hex_orig [ lindex $net_linha 1 ]
set hex_ip_o [ string range $hex_orig 0 7 ]
set ip_local [ hex_to_dec $hex_ip_o ]
set porta_local [ expr 0x[ string range $hex_orig 9 12 ] ]
# IP:PORTA DE DESTINO
set hex_dest [ lindex $net_linha 2 ]
set hex_ip_d [ string range $hex_dest 0 7 ]
set ip_dest [ hex_to_dec $hex_ip_d ]
set porta_dest [ expr 0x[ string range $hex_dest 9 12 ] ]
if { [ string first ":" "$ip_local:$porta_local" ] < 11 } {
set tab " "
} else {
set tab ""
}
puts "$ip_local:$porta_local $tab $ip_dest:$porta_dest"
}
incr cont
}

close $net_file



4. Re: Poderiam avaliar este script que fiz

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 24/01/2021 - 20:07h

Tem tempo que não vejo um código em tcl !!! Continue na luta.


5. Re: Poderiam avaliar este script que fiz

José Lucas
NidoBr

(usa Manjaro Linux)

Enviado em 24/01/2021 - 20:24h

To gostando da linguagem, conforme o tempo faço mais coisas com ela


6. Re: Poderiam avaliar este script que fiz

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 24/01/2021 - 20:41h

MINEMAM escreveu:

To gostando da linguagem, conforme o tempo faço mais coisas com ela


Com tk vc pode fazer programas gráficos bem rápido. É uma linguagem legal apesar de eu ter mexido muito pouco nela. Boa sorte e disponibilize algum código no github.


7. Re: Poderiam avaliar este script que fiz

Koematachi San
Koematachisan

(usa Debian)

Enviado em 25/01/2021 - 00:18h

Cara eu amei sua ideia, não vejo suporte em lib python de fácil acesso a esse tipo de informação. Por exemplo , nas libs do python você não consegue importar a lib e depois simplesmente chamar uma função e ter um retorno nem perto de mínimo do que você fez aí.

Gostaria muito de implementar isso em python na minha lib open-source e quem sabe depois também usar outras linguagens ?

Tem interesse de participar ? Da uma olhada : https://dudesecurity.darwinproject.online/


Obs: O convite se estende a todos com interesse


8. Re: Poderiam avaliar este script que fiz

José Lucas
NidoBr

(usa Manjaro Linux)

Enviado em 25/01/2021 - 12:33h

Koematachisan escreveu:

Cara eu amei sua ideia, não vejo suporte em lib python de fácil acesso a esse tipo de informação. Por exemplo , nas libs do python você não consegue importar a lib e depois simplesmente chamar uma função e ter um retorno nem perto de mínimo do que você fez aí.

Gostaria muito de implementar isso em python na minha lib open-source e quem sabe depois também usar outras linguagens ?

Tem interesse de participar ? Da uma olhada : https://dudesecurity.darwinproject.online/


Obs: O convite se estende a todos com interesse


Bom dia, obrigado pelo convite, como tinha dito ainda estou aprendendo e não tenho muito tempo, mas se eu puder ajudar em algo ficaria muito feliz, sempre devemos ajudar a comunidade!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts