Ce projet contient un ensemble d'outils de console pour se connecter et servir des appareils à l'aide du protocole MikroTik RouterOS MAC-Telnet. Il s'agit d'un protocole réseau propriétaire utilisé par les appareils MikroTik RouterOS pour fournir un accès shell à leurs appareils même si l'appareil n'est pas configuré avec une adresse IP.
Le protocole est basé sur l’envoi et la réception de paquets de diffusion UDP, il n’est donc en aucun cas sécurisé . Il ne doit être utilisé qu'en dernier recours pour configurer un appareil dépourvu d'adresse IP ou dans un environnement réseau sécurisé.
En plus d'un client et d'un serveur, ce projet comprend également un outil ping, qui peut être utilisé pour envoyer une requête ping aux appareils RouterOS en utilisant leur adresse MAC, et un outil MNDP, qui peut être utilisé pour découvrir les appareils RouterOS et MAC-Telnet sur le réseau local. .
Le client et le serveur MAC-Telnet prennent désormais en charge la nouvelle authentification EC-SRP qui est obligatoire après que Mikrotik ait supprimé la prise en charge de l'authentification MD5 dans RouterOS v6.43 et versions ultérieures. La prise en charge de l'utilisation de l'ancienne authentification MD5 est toujours possible via des indicateurs de ligne de commande pour une compatibilité ascendante.
Avec la nouvelle authentification EC-SRP, le serveur MAC-Telnet prend désormais en charge le hachage de mot de passe pour le fichier utilisateur. Cela signifie que le serveur peut stocker des mots de passe hachés dans un fichier, au lieu de mots de passe en texte brut. Pour ajouter/mettre à jour des utilisateurs avec la nouvelle prise en charge des mots de passe hachés, utilisez l'indicateur -a
avec la commande mactelnetd
. Vous pouvez également lister les utilisateurs avec l'indicateur -l
ou supprimer des utilisateurs du fichier utilisateur avec -d
.
Remarque : Ces commandes peuvent être utilisées pendant l'exécution du serveur pour mettre à jour la base de données utilisateur sans redémarrer le serveur.
Conseil
Si vous souhaitez uniquement les outils client mactelnet
, et non le serveur mactelnetd
lors de la compilation à partir des sources, vous pouvez ajouter l'indicateur --without-mactelnetd
à la commande ./configure
avant de compiler.
ghcr.io/haakonnessjoen/mac-telnet
contient la dernière version des quatre programmes :
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 …
Notez que Docker exécute par défaut des conteneurs sur des réseaux internes isolés. --net=host
demande à Docker de fournir un accès direct mactelnet
aux interfaces réseau de la machine hôte.
Voir Utilisation pour en savoir plus.
Pour installer les dépendances :
yum -y install wget automake gettext gettext-devel libbsd-devel gcc make
Téléchargez l'archive tar source, extrayez, compilez et installez :
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
Les dernières versions sont généralement disponibles dans les dernières versions de Debian et Ubuntu. Vous pouvez les installer avec apt install mactelnet-client
ou apt install mactelnet-server
.
Pour installer la dernière branche master
à partir de source , utilisez les instructions suivantes :
apt-get install build-essential autopoint automake autoconf libbsd-dev libssl-dev gettext
Téléchargez l'archive tar source, extrayez, compilez et installez :
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
Dépendances : clang (gcc ou similaire), automake, autoconf
Pour installer des dépendances sur FreeBSD :
pkg install automake autoconf gettext-tools
Téléchargez l'archive tar source, extrayez, compilez et installez :
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
Téléchargez l'archive tar source et extrayez-la :
wget http://github.com/haakonnessjoen/MAC-Telnet/tarball/master -O mactelnet.tar.gz
tar zxvf mactelnet.tar.gz
cd haakonness*/
Installer les dépendances
brew install gettext autoconf automake libtool openssl pkg-config
Configurez l'environnement de construction, compilez et installez :
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.
Exemple utilisant l'identité :
$ mactelnet main-router
Searching for 'main-router'...found
Login: admin
Password:
Connecting to d4:ca:6d:12:47:13...done
Exemple utilisant l'adresse 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] >
Vous pouvez utiliser l'outil bien connu « expect » pour automatiser/scripter les dialogues via 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.
Exemple:
# 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
Ou pour une utilisation dans les scripts bash :
# 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] )