Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - vjnario

#1
Tres formas de saber si tu hardware es de 32 o 64 bits:

cat /proc/cpuinfo | grep " lm " > /dev/null && echo 64 bits || echo 32 bits

grep -q '\<lm\>' /proc/cpuinfo && echo 64 bits || echo 32 bits

y la que mas me gusta, un pequeño script en bash:

if [[ lm = $(cat /proc/cpuinfo | grep " lm ") ]]; then echo "32 bits"; else echo "64 bits"; fi
#2
Mediante el /proc podemos obtener la misma información que obtenemos con muchos binarios, únicamente que tenemos la información más esparcida y sin tratar.
Vamos a ver cómo obtener la información de conexiones y puertos en escucha mediante el /proc.

Vamos a usar de ejemplo el puerto de escucha de ssh.

Código: bash
netstat -ntpl | grep ssh

tcp        0      0 0.0.0.0:22              0.0.0.0:*               ESCUCHAR    551/sshd

Una vez conocido el PID, mediante el listado de descriptores de fichero podemos ver que esta escuchando mediante un socket:

Código: bash
ls -l /proc/551/fd

lrwx------ 1 root root 64 dic 10 10:15 4 -> socket:[7168]

En este caso, sabemos que es TCP, por lo que buscamos el identificador de socket en el /proc/net/tcp:

Código: bash
cat /proc/net/tcp | grep 7168

3: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 7168 1 efd14000 100 0 0 10 -1

Podemos ver el identificador que hemos buscado hacia el final, los dos primeros campos nos muestran origen y destino de la conexión. Podemos traducir el puerto de hexadecimal a decimal con:

Código: bash
echo $((0x0016))

22

Podemos encontrar que significa cada dato de esta linea en la documentación del kernel, en el fichero Documentation/networking/proc_net_tcp.txt.
Para poder obtener el estado de la conexión (campo después de la dirección destino) deberemos buscar en el fichero include/net/tcp_states.h, dónde encontramos:


TCPF_ESTABLISHED = (1 = 1)
TCPF_SYN_SENT    = (1 = 2)
TCPF_SYN_RECV    = (1  = 3)
TCPF_FIN_WAIT1    = (1 = 4)
TCPF_FIN_WAIT2    = (1 = 5)
TCPF_TIME_WAIT    = (1  = 6)
TCPF_CLOSE    = (1  = 7)
TCPF_CLOSE_WAIT    = (1 = 8)
TCPF_LAST_ACK    = (1  = 9)
TCPF_LISTEN    = (1  = 10)
TCPF_CLOSING    = (1  = 11)

Por lo que si hacemos:

Código: bash
echo $((0x0A)) 

10

Si miramos la tabla, el puerto esta en Listen.

Por lo que podemos resumir en que:
Si la conexión esta en estado ESTABLISHED, obtendremos un 01 como estado.
Si la conexión esta en estado TIME_WAIT, obtendremos un 06 como estado.
Si la conexión esta en estado LISTEN, como en el caso del ejemplo, el estado que marca indica 0A
Por lo tanto, mediante el /proc y mucha paciéncia, podemos obtener los mismos datos que obtenemos mediante netstat o ss.

Espero que os guste el aporte !!!!

#3
Presentaciones y cumpleaños / Hola Underc0de !!!
Enero 31, 2013, 06:12:24 AM
Hola a todos !!! LLevo tiempo en este foro pero nunca he posteado. Me llamo vjnario, soy de Barcelona y trabajo como administrador de sistemas linux.
y tambien tengo la certificacion de cisco CCNA. Estoy aqui para aprender y compartir  conocimientos...

Un saludo a todos los Underc0des !!!!!
:o :o :o :o :o :o :o :o :o :o :o :o :o :o