je dois trouver un moyen d’obtenir l’adresse MAC d’une machine en C (j’aime bien les répétitions) sous DOS…attention, pas n’importe quel DOS, le vrai DOS booté depuis une disquette et mis sur un ram disk, avec tout ce qu’il faut de couche tcp/ip d’initialisée. Et c’est tout. Donc jeu de commande limité au possible.
Le “arp -a” et “ipconfig /all” me renvoient tous les deux un bon gros “Commande ou nom de fichier incorrect”, et on m’a dit d’essayer de trouver en C comment faire. Actuellement, la détection est faite par un outil qui foire un peu (d’où la demande de reprogrammation du schmilblick), un outil proprio donc pas moyen de voir comment ils font.
J’ai bien trouvé les trucs genre getenv, mais je suis sous DOS dont ça risque pas de marcher des masses.
Someone to help me? Merci d’avance! Je galère un peu, je cherche depuis avant-hier…
Je doute qu’une telle API existe en C sous DOS (genre TC2.0, haha
reve), ta seule solution a mon humble avis reste le decorticage du
driver TCP/IP sous DOS et des appels directs a celui ci.
J’ai vu aussi des outils pour se connecter sous DOS a un partage
Windows NT, mais je doute que le code soit disponible.
Cherche sur le
net a “http client DOS” ou un truc du genre, je sais qu’il a existe un
browser HTTP en pur DOS, si les sources sont dispos, ca pourrait peut
etre t’aider.
On cherchait quelque chose de simple, ce n’est qu’une petite partie d’un truc…j’ai lu ton message à mon reponsable de stage, et il a convenu que ce seraient beaucoup d’efforts pour pas grand chose. A la limite, je pourrais y revenir vers la fin si aucune autre solution n’était trouvée (on cherche justement à virer le DOS des préinstallations pour les install à distance pour un système 32 bits comme Windows PE).
Il existe ce type d’application. Elle est donné avec un driver dlink ou 3com, je sais plus. Cette application - qui marche sous dos - te donne toute les info’ qui concerne ta carte réseau. Seulement je sais pas si elle peux le faire sur toutes
Justement, on a déjà un outil qui permet de faire ce genre de choses (entre autres) mais il marche pas terrible : on voulait revenir à quelque chose de simple et d’efficace, et on a osé espérer un moment que ce ne serait l’affaire que d’un appel de fonction. Manifestement pas…
Et les systèmes Linux préconfigurés pour faire office de routeur/firewall sur un PC-i_vieux86, ça existe.
Ca tient sur une disquette bootable, ça cause dur de réseau là dedans.
Tu peux toujours faire un essai avec, des fois que…
Si c’était aussi simple que d’utiliser Linux ou bidouiller les cartes réseau…
Les contraintes pesant sur mon projet sont très lourdes. En gros, on ne touche pas au matos et on évite tout ce qui sort de Windows. Ce que je fais doit marcher partout, tout le temps, sur tous les postes…la marge de manoeuvre est très limitée : si j’ai tenté un truc en C, c’est parce qu’il ne restait plus que ça.
Sinon, bonne idée, d’aller voir les mini-distrib Linux pour voir comment ils se débrouillent. Ca pourra sûrement m’inspirer un peu. J’ai un peu regardé ce qui existait comme mini-distrib éventuellement pour lancer des install à distance de windows, mais les solutions ne sont pas satisfaisantes. J’ai jamais pensé à regarder le code lui-même…quelle tanche.
[quote]Sinon, bonne idée, d’aller
voir les mini-distrib Linux pour voir comment ils se débrouillent. Ca
pourra sûrement m’inspirer un peu. J’ai un peu regardé ce qui existait
comme mini-distrib éventuellement pour lancer des install à distance de
windows, mais les solutions ne sont pas satisfaisantes. J’ai jamais
pensé à regarder le code lui-même…quelle tanche.[/quote]
Sous linux l’adresse MAC est récuperée par le driver, et y a pas de
facon standart de le faire, c’est different pour chaque carte, pour la rtl8139 (voir
drivers/net/8139too.c) par exemple c’est comme ca (le but est de stocker l’adresse mac dans dev->dev_addr) :
Avec une fonction read_eeprom de 40 lignes plus bas dans le fichier,
sans doute chargée de récuperer des données dans la rom de la carte
reseau.
Et si tu regardes dans les autres drivers c’est fait encore differement.
Bref, ca vaut pas le coup d’essaier de voulloir récuperer ca à la main
pour chaque type de carte, essaies plutot de voir si c’est pas déja
fait par les drivers que t’utilises sous DOS, mais regarder les sources de Linux t’aidera pas beaucoup pour ca. Ce message a été édité par BokLM le 05/03/2004
Bon, eh bien merci beaucoup pour toute l’aide, je m’attendais pas à autant de liens et de solutions
En tout cas, mon reponsable de stage a eu droit à la lecture de tout ça, et au vu des complications que ça pourrait apporter (z’avez pas idée du bazar, les besoins exprimés pour le projet contenant ce petit truc d’adresse MAC sont exprimés de manière très restrictive), il a déclaré cette partie “morte et enterrée”. En tout cas, ça m’aura permis d’apprendre quelques trucs sympas.