VisualBasic-Tutorial #4: Netsend

In diesem Tutorial geht es um das versenden von Nachrichten im Netzwerk per "Net send". Es wird auch beschrieben, wie man den Absender der Nachricht fälscht, etc.

Beispiel für die Anwendung des Befehls:
Start->Ausführen: "Net Send LocalHost Hallo" -> sollte ein "hallo" an den eigenen Rechner senden. (anstatt Localhost die eigene IP verwenden ...)
Start->Ausführen: "Net Send Broadcast Hallo" -> sollte ein Hallo ans gesamte Netzwerk senden.

In VisualBasic gibt es nun verschiedene Möglichkeiten solche Nachrichten zu versenden. die erste: man öffnet "net.exe" per Shell und übergibt die nötigen Parameter.
Dies ist nicht unbedingt der beste Weg, da man auf die net.exe angewiesen ist und diese unter umständen gesperrt ist (in manchen Schulnetzwerken kann dies der fall sein)

Die andere Möglichkeit ist eine API bzw. eine DLL zu verwenden und genau diese will ich in diesem Tutorial anschauen.

Das brauchen wir dazu:
Code:
   1:Declare Function NetMessageBufferSend Lib "Netapi32" (ByVal sServerName$, ByVal sMsgName$, ByVal sFr
    :omName$, ByVal sMessageText$, ByVal lBufferLength&) As Long

Zudem noch:

Code:
   1:StrConv(String, Conversion As VbStrConv)

Um Strings in andere Variabel-Typen zu verwandeln (wie zum Beispiel Unicode).

Was man zur API wissen sollte, ist dass alle Strings als Unicode übergeben werden müssen.
Nun schauen wir uns mal an was wir der API-Funktion alles übergeben müssen.
1. Argument: sServerName$ : Der Server über welche die Nachricht gesendet werden soll. Hier geben wir einen Nullstring an, dann wird die Nachricht über den eigenen Rechner verschickt.

2. Argument: sMsgName$ : Der Empfänger (PC-Name oder IP) als Unicode-String.

3. Argument: sFromName$ : Der Sender (Im Normalfall der Name oder die IP eines Rechners) als Unicode-String. Das schöne daran: Es kann irgendetwas angegeben werden, zum Beispiel auch "Administrator" oder der Name eines fremden PCs.

4. Argument: sMessageText$ : Die Nachricht die verschickt werden soll (auch als Unicode-String)

5. Argument: lBufferLength& : Die Buffer-Länge. (In diesem Fall die Länge der zu sendenden Nachricht.)
Kann ermittelt werden mit:

Code:
7:len(StrConv(NACHRICHT,vbUnicode))


Wobei NACHTRICHT durch den zu versendenden Text ersetzt wird.
Hier nun ein kleines Beispiel-Quelltext welcher dem eigenen Rechner eine solche Nachricht schickt:

Code:
   1:Private Declare Function NetMessageBufferSend Lib "Netapi32" (ByVal sServerName$, ByVal sMsgName$, B
    :yVal sFromName$, ByVal sMessageText$, ByVal lBufferLength&) As Long
   2:
   3:Private Sub Form_Click()
   4:NetMessageBufferSend "", StrConv("localhost", vbUnicode), StrConv("Ich", vbUnicode), StrConv("hallo"
    :, vbUnicode), Len(StrConv("hallo", vbUnicode))
   5:End Sub
   6:

Falls Fragen auftauchen, schreibt sie ins Gästebuch oder schickt mir ein Email: webmaster'at'black-silence'dot'ch

Viele Grüsse
Euer Webmaster