Bonjour à tous
Y a-t-il moyen de lire la Mac address d'une carte réseau avec TP7 ? L'application doit se lancer depuis le Dos. ?
Merci d'avance.:
:
Bonjour à tous
Y a-t-il moyen de lire la Mac address d'une carte réseau avec TP7 ? L'application doit se lancer depuis le Dos. ?
Merci d'avance.:
:
Tu m'excuseras, mais je ne connais pas la "mac address" d'une carte réseau... Et je dois pas être le seul.
Quoiqu'il en soit, ta carte doit sûrement être une carte PCI. Elle a donc peut-être une IRQ associée, ou bien un port attribué. Dans ce cas, il te suffit de connaître les données à lui envoyer pour qu'elle te les renvoie en retour.
A+
Je ne connais pas spécialement la réponse, mais Une adresse Mac d'un ordinateur est une adresse qui ne sert je ne sais pas trop a quoi, mais qui s'obtient entre autre, en faisaint un
dans les commandes MS-DOS ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part nbtstat -A [SON IP]
Mais, c'est tout ce que je sais !!
@++ Mathieu
Chaque jour, l'homme crée des choses plus grandes, meilleures et sûres, et chaque jour, la nature crée des idiots plus performants. Pour l'instant, je pense que la nature gagne.
Merci à Pascail, effectivement avec nbtstat - A et son IP on obtient bien la Mac adresse, mais malheureusement c'est depuis windows qu'on fait ça. mon but c'est que j'aimerai booter depuis la disquette et en lançan applic, il affiche directement la mac adresse sans que windows démmare.
Je ne sais pas s'il y a moyen avec TP 7 d'accéder directement la carte réseau pour lire info dessus.
(Par Ex: 00-b7-d0-48-ad-89) c'est mac adresse d'une carte réseau.
Si qqu a une solution.
Merci d'avance.
Donc, c'est une commande DOS, donc a mon avis, avec ta Disquette Boot, tu devrais pouvoir obtenir ta mac adresse en tappant la fameuse commande Nbtstat, qui ne sert pas qu'a ça ! sous dos !
Faudrais essayer, je ne suis pas un Expert en programmation Réseau !
désolé, mais je pense que c'est faisable.
@++ Mathieu
Chaque jour, l'homme crée des choses plus grandes, meilleures et sûres, et chaque jour, la nature crée des idiots plus performants. Pour l'instant, je pense que la nature gagne.
Ca ne me dit toujours pas ce qu'est la "mac adresse"...
Toujours est-il que tu peut accéder à ta carte réseau en faisant appel à l'int 5Ch. Il faudra founir en entrée un buffer de 64 octets pointé par ES:BX, et préalablement rempli en fonction de ce que l'on veut demander à la carte...
Bonne chance !![]()
A+
Bonjour
Pour ce que j'en sais, l'adresse MAC d'un périphérique réseau (adaptateur, imprimante, concentrateur...) est une adresse unique, attribuée en usine (& non modifiable) qui permet d'identifier à coup sûr le périphérique. Autrement dit, il est inconcevable que deux périphériques réseau aient la même adresse MAC.
Un pilote pour ce périphérique cherchera donc cette adresse & le système d'exploitation lui attribuera ensuite une adresse réseau sur 32 bits (du style 123.456.789.001).
Les systèmes Microsoft cachent ce genre d'information, puisque l'installation est sensée être automatique. Mais une commande (IPCONFIG, par exemple) permet de l'afficher.
Avec d'autres systèmes (Linux, en particulier), on voit très bien cette adresse dans les fichiers de configuration. On peut alors attribuer une adresse réseau à chaque adresse MAC (en modifiant, si besoin, ces fichiers).
Cordialement
« Un peuple qui est prêt à sacrifier un peu de liberté contre un peu de sécurité, ne mérite ni l'une, ni l'autre, et finira par perdre les deux. »
Attribué indistinctement à :
Thomas Jefferson
Benjamin Franklin
Albert Einstein !
Ah, ben tout de suite, ça m'éclaire !
Bon, alors en farfouilant dans la doc que je peux avoir, et en regardant un peu sur le Net les différents trucs qu'on a pu me dire sur le sujet (c'est à dire pas grand chose sachant que je n'ai pas trop cherché), ça m'a donné ça :
Bon, je t'ai fait ça à l'arrache, mais au moins... ça a l'air de fonctionner ! Tout du moins avec mon pauvre modem et l'adaptateur PPP.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111 uses Dos; { On utilise l'unité Dos pour l'appel aux interruptions } const nccGetStatus = $33; { Commande pour l'état du réseau } { Le bloc de contrôle pour les appels NetBIOS } type TNetBIOSControlBlock = record ncbCommand: Byte; { La commande à appeler } ncbReturnCode: Byte; { Le code de retour } ncbLocalSessionNum: Byte; { Numéro de session } ncbDatagramEntry: Byte; { Numéro du nom } ncbIOPtr: Pointer; { Pointeur vers le buffer } ncbLen: Word; { Longueur du buffer } ncbRemoteSystem: array[0..15] of Char; { Nom du réseau } ncbNetworkName: array[0..15] of Char; { Notre propre nom } ncbReceiveTimeout: Byte; ncbSendTimeout: Byte; ncbPostHandler: Pointer; { Callbakc pour appels asynchrones } ncbAdapter: Byte; { Numéro du réseau } ncbCompletionCode: Byte; { Code de retour en asynchrone } ncbReserved: array[0..13] of Byte; { Réservé } end; { La structure pour les noms de réseaux } type TNetBIOSNameStruct = record nmName: array[0..15] of Char; { Nom du réseau } nmNum: Byte; { Index du réseau } nmStatus: Byte; { Etat du réseau } end; { La structure d'état du réseau } type TNetBIOSStatus = record asId: array[0..5] of Byte; { L'adresse MAC : celle qu'on veut !!! } asJumpers: Byte; asPost: Byte; asMajor: Byte; asMinor: Byte; asInterval: Word; asCrcErr: Word; asAlgErr: Word; asColErr: Word; asAbtErr: Word; asTCount: Longint; asRCount: Longint; asRetran: Word; asXResRc: Word; asRes0: array[0..7] of Byte; asNcbFree: Word; asNcbMax: Word; asNcbX: Word; asRes1: array[0..3] of Byte; asSeSpend: Word; asMsp: Word; asSeSMax: Word; asBufSize: Word; asNames: Word; asNameStructs: array[0..15] of TNetBIOSNameStruct; end; { Donne un octet sous forme hexadécimale } function Hex(B: Byte): string; const HexChars: array[0..15] of Char = '0123456789ABCDEF'; begin Hex := HexChars[B shr 4] + HexChars[B and 15]; end; var Control: TNetBIOSControlBlock; { Le bloc de contrôle NetBIOS } Status: TNetBIOSStatus; { L'état du réseau } Regs: Registers; { Les registres pour l'interruption } begin Regs.ah := 0; Intr($2A, Regs); { On vérifie que le réseau est accessible } if Regs.ah <> 0 then { Si oui, alors... } begin FillChar(Control, SizeOf(TNetBIOSControlBlock), 0); { On nettoie... } with Control do begin ncbCommand := nccGetStatus; { On récupère l'état du réseau } ncbIOPtr := @Status; { On pointe vers notre buffer à remplir } ncbLen := SizeOf(TNetBIOSStatus); { Et on indique sa taille } { On remplit le nom du réseau à appeler avec des espaces } FillChar(ncbRemoteSystem, SizeOf(ncbRemoteSystem), 32); ncbRemoteSystem[0] := '*'; { Mais on place une étoile (important !) } end; Regs.es := Seg(Control); { On donne l'adresse de notre bloc } Regs.bx := Ofs(Control); Intr($5C, Regs); { Et on appelle l'interruption NetBIOS } if Control.ncbReturnCode <> 0 then { Erreur ? } WriteLn('Erreur lors de l''appel NetBIOS : ', Control.ncbReturnCode) else { Sinon, on affiche l'adresse MAC } with Status do WriteLn('Adresse MAC : ', Hex(asId[0]), '-', Hex(asId[1]), '-', Hex(asId[2]), '-', Hex(asId[3]), '-', Hex(asId[4]), '-', Hex(asId[5])); end { Pas de réseau disponible... C'est gênant } else WriteLn('Réseau et support NetBIOS non présents'); ReadLn; end.
Y'a pas de copyright, sachant que ça a été fait par bibi. Un merci me suffira !![]()
A+
En tout cas, merci à tous et un grand merci à Hdd 34 qui a fourni le code. ce code fonctionne à merveille sous dos de Windows, mais pas sous la disquette dos de boot. Ce que je cherche, c'est de lire la mac adresse de la carte Réseau en bootant seulement avec la disquette dos 6.22 ou sous disquette de boot win9x. sans besoin que windows démmare. Je ne sais pas si c'est réalisable ou pas.
Si vous avez une solution.:
:
Mille merci.
Ah teins ? Il ne fonctionne pas sous Dos pur... C'est étonnant ça. Pourtant, je n'utilise aucune ressource Windows.
Nénamoins, il me semble nécessaire de charger en mémoire les pilotes de ta carte réseau si tu veux y accéder. Car ce code s'appuie sur l'int 5Ch, qui doit être mise en place par un driver quelconque. Lorsque Windows est chargé, c'est lui qui charge tout seul le driver. Mais sous Dos, il faut le faire...
A+
En fait, le prg ne détecte pas de
'Réseau et support NetBIOS non présents' quand je lance le boot depuis la disquette et pourtant le pilote pour la carte réseau est bien chargé.
sur le même PC, si win9x démarre et je démmarre le prg cela fonctionne bien. En tout cas mille merci et si vous avez trouvé de solution de problème je suis preneur, de mon côté je vais essayer de voir un peu avec le mode pas à pas pour comprendre le phénomène.
A+
Avec intr($2A,Regs)au départ, il essai de vérifier quoi,
Regs.ah := 0;
Intr($2A, Regs);
Car avec le driver de la carte chargé ou pas, la valeur de Regs.ah est toujours égale à zéro.
Mis à part avec le protocol NetBios, il n'y a pas moyen de faire pour lire directement le registre de la carte Réseau, car je suppose que ce Mac adresse doit être inscrit dans les registres de la carte.
A+
L'int 2Ah fonction 0 vérifie la présence d'une compatibilité NetBIOS, donc du support de l'int 5Ch.
Tu peux toujours essayer sans, ça marchera peut-être.
Sinon, en effet, l'adresse Mac doit être inscrite directement sur la carte. Seulement le problème est la manière d'y accéder va changer d'une carte réseau à une autre. En passant par le driver, on est sûr d'être compatible avec toutes les cartes réseaux.
A+
j'ai enlevé l'instruction de vérification de compatibilité de Netbios et ça fonctionne comme je souhaite.
En tout cas Mille merci
Ben de rien ! C'était fait pour ça !
Et pour la vérification NetBIOS, c'est que ça doit pas être ça !![]()
A+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager