Mostrar conexões de rede ativas

Publicado por José Lucas (última atualização em 17/03/2021)

[ Hits: 1.904 ]

Homepage: https://github.com/NIDObr

Download monitora_conexao




Olá, comecei a me aventurar na TCL/TK, estou gostando bastante, é uma linguagem poderosa e cheia de recursos. Este script é só um teste, ainda estou aprendendo esta linguagem.

Mostra conexões de rede ativas, local e remota com base no arquivo "/proc/net/tcp".

  



Esconder código-fonte

#!/usr/bin/tclsh

# Autor: MINEMAM
# 06/12/2020
# Sobre: Mostra as conexões de rede, usando como base o arquivo "/proc/net/tcp"


#------------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" 
   if { [ string length $hex ] == 8 } {
      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"
   } else {
      set dec3 [ expr 0x[ lindex $dec_lista 4 ][ lindex $dec_lista 5 ] ]
      set resultado "$dec3"
   }
   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 hex_port_o [ string range $hex_orig 9 12 ]
      set ip_local [ hex_to_dec $hex_ip_o ]
      set porta_local [ hex_to_dec $hex_port_o ]
      # IP:PORTA DE DESTINO
      set hex_dest [ lindex $tcp_linha 2 ]
      set hex_ip_d [ string range $hex_dest 0 7 ]
      set hex_port_d [ string range $hex_dest 9 12 ]
      set ip_dest [ hex_to_dec $hex_ip_d ]
      set porta_dest [ hex_to_dec $hex_port_d ]

      puts "$ip_local:$porta_local      $ip_dest:$porta_dest"
   }
   incr cont
}

close $tcp_file

Scripts recomendados

Servidor web pequeno e simples em TCL

Backup via scp

Firewall Bloqueando Tudo

Backup via scp

Renomeando arquivos de forma padronizada


  

Comentários
[1] Comentário enviado por fabio em 17/03/2021 - 05:51h

TCL/TK foi a linguagem da minha primeira GUI, onde criei um tabuleiro de xadrez multiplayer na faculdade. Saudades dessa época! Perdi o código fonte.

[2] Comentário enviado por fabio em 17/03/2021 - 05:53h

Encontrei somente um screenshot do jogo: https://www.vivaolinux.com.br/screenshot/Enlightenment-Do-fundo-do-bau-fabio/

[3] Comentário enviado por NidoBr em 17/03/2021 - 18:53h


[2] Comentário enviado por fabio em 17/03/2021 - 05:53h

Encontrei somente um screenshot do jogo: https://www.vivaolinux.com.br/screenshot/Enlightenment-Do-fundo-do-bau-fabio/


Legal cara, ainda to começando no TK mais pelo que vi na net da pra fazer muita coisa, quando tiver alguma coisa feita posto aqui. Outra coisa, esse script enviei pro VOL em dezembro ele não ta mostrando as portas corretamente, a versão corrigida e mais atualizada ta no meu github: https://github.com/NIDObr/netclscan , Valeu!

[4] Comentário enviado por maurixnovatrento em 17/03/2021 - 22:01h


Gostei da linguagem. Vale a pena dar uma conferida?

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts