AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte JEDI Windows Security Code Library

JEDI Windows Security Code Library

Ein Thema von Dezipaitor · begonnen am 6. Nov 2007 · letzter Beitrag vom 15. Apr 2008
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
Dezipaitor
Registriert seit: 14. Apr 2003
Hallo Delphianer,

dies ist die erste öffentliche Bekanntmachung für etwas das ich mittlerweile fast ein Jahr entwickle. Zuvor hatte ich bereits schoneinmal eine Teil-Veröffentlichung gemacht. Im Laufe der Zeit hat sich einiges getan, und wenn ich auch noch nicht Releasestatus erreicht habe, ist die Bibliothek mittlerweile sehr nützlich. Zudem habe ich mich nach einigem Gerangel entschieden sie als OpenSource freizugeben. Dies geschieht aus der Hoffnung, dass Andere dazukommen und Verbesserungen beitragen oder sogar weitere Klassen hinzufügen. Die Veröffentlichung geschieht jedoch mit der ausdrücklichen Bitte die Bibliothek als ganzes zu verwenden und sie nicht als Selbstbedienungsladen zu sehen.

Was ist JEDI Windows API (JWA)?
Die JWA ist eine Bibliothek, die versucht soviele original Windows Header Dateien (C-Header) wie möglich nach Delphi zu konvertieren.

Was ist JEDI Windows Security Code Library (JWSCL) ?
Die JWSCL ist eine reine Klassenbibliothek, die die Programmierung mit der Windows API (in C geschrieben) vereinfachen soll.
Darunter fallen derzeit folgende Konstrukte:
*Erkennung der Windows Version
*Token
**Impersonation (Personifizierung)
**Benutzerlogin
*SID
*Access Control List
*Security Descriptor (Sicherheitsdeskriptor)
**Owner, Group, DACL, SACL
*WindowStation
*Desktop
*LSA (Teile)
*Rights mapping
*Gesicherte Objekte z.B. Dateien, Registry (+Vererbung), aber auch alle anderen Handles
*Credentials (Login Dialog)
*Verschlüsselung (MS Crypt API)
*Known SIDs
*Privilegien
*Security Dialogs (Sicherheitsdialog, wie man ihn bei der Dateisicherheit des Explorers sieht)
*Terminal Sessions
*Unicode + Ansicode
*Vista Elevation
*Vista Integrity Level

In Entwicklung:
*Terminal Server (u.a. Session shadowing) (40%)
*Secure Private Objects (Sicherung von benutzerdefinierten Strukturen mit Sicherheitsdeskriptor + opt. Vererbung) (20%)
*Group Policy (0%)
*Active Directory (0%)
*und weitere

Die JWSCL gibt es derzeit im BETA Status über Subversion (Versionsverwaltung) von SourceForge. Sie ist unter der GPL (wenn auch noch nicht in der Dokumentation erwähnt) oder MPL als OpenSource freigegeben.
Zusätzlich gibt es noch eine erweiterte Version der JEDI API Lib, die in demselben Subversion Repository liegt. Sie findet Verwendung in der JWSCL.

(Anonymer Zugriff)
Die URL ist über ein SVN Client, wie Tortoise SVN zu verwenden.

edit:Auf allgemeine Anfrage ist nun der Download des aktuellen Subversion Repository rev#30 von SF.net möglich. Das Archiv hat denselben Inhalt, wie ein Checkout über SVN.


Die JWSCL verwendet die neue JEDI API Lib (JWA). Dazu muss die JWA als Paket kompiliert werden.
1. Öffne die Projektgruppe im Ordner jwaapi\trunk\Packages, was zu deiner Delphiversion passt. Oder wenn nicht vorhanden, verwende eine ältere Version.
2. Kompiliere alle Pakete. Die DCU Dateien werden in einem Ordner "Bin" gespeichert. Dieser ist nochmals in vier weitere Unterordner aufgeteilt, die die verschiedenen Versionsarten (Debug/Release, Dynamic/Static) repräsentieren.
Die Dateien "JwaWindows.dcu" und "JwaVista.dcu" sind dann die entscheidenden Teile.
3. Kopiere dir den Pfad-Text von einem dieser vier Ordner. Ich empfehle für die Entwicklung Dynamic\Debug. Dieser Pfad wird der Suchpfad für JediAPI DCU Dateien in deinen neuen Projekten.

Diese Vorgehensweite ist empfehlenswert im Gegensatz zu der direkten Einbindung der Quelldateien. In diesem Fall müsste bei jeder Projekterzeugung alle Jedi API Lib Dateien erneut kompiliert werden - das dauert.

Die Verwendung der JWSCL ist dann einfach. Man muss nur den Suchpfad des eigenen Projekts noch durch den Pfad zur Quelle "jwscl\trunk\source" erweitern.


So, das wars für die Vorbereitung.
Einige Beispiele sind bereits in den Ordnern. Der Rest ist durch Ausprobieren erfahrbar

Zum BETA Status:
BETA Status bedeutet für die JWSCL, dass es noch viele unentdeckte Fehler gibt. Daher ist es nicht ratsam blindlings die Bibliothek in wichtigen Projekten einzusetzen. Ich verbiete es jedoch nicht! Ich werde mich jedoch bemühen, Fehler so gut wie möglich zu korrigieren. Ich rufe aber inständig andere Entwickler auf mich bei der Arbeit zu unterstützen. Tester suche ich daher weniger als Helfer.

Zur Kritik:
Ich nehme nur konstruktive Kritik an.

Zur Kommunikation:
Eine neue JEDI API Webseite ist im Aufbau. Ein Blog wird auf Assarbads Server entstehen, der auch Benutzerkommentare zulässt.
Wer Fragen hat, kann mich daher ersteinmal hier im Forum erreichen.

Zur Hilfe:
Wie schon geschrieben, suche ich eher Mitentwickler als reine Tester.
Ich suche aber auch Leute, die Beispiele für die JWSCL schreiben. Zudem können Artikel/Beispiele im neuen Blog abgelegt werden.

Zu meiner Hilfe:
Ich kann leider nur in Sachen JWSCL oder JWA helfen. Direkte Hilfe zur Unterstützung in Programmierung für Windows Sicherheit kann ich nicht geben. Bitte dazu das Forum benutzen.


So ich hoffe nun, dass Programmierung in Windows Sicherheit etwas einfacher wird....
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
 
Dezipaitor

 
Delphi 7 Professional
 
#2
  Alt 7. Nov 2007, 21:28
Dieser Code ermittelt, welche Rechte für eine Datei möglich sind.

Delphi-Quellcode:
program ReadFileSecurity;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Dialogs,
  Controls,
  JwaWindows,
  JwsclTypes,
  JwsclExceptions,
  JwsclConstants,
  JwsclMapping,
  JwsclVersion,
  JwsclProcess,
  JwsclSid,
  JwsclAcl,
  JwsclCredentials,
  JwsclDescriptor,
  JwsclToken,
  JwsclKnownSid,
  JwsclAccounts,
  JwsclSecureObjects,
  JwsclStrings;

function CheckAccessToFile(
  DesiredAccess: DWORD; const FileName: WideString): Boolean;
var FileObject : TJwSecureFileObject;
begin
  FileObject := TJwSecureFileObject.Create(FileName);
  try
    result := FileObject.AccessCheck(DesiredAccess);
  finally
    FileObject.Free;
  end;
end;

function CheckMaximumAccessToFile(const FileName: WideString): DWORD;
var FileObject : TJwSecureFileObject;
    PrivilegeSet: TJwPrivilegeSet;
    AccessStatus: boolean;
begin
  FileObject := TJwSecureFileObject.Create(FileName);
  try
    FileObject.AccessCheck(
      MAXIMUM_ALLOWED,//DesiredAccess: TJwAccessMask;
      PrivilegeSet,//out PrivilegeSet: TJwPrivilegeSet;
      result,//out GrantedAccess: TJwAccessMask;
      AccessStatus,//out AccessStatus: boolean;
      nil//const ClientToken: TJwSecurityToken = nil);
      );
  finally
    PrivilegeSet.Free;
    FileObject.Free;
  end;
end;

var AccessMask : DWORD;
    FileName : String;
begin
  FileName := ParamStr(1);
  if Length(FileName) = 0 then
    FileName := ParamStr(0);

  writeln('Check access for '+FileName);
  try
    if CheckAccessToFile(FILE_ALL_ACCESS,FileName) then
      writeln('Full control allowed')
    else
      writeln('Full control denied');
  except
    On E : Exception do
     Writeln(E.Message);
  end;

  try
    AccessMask := CheckMaximumAccessToFile(FileName);
    writeln('Maximum access possible: ['+TJwSecurityFileMapping.MapAccessMaskToString(AccessMask)+']');
  except
    On E : Exception do
     Writeln(E.Message);
  end;

  Writeln('[Hit return]');
  readln;
end.
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Remko
Remko

 
RAD-Studio 2010 Arc
 
#3
  Alt 8. Nov 2007, 09:50
Chris, congratulations on this first release!
To all DP members: take a look at the library, Chris has invested a lot of his time in this library and I can only say he did an excellent job. Never before was it soo easy to use Win32 API (security related) with Delphi.

Come on, let's hear your reactions!
  Mit Zitat antworten Zitat
Relicted

 
Delphi 10.4 Sydney
 
#4
  Alt 8. Nov 2007, 10:04
huhu!

hört sich ja schonmal super an. leider komme ich im moment nicht an die sourcen da ich hier hinter einer dicken firewall sitze.. schön wäre wenn du vielleicht mal nen stand anhängen könntest.

gruß
reli
  Mit Zitat antworten Zitat
Dezipaitor

 
Delphi 7 Professional
 
#5
  Alt 8. Nov 2007, 14:55
Zum Laden der Sourcen wird HTTPS verwendet. Das sollte die Firewall eigentlich durchlassen, oder ist der Webseiten-Verkehr darüber verboten?
Christian
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

 
Delphi 7 Architect
 
#6
  Alt 8. Nov 2007, 15:52
@Dezipaitor

Respekt für die Arbeit die du machst, aber warum ist es so kompliziert die Sourcen zu laden? Mich persönlich interessiert
das Project sehr, aber ich habe ehrlich gesagt keine Lust ein extra Programm dafür zu installieren.

mfG Richard
  Mit Zitat antworten Zitat
shmia

 
Delphi 5 Professional
 
#7
  Alt 8. Nov 2007, 15:59
Zitat von richard_boderich:
@Dezipaitor
Respekt für die Arbeit die du machst, aber warum ist es so kompliziert die Sourcen zu laden?
Jupp, wir wollen einen Download der aktuellen Sourcen unter
http://sourceforge.net/project/showf...roup_id=121894
sehen.
[Honig um's Maul schmieren] Du bist doch Admin [/Honig um's Maul schmieren]
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

 
Delphi XE8 Enterprise
 
#8
  Alt 8. Nov 2007, 16:46
Hallo,

das hört sich ja alles schonmal sehr gut an. Aber besser finden würde ich es, wenn Du auf SourceForge oder hier einen Download anhängen würdest, damit auch die Leutz Dir helfen können, die sich mit CSV nicht auskennen und das auch nicht haben.
Rolf Warnecke
  Mit Zitat antworten Zitat
Dezipaitor

 
Delphi 7 Professional
 
#9
  Alt 8. Nov 2007, 17:37
Also ich hab mal ein Package bereitgestellt. Das Package ist wie ein Checkout mit SVN (Subversion). Siehe ersten Post.
Vorsicht: CVS ist nicht gleich CSV!!
Christian
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

 
Delphi XE8 Enterprise
 
#10
  Alt 8. Nov 2007, 18:10
Zitat von Dezipaitor:
Vorsicht: CVS ist nicht gleich CSV!!
Sorry, Schreibfehler.
Rolf Warnecke
  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 00:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf