AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Manipulieren der Benutzerangaben bei Named Pipes

Manipulieren der Benutzerangaben bei Named Pipes

Ein Thema von lordnoxx · begonnen am 26. Jul 2011 · letzter Beitrag vom 28. Jul 2011
Antwort Antwort
lordnoxx

Registriert seit: 26. Jul 2011
4 Beiträge
 
#1

Manipulieren der Benutzerangaben bei Named Pipes

  Alt 26. Jul 2011, 12:44
Hallöchen zusammen. Ich habe eine Client-Server Anwendung (Windows), welche über Netzwerk mittels Named Pipes Daten austauschauscht. Soweit geht auch alles. Störend finde ich jedoch, dass eine Verbindung nur klappt, wenn auf dem Client-PC ein identischer User-Account läuft wie er auch auf dem ServerPC zu finden ist, oder auf dem Server das Gast-Konto aktiviert ist.

Nun ist es so, das auf dem Server ein fester User Acc vorhanden ist, welcher aber nicht auf den Clients eingerichtet werden soll. Mittels WireShark habe ich beobachtet, dass bei Verbindungsaufbau irgendwann ein TCP Packet übermittelt wird, welches Infos zu Benutzername und wohl auch Kennwort übermittelt.

Meine Frage ist nun: Gibt es eine Möglichkeit diese Benutzerinformationen vor der Übertragung zu ändern? So dass eine Verbindung zum Server möglich wird ohne dass auf dem Client das identische Konto angelegt sein muss.

Intuitiv gehe ich ja davon aus, dass diese Geschichten fest in den Windows DLLs implementiert sind, und man somit da nicht ran kommt. Alternativ dann vielleicht noch das direkte Manipulieren des TCP Packets. Naja..wie auch immer....kennt ihr eine Lösung? Vorschläge?

Netten Gruß
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Manipulieren der Benutzerangaben bei Named Pipes

  Alt 26. Jul 2011, 13:20
Müsste man dann sicher beim erstellen/öffnen der Verbindung angeben. Entsprechend interessant wäre wie du derzeit die Pipes erstellst.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
lordnoxx

Registriert seit: 26. Jul 2011
4 Beiträge
 
#3

AW: Manipulieren der Benutzerangaben bei Named Pipes

  Alt 26. Jul 2011, 13:44
Naja, ich sag mal soviel...Das ganze findet im Rahmen meiner Bachelorarbeit statt. Habe hierfür von meinem Betreuer eine Unit bekmomen, und ich weiß nun nicht ob ich die raußgeben darf. Im Prinzip müsste das schon gehen, aber ich will das vorher abklären. Was ich aber sagen kann: Diese Unit nennt sich Pipes.pas und geht auf den Programmierer rllibbiy zurück. Die Unit gab es einst hier zum Downloaden: http://home.roadrunner.com/~rllibby/source.html
Diese Seite ist aber inzwischen tot.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.752 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Manipulieren der Benutzerangaben bei Named Pipes

  Alt 26. Jul 2011, 13:52
Hallo,

die Unit könnte auch hier zu finden sein.
Der Name des Autors ist der selbe.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
lordnoxx

Registriert seit: 26. Jul 2011
4 Beiträge
 
#5

AW: Manipulieren der Benutzerangaben bei Named Pipes

  Alt 26. Jul 2011, 15:05
Jo genau das ist die Unit.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Manipulieren der Benutzerangaben bei Named Pipes

  Alt 26. Jul 2011, 17:47
Ich habe das ganze bei mir umgebastelt für das Verwenden der Zugriffsrechte einer Datei, welche als Property eingetragen werden kann.
Vielleciht kannst Du etwas von den Auszügen brauchen ....


Delphi-Quellcode:
procedure TPipeServer.GenACLFromFile;
//20110228 by Thomas Wassermann
var
  res : Boolean;
  len : Cardinal;
  fDaclPresent,fDaclDefaulted:Bool;
begin
  FACL := nil;
  if Assigned(FpFileSD) then DoHeapFree(FpFileSD);
  if FileExists(FACLFileName) then
    begin
    res := GetFileSecurity(PChar(FACLFileName),DACL_SECURITY_INFORMATION,FpFileSD,0,len);
    if res or (GetLastError() = ERROR_INSUFFICIENT_BUFFER) then
       begin
         FpFileSD := DoHeapAlloc(len);
         GetFileSecurity(PChar(FACLFileName),DACL_SECURITY_INFORMATION,FpFileSD,len,len);
         GetSecurityDescriptorDacl(FpFileSD,fDaclPresent,FACL,fDaclDefaulted);
       end;
    end;
end;

.....
.....
procedure TPipeServer.SetActive(Value: Boolean);
begin

  // Check against current state
  GenACLFromFile;
  if (FActive <> Value) then
  begin
     // Shutdown if active
     if FActive then DoShutdown;
     // Startup if not active
     if Value then DoStartup
  end;

end;


.....
.....


procedure InitializeSecurity(var SA: TSecurityAttributes;ACL:PACL=nil);
var sd: PSecurityDescriptor;
begin

  // Allocate memory for the security descriptor
  sd:=AllocMem(SECURITY_DESCRIPTOR_MIN_LENGTH);

  // Initialise the new security descriptor
  InitializeSecurityDescriptor(sd, SECURITY_DESCRIPTOR_REVISION);

  // Add a NULL descriptor ACL to the security descriptor
  SetSecurityDescriptorDacl(sd, True, ACL, False);

  // Set up the security attributes structure
  with SA do
  begin
     nLength:=SizeOf(TSecurityAttributes) ;
     lpSecurityDescriptor:=sd;
     bInheritHandle:=True;
  end;

end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
lordnoxx

Registriert seit: 26. Jul 2011
4 Beiträge
 
#7

AW: Manipulieren der Benutzerangaben bei Named Pipes

  Alt 28. Jul 2011, 12:04
Ok, erstaml danke für die Antworten.

@ Bummi:

Wenn ich das richtig sehe, dann hast du hier am Code des Servers rumgedreht. Mir geht es aber nicht um die Serverseite sondern einzig um das was beim Client passiert. Ich verusuch das nochmal zu erklären.

Windows1(Client):
User: Bär
Pass: 1234

Windows2(Server):
User: großerBär
Pass: 4321

Der Einfachheit halber sei angenommen, dass sonst keine weiteren Accounts auf den Windowsen sind. Also auch keine Gast-Accounts.

Der Pipe-Client kann sich nun nicht mit dem Pipe-Server verbinden, da die Accounts unterschiedlich sind. Ist es jedoch möglich, im Code des Pipe-Clients statt [User: Bär Pass: 1234] die Kennung des Servers also [User: großerBär Pass: 4321] zu übermitteln, sollte eine Verbindung hinhauen.

Und auf die Umsetzung dieser Idee zielt meine Frage ab. Ist dies Möglich?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: Manipulieren der Benutzerangaben bei Named Pipes

  Alt 28. Jul 2011, 14:03
Wenn ich Dich richtig verstanden habe meinst Du so etwas wie RunAs?
Die Zugriffsberechtigungen funktionieren wie Dateiberechtigungen.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz