Net send anonyme via les mailslots

Description

Cette source est une adaptation VB de mon programme en Delphi (sur DelphiFr.com).
Elle permet d'envoyer un message de type NetSend à une machine distante (sur le reseau), avec la possibilité de mettre un nom d'emetteur quelqconque... ce qui n'est pas possible avec la commande "Net Send" de chez Microsoft.

Commentaires et notes sont les bienvenues.

Source / Exemple :


'----------------------------------------
' NSA : Envoi de net send anonyme
' --------------------------------
' Par LEVEUGLE Damien
' Elguevel (c) 2006
'
' Pour : VBFrance.com
'
'----------------------------------------

Option Explicit

    '--------------------
    ' Fonctions Windows
    '--------------------
    Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" ( _
        ByVal lpFileName As String, _
        ByVal dwDesiredAccess As Long, _
        ByVal dwShareMode As Long, _
        ByVal lpSecurityAttributes As Long, _
        ByVal dwCreationDisposition As Long, _
        ByVal dwFlagsAndAttributes As Long, _
        ByVal hTemplateFile As Long) As Long

    Private Declare Function WriteFile Lib "kernel32" ( _
        ByVal hFile As Long, _
        ByVal lpBuffer As String, _
        ByVal cToWrite As Long, _
        ByRef cWritten As Long, _
        Optional ByVal lpOverlapped As Long) As Long
        
    Private Declare Function CloseHandle Lib "kernel32" ( _
        ByVal hObject As Long) As Long
        
    '--------------------
    ' Constantes Windows
    '--------------------
    Public Const OPEN_EXISTING = 3
    Public Const FILE_SHARE_READ = &H1
    Public Const INVALID_HANDLE_VALUE = &HFFFFFFFF
    Public Const GENERIC_WRITE = &H40000000
    Public Const FILE_ATTRIBUTE_NORMAL = &H80
        

'****************************************************
'* ENVOI
'****************************************************
Public Function SendMessage(Emetteur, Destinataire, LeMessage As String) As Boolean

    ' Declaration
    Dim HWNDSlot    As Integer
    Dim Buffer      As String
    Dim NombreEcrit As Long

    ' Initialisation
    SendMessage = False
    NombreEcrit = 0     ' Non utilisé

    ' Création du MailSlot
    HWNDSlot = CreateFile("\\" & Destinataire & "\MAILSLOT\MESSNGR", _
                           GENERIC_WRITE, _
                           FILE_SHARE_READ, 0, _
                           OPEN_EXISTING, _
                           FILE_ATTRIBUTE_NORMAL, 0)

    ' Définition de la trame
    Buffer = Emetteur & Chr(0) & Destinataire & Chr(0) & LeMessage & Chr(0)

    ' Envoi
    If (HWNDSlot <> INVALID_HANDLE_VALUE) Then
        Call WriteFile(HWNDSlot, Buffer, Len(Buffer), NombreEcrit, 0)
        SendMessage = True
    Else
        SendMessage = False
    End If
  
    ' Fermeture du Slot
    Call CloseHandle(HWNDSlot)

End Function

Conclusion :


Ce programme est hyper court et simple, et ne necessite que la connaissance des MAILSLOTS.
Il à été rapidement traduit, et donc peut etre impcomplet ou manquant de fonctionalités, mais il fonctionne.

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.