Gestion du cache arp de windows ( iphlpapi.dll )

Description

Ce programme permet d'ajouter ou supprimer des lignes du cache ARP de Windows, comme on pourrais le faire avec la commande ms-dso (voir c:\>arp /? ).

Pour ceux qui ne savent pas ce qu'est ARP, c'est la protocole qui permet au machines de résoudre l'adresse MAC d'un hote grace à leur adresse IP.
(Utiliser aussi par les Switch, etc...).

La correspondance Adresse IP <-> Adresse MAC est stocké en mémoire par le système d'exploitation pour evité d'avoir à faire une requete ARP dès qu'il veut joindre une machine.

Pour plus d'information sur l'ARP : mon ami GOoGle !!!

Source / Exemple :


// Les API utilisées :
// -------------------

{ Inet_addr : Permet de resoudre une adresse IP lisible (192.168.0.1) en format système }

function Inet_addr( const cp: PChar ): DWORD; stdcall; external 'WS2_32.DLL' name 'inet_addr';

{GetIpNetTable : Recupère l'identifiant de la table ARP, pour pouvoir travailler avec ensuite }
function GetIpNetTable(pIpNetTable : TIpAddrTable; pdwSize: PULONG; bOrder: Boolean ): DWORD; stdcall; external 'IPHLPAPI.DLL';

{CreateIpNetEntry : Permet d'ajouter une ligne dans la table ARP }
function CreateIpNetEntry ( pArpEntry : PMIB_IPNETROW ) : DWORD; stdcall; external 'IPHLPAPI.DLL';

{ DeleteIpNetEntry : Permet de supprimer une ligne dans la table ARP }
function DeleteIpNetEntry ( pArpEntry : PMIB_IPNETROW ) : DWORD; stdcall; external 'IPHLPAPI.DLL';
{ SendARP : Envoi une requete ARP vers l'adresse IP donnée, et renvoi l'adresse MAC }
function SendARP( const DestIP: DWORD; const SrcIP: DWORD; const pMacAddr: PULONG; const PhyAddrLen: PULONG ): DWord; stdcall; external 'IPHLPAPI.DLL';

{FlushIpNetTable : Vide tout le cache ARP }
function FlushIpNetTable( dwIfIndex : DWORD ) : DWORD; stdcall; external 'IPHLPAPI.DLL';

Conclusion :


Voila dite moi si il y à des améliorations, voir des choses qu'on peut implémenter en plus afin de rendre cette outil beaucoup plus utile.

PS : Ces API sont très mal documentées et utilisées, j'ai dû me faire chier avec la MSDN pour y arriver.

Sinon notes et commentaires sont les bienvenues.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.