Este proyecto contiene un conjunto de herramientas de consola para conectarse y servir dispositivos utilizando el protocolo MAC-Telnet MikroTik RouterOS. Este es un protocolo de red propietario utilizado por los dispositivos MikroTik RouterOS para proporcionar acceso de shell a sus dispositivos incluso si el dispositivo no está configurado con una dirección IP.
El protocolo se basa en el envío y recepción de paquetes de difusión udp, por lo que no es seguro de ninguna manera. Sólo debe usarse como último recurso para configurar un dispositivo que carece de una dirección IP o en un entorno de red seguro.
Además de un cliente y un servidor, este proyecto también incluye una herramienta de ping, que se puede usar para hacer ping a los dispositivos RouterOS usando su dirección MAC, y una herramienta MNDP, que se puede usar para descubrir dispositivos RouterOS y MAC-Telnet en la red local. .
El cliente y servidor MAC-Telnet ahora admite la nueva autenticación EC-SRP que es obligatoria después de que Mikrotik eliminó la compatibilidad con la autenticación MD5 en RouterOS v6.43 y posteriores. Aún es posible admitir el uso de la antigua autenticación MD5 a través de indicadores de línea de comando para lograr compatibilidad con versiones anteriores.
Con la nueva autenticación EC-SRP, el servidor MAC-Telnet ahora admite el hash de contraseña para el archivo de usuario. Esto significa que el servidor puede almacenar contraseñas hash en un archivo, en lugar de contraseñas de texto sin formato. Para agregar/actualizar usuarios con la nueva compatibilidad con contraseñas hash, use el indicador -a
con el comando mactelnetd
. También puede enumerar usuarios con el indicador -l
o eliminar usuarios del archivo de usuario con -d
.
Nota: Estos comandos se pueden utilizar mientras el servidor se está ejecutando para actualizar la base de datos del usuario sin reiniciar el servidor.
Consejo
Si solo desea las herramientas del cliente mactelnet
, y no el servidor mactelnetd
al compilar desde el código fuente, puede agregar el indicador --without-mactelnetd
al comando ./configure
antes de compilar.
ghcr.io/haakonnessjoen/mac-telnet
contiene la última versión de los cuatro programas:
docker run -it --rm --net=host haakonn/mactelnet mactelnet …
docker run -it --rm --net=host haakonn/mactelnet macping …
docker run -it --rm --net=host haakonn/mactelnet mndp …
docker run -it --rm --net=host haakonn/mactelnet mactelnetd …
Tenga en cuenta que Docker ejecuta contenedores en redes internas aisladas de forma predeterminada. --net=host
indica a Docker que proporcione acceso directo mactelnet
a las interfaces de red de la máquina host.
Consulte Uso para obtener más información.
Para instalar dependencias:
yum -y install wget automake gettext gettext-devel libbsd-devel gcc make
Descargue el archivo tarball fuente, extraiga, compile e instale:
wget http://github.com/haakonnessjoen/MAC-Telnet/tarball/master -O mactelnet.tar.gz
tar zxvf mactelnet.tar.gz
cd haakonness*/
./autogen.sh
make all install
Las últimas versiones suelen estar disponibles en las últimas versiones de Debian y Ubuntu. Puede instalarlos con apt install mactelnet-client
o apt install mactelnet-server
.
Para instalar la última rama master
desde el código fuente , utilice las siguientes instrucciones:
apt-get install build-essential autopoint automake autoconf libbsd-dev libssl-dev gettext
Descargue el archivo tarball fuente, extraiga, compile e instale:
wget http://github.com/haakonnessjoen/MAC-Telnet/tarball/master -O mactelnet.tar.gz
tar zxvf mactelnet.tar.gz
cd haakonness*/
./autogen.sh
make all install
Dependencias: clang (gcc o similar), automake, autoconf
Para instalar dependencias en FreeBSD:
pkg install automake autoconf gettext-tools
Descargue el archivo tarball fuente, extraiga, compile e instale:
wget http://github.com/haakonnessjoen/MAC-Telnet/tarball/master -O mactelnet.tar.gz
tar zxvf mactelnet.tar.gz
cd haakonness*/
./autogen.sh
./configure LDFLAGS=" -L/usr/local/lib"
gmake all install
Descargue el tarball fuente y extraiga:
wget http://github.com/haakonnessjoen/MAC-Telnet/tarball/master -O mactelnet.tar.gz
tar zxvf mactelnet.tar.gz
cd haakonness*/
Instalar dependencias
brew install gettext autoconf automake libtool openssl pkg-config
Configure el entorno de compilación, compile e instale:
export GETTEXT_PATH=$(brew --prefix gettext)
export OPENSSL_PATH=$(brew --prefix openssl)
export PATH="${GETTEXT_PATH}/bin:${OPENSSL_PATH}/bin:$PATH"
export LDFLAGS="-L${GETTEXT_PATH}/lib"
export CPPFLAGS="-I${GETTEXT_PATH}/include -I${OPENSSL_PATH}/include"
export CRYPTO_CFLAGS="-I${OPENSSL_PATH}/include"
export CRYPTO_LIBS="-L${OPENSSL_PATH}/lib ${OPENSSL_PATH}/lib/libcrypto.3.dylib"
./autogen.sh
make all install
# mactelnet -h
Usage: mactelnet [-h] [-n] [-a ] [-A] [-t ] [-u ] [-p ] [-U ] | -l [-B] [-t ]
Parameters:
MAC MAC-Address of the RouterOS/mactelnetd device. Use mndp to
discover it.
identity The identity/name of your destination device. Uses
MNDP protocol to find it.
-l List/Search for routers nearby (MNDP). You may use -t to set timeout.
-B Batch mode. Use computer readable output (CSV), for use with -l.
-n Do not use broadcast packets. Less insecure but requires
root privileges.
-a Use specified path instead of the default: ~/.mactelnet for autologin config file.
-A Disable autologin feature.
-t Amount of seconds to wait for a response on each interface.
-u Specify username on command line.
-p Specify password on command line.
-U Drop privileges to this user. Used in conjunction with -n
for security.
-q Quiet mode.
-o Force old MD5 authentication method.
-h This help.
Ejemplo de uso de identidad:
$ mactelnet main-router
Searching for 'main-router'...found
Login: admin
Password:
Connecting to d4:ca:6d:12:47:13...done
Ejemplo usando la dirección mac:
$ mactelnet 0:c:42:43:58:a5
Login: admin
Password:
Connecting to 0:c:42:43:58:a5...done
MMM MMM KKK TTTTTTTTTTT KKK
MMMM MMMM KKK TTTTTTTTTTT KKK
MMM MMMM MMM III KKK KKK RRRRRR OOOOOO TTT III KKK KKK
MMM MM MMM III KKKKK RRR RRR OOO OOO TTT III KKKKK
MMM MMM III KKK KKK RRRRRR OOO OOO TTT III KKK KKK
MMM MMM III KKK KKK RRR RRR OOOOOO TTT III KKK KKK
MikroTik RouterOS 6.49 (c) 1999-2021 http://www.mikrotik.com/
[admin@Mikrotik] >
¡Puede utilizar la conocida herramienta "esperar" para automatizar/guionar diálogos a través de mactelnet!
# mactelnet -l
# macping -h
Usage: macping [-h] [-c ] [-s ]
Parameters:
MAC MAC-Address of the RouterOS/mactelnetd device.
-s Specify size of ping packet.
-c Number of packets to send. (0 = for ever)
-h This help.
Ejemplo:
# macping 0:c:42:43:58:a5
0:c:42:43:58:a5 56 byte, ping time 1.17 ms
0:c:42:43:58:a5 56 byte, ping time 1.07 ms
0:c:42:43:58:a5 56 byte, ping time 1.20 ms
0:c:42:43:58:a5 56 byte, ping time 0.65 ms
0:c:42:43:58:a5 56 byte, ping time 1.19 ms
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.65/1.06/1.20 ms
O para usar en bash-scripting:
# macping 0:c:42:43:58:a5 -c 2 >/dev/null 2>&1 || ( echo "No answer for 2 pings" | mail -s "router down" [email protected] )