Balayage réseau et adresses MAC

cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 - 9 déc. 2006 à 11:59
meghassel Messages postés 2 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 18 mai 2011 - 18 mai 2011 à 03:36
slt tlm;


je vouderai récupérer les adresses MAC de tous les PCs connectés à mon réseau local...
je suis vraiment bloqué!
aidez moi svp!

9 réponses

WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
9 déc. 2006 à 12:14
Dans l'invite de commandes : ARP -a
Cette commande te donnera toutes les adresses IP et MAC des PC de ton réseau.

Cordialement.

<hr />Il existe 10 catégories de personne. Ceux qui connaissent le binaire et les autres...
0
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
9 déc. 2006 à 15:10
merci beaucoup pour la fonction arp -a
reste maintenant comment lancer cette même commande à traver un programme delphi, et le plus important, comment récupérer le résultat dans une liste ou un tableau de string ou qq chose comme ça!!
merci infiniment pour votre aide!!
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
9 déc. 2006 à 16:24
Salut à tous les deux,

Doit-on comprendre que le code source indiqué par WhiteHippo ne donne pas satisfaction ?
Sur Torry.net, on trouve d'autres ressources concernant Delphi et les réseaux .

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
10 déc. 2006 à 09:08
slt tlm;
merci infiniment pour vos réponses!

le problème, c'est que je ne me suis pas ...vraiment retrouvé avec tous ces codes!
j'ai essayé de travailler avec : RunDosInMemo
mais lors de la compilation , il m'affiche :  identificateur non déclaré!!!
dois je rajouter quelque chose dans le uses????

pour l'ARP, j'ai pas su travailler avec!
excuser moi, je suis un débutant!
merci infiniment pour votre aide!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
10 déc. 2006 à 09:37
slt tlm;
au fait, avec la procedure RunDosInMemo
ça m'affiche : déclaration forward ou external non satisfaite!!
je sais pas comment faire!!
merci encore une fois
0
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
10 déc. 2006 à 10:51
slt encore une fois:
aprés combinaison, voila ce que j'ai :
//////////////////////////début source
unit Unit1;


interface


uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ElgAPI, StdCtrls;


type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;


var
  Form1: TForm1;


implementation


{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);


var
  hEnum : DWORD;
  dwResult : DWORD;
  cEntries : DWORD;
  cbBuffer : DWORD;
  Machine,Machine2,Resu : string;
  I,maclen : Integer;
  lpnr : PNetResource;
  ip     : DWORD;
  mac    : TAdresseMac;
begin


  cEntries := $FFFFFFFF;
  cbBuffer := 16384;


  lpnr := PNETRESOURCE( GlobalAlloc(GPTR, cbBuffer) );


  if ( WNetOpenEnum( RESOURCE_CONTEXT, RESOURCETYPE_ANY, 0, lpnr, hEnum ) <> NO_ERROR ) then Exit;
 
  dwResult := WNetEnumResource( hEnum, cEntries, lpnr, cbBuffer );
  if (dwResult <> NO_ERROR) then Exit;
  Inc( lpnr );
 
  for I := 0 to ( cEntries - 1 ) do
  begin
    Machine := lpnr^.lpRemoteName;
    //Machine2 := lpnr^.lpLocalName;
    ShowMessage(Machine);
    //ShowMessage(Machine2);
    ////////////
    ip      := inet_addr( PChar(AdresseIP) );
    maclen  := SizeOf(TAdresseMac);
    SendArp ( ip, 0, @MAC, @maclen );
    Resu  := Format( '%.2x-%.2x-%.2x-%.2x-%.2x-%.2x', [ mac[1], mac[2], mac[3], mac[4], mac[5], mac[6] ] );
    ShowMessage(Resu);
    /////////////
    Inc( lpnr );
  end;


  WNetCloseEnum( hEnum );


end;
end.
////////////////////////////fin source

le problème c'esr que ça ne marche pas, pour la simple raison que : je ne trouve pas ou je peux avoir l'adresse ip de la machine distante lors du balayage.... en d'autre terme, je ne sais pas ou et comment remplir ma variable : AdresseIP
0
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
10 déc. 2006 à 18:35
Ah oui pour convertir les noms en adresse IP je me suis crée une fonction avec une socket, mais y'a surement mieux  :

function HostToIP(const HostName: string): string;

type
 TaPInAddr = array[0..10] of PInAddr;
 PaPInAddr = ^TaPInAddr;
var
 phe : PHostEnt;
 pptr: PaPInAddr;
 i : Integer;
 GInitData: TWSAData;
begin
 WSAStartup( $101, GInitData );
 Result := '';
 phe := GetHostByName( PChar(HostName) );
 if ( phe <> nil ) then
 begin
  pPtr := PaPInAddr( phe^.h_addr_list );
  i := 0;
  while ( pPtr^[i] <> nil ) do
  begin
   Result := inet_ntoa( pptr^[i]^ );
   Inc(i);
  end;
 end;
 WSACleanup;
end;

Comme çà AdresseIP := HostToIP( lpnr^.lpRemoteName );

Bon Code !
0
cs_othland Messages postés 298 Date d'inscription jeudi 18 décembre 2003 Statut Membre Dernière intervention 9 février 2010 1
12 déc. 2006 à 11:10
slt tlm;
justement, il faut que je puisse avois l'adresse IP sans utiliser les socket car , dans mon réseau : j'ai des PC et d'autres terminaux avec lequels je peux pas établir de socket!!!
je chercher toujours des solution!!
0
meghassel Messages postés 2 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 18 mai 2011
18 mai 2011 à 03:36
Bonjour,

J'ai besoin d'un source de programme en c++, vb ou autres pour réinitialiser l'adresse mac car comme vous le savez on peut changer ce numéro très facilement et dans ce cas là le soft peut être pirater.
Il existe l'open source MASHIFT mais il faut que la carte réseau soit nommée Wireless ce qui n'est pas évident, j'ai essayé de changer le source avec Dev c++ et Eclipse mais basta.

Mon Email : meghassel_fethi@yahoo.fr

Merci de m'aider.
0
Rejoignez-nous