AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Security Software
Thema durchsuchen
Ansicht
Themen-Optionen

Security Software

Ein Thema von blender · begonnen am 18. Jun 2008 · letzter Beitrag vom 26. Jun 2008
Antwort Antwort
Seite 3 von 4     123 4      
blender
Registriert seit: 25. Feb 2008
Hallo,
ich habe eine, ziemlich einfache, Security "Software" Programmiert.

Hier der Quellcode (Ich weiß, Uralt Konsolenanwendung. Passt aber dazu. Visuell.):

Delphi-Quellcode:
program Security1Beta;

{$APPTYPE CONSOLE}

uses
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  StdCtrls,
  shellapi;

var Passwort, compname, test: String;
    Wrongcount: Integer = 0;
label anfang, ende, EnterComputerName;
begin
if DirectoryExists(test+'_Desktop') then WrongCount := 4;
anfang:
 Write('Please enter Password to access: ');
 ReadLn(Passwort);
 writeln;
 if (passwort = 'passwort1') and (wrongcount < 4) then begin writeln('Access...'); goto ende; end else if wrongcount < 4 then begin writeln('Access denied!!! You can try one more.'); inc(wrongcount); end else
 begin
 writeln('Access to all functions of the program will be blocked...');
 writeln('Another entering the password is no longer possible.');
 EnterComputerName:
 CreateDir(test+'_Desktop');
 writeln('Please identify yourself as the owner of this computer.');
 writeln;
 write('Please enter the computer name: ');
 ReadLn(compname);
 if compname = GetEnvironmentVariable('USERDOMAIN') then
 begin
 writeln;
 writeln('Computer name is checked...');
 writeln;
 writeln('Computer name confirmed.');
 RemoveDir(test+'_Desktop');
 wrongcount:= 0;
 writeln;
 goto anfang;
 end
 else
 begin
 writeln;
 writeln('Computer name is checked...');
 writeln;
 writeln('Wrong input.');
 writeln('Full closure is initialized...');
 writeln('Full closure in Progress...');
 CreateDir(test+'_Lokale Einstellungen');
 writeln('Full closure complete.');
 goto EnterComputerName
 end;
 end;
 writeln;
 goto anfang;
ende:
writeln;
write('To end the program press enter.');
ReadLn;
end.
Das funktioniert soweit auch ganz gut.

Nun wollte ich allerdings, damit sich das Programm nicht so einfach beenden lässt das Programm im Vollbild starten. Wie geht das?
Kann man das Programm sonst noch weiter absichern?

Das Programm ist im Anhang.
Angehängte Dateien
Dateityp: zip security_1.0.0.0_beta_1_alpha_1_149.zip (194,3 KB, 37x aufgerufen)
 
Benutzerbild von RavenIV
RavenIV

 
Delphi 2007 Enterprise
 
#21
  Alt 26. Jun 2008, 15:36
Zitat von blender:
Wie kann man es denn Verhindern, dass das Passwort eingelesen werden kann?
Passwort verschlüsseln.
Siehe Beitrag #16
Klaus E.
  Mit Zitat antworten Zitat
Macci
 
#22
  Alt 26. Jun 2008, 16:15
Verschlüsseln reicht nicht, weil, wenn dein Programm in der Lage ist, es zu entschlüsseln, auch jeder sofort selbst nachsehen kann, was dein Programm tut, und es dann entschlüsseln kann.

Bessere wäre ein Hash, also z.B. MD5. Dafür gibt es bereits fertige Funktionen, die für dich so einen Hash erzeugen.
  Mit Zitat antworten Zitat
blender

 
Delphi 7 Personal
 
#23
  Alt 26. Jun 2008, 16:18
Was ist denn ein Hash?

Das mit dem Verschlüsseln hatte ich mir auch gedacht, bin aber zu dem gleichen Schluss gekommen wie Macci.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

 
Delphi 2009 Professional
 
#24
  Alt 26. Jun 2008, 16:37
Hash bedeutet "Verwischen". Der Vorteil eines solchen ist, dass man aus dem Hash das Original nicht mehr reproduzieren kann.

MD5 wäre ein solcher Hash. Dazu findest Du einiges hier in der Forensuche.

Zitat:
Verschlüsseln reicht nicht, weil, wenn dein Programm in der Lage ist, es zu entschlüsseln, auch jeder sofort selbst nachsehen kann, was dein Programm tut, und es dann entschlüsseln kann.
Du kannst hashen, verschlüsseln etc. pp. wie Du willst. Es wird immer einen schlauen Cracker (?) geben, der die Entschlüsselungsroutine nachbilden kann.
Manuel
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle
 
#25
  Alt 26. Jun 2008, 17:01
Hi blender!

Scheinbar bist du ziemlich neu, was Delphi angeht, habe ich Recht? Wie einige hier schon geschrieben haben: Aller Anfang ist schwer. Also mach die keinen Kopf um manch böse Bemerkungen hier. Der Wille zählt, und der scheint vorhanden zu sein.

Um mal zu deinem Projekt zu kommen: Zwei Dinge solltest du an deinem Source unbedingt ändern. Zum einen sind es die gotos. Selbstverständlich funktioniert ein Programm auf mit Gotos einwandfrei, aber gotos haben einen großen Nachteil: Die Übersichtlichkeit leidet total. Wenn dein Projekt mal mehr als 500 Zeilen haben sollte, dann siehst weder du noch einer der Community-Mitglieder hier noch dabei durch.

Das andere ist die Codeeinrückung. NormanNG war so freundlich und hat deinen Code mal sehr schon eingerückt. Vielleicht kannst du dir das ja angewöhnen. Gut eingerückter Code macht den Code noch lesbarer und der Programmierer wirkt auch viel professioneller! Und schließlich muss man auch auf sein Image achten.

Nun, du hast mit deinem Programm das Thema "Security" in Angriff genommen. Ich will dir wirklich nichts aufdrücken, aber ganz persönlich würde ich dir was anderes empfehlen. Security ist ein großen, sehr kompliziertes Thema. Wie wäre es, wenn du dir mal was anderes vornimmst? Hier in der DP gibt es viele Threads, mit derartigen Vorschlägen. Hier mal ein paar einfache und auch teilweise interessante Dinge:
  • Einen Taschenrechner.
  • Eine Adressverwaltung, mit welcher du Telefonnummern verwalten kannst.
  • Oder vielleicht eine andere Verwaltung? Für Filme, MP3s oder so?
  • Wie wäre es mit einem kleinen Spiel? Breakout, Tetris, Pong?

Viel Spaß und Erfolg noch auf deinem weiteren Werdegang.
Und lass dich nicht klein kriegen!

Mit freundlichen Grüßen,

Valle
Valentin Voigt
  Mit Zitat antworten Zitat
blender

 
Delphi 7 Personal
 
#26
  Alt 26. Jun 2008, 17:24
Hallo,
danke.

Nochmal so: Dieses Projekt habe ich in rund 10 Minuten programmiert. Normalerweise achte ich auch auf einrückung.
Mir geht es bei dem Projekt in erster Linie darum etwas mehr über Sicherheit und Konsolenanwendungen herauszufinden.
Normalerweise programmiere ich auch keine Konsolen Anwendung.
Aber zu so einem Programm passt es einfach. (Im Vollbild sieht es ganz gut aus.)

Ich programmiere schon ein bisschen länger in Delphi.

Zum Thema:

1. Wie bekomme ich die Anwendung automatisch in den Vollbild Modus?
2. Wie verhindere ich effektiv den Taskmanager, ohne dass der Benutzer es merkt? Die Verhinderung muss natürlich nach Eingabe des Passwortes aufgehoben werden.
3. Mann KÖNNTE als Sperrung gezielt einen Registry Schlüssel ändern. Das würde bewirken, dass beim nächsten Neustart die Maus oder Tastatur abgeschaltet ist
4. Wie könnte das Programm in den Autostart kopieren, ohne dass der Benutzer es dort ohne das Passwort wieder raus bekommt?

Ich denke 3. ist eh nur rein Theoretisch.

Edit: Gotos benutze ich sonst auch selten. (Bisher ein mal.)
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle
 
#27
  Alt 26. Jun 2008, 17:32
Nun, da du deine Software ja schon Security nennst: Ich denke mal, das Ziel ist wirklich absolut Sicherheit, oder? Also so richtig sicher. *g* Wenn es wirklich richtig sicher haben willst, dann ist das schon ein total falscher Ansatz. Such mal im Forum nach GINA.dll, das dürfte in die richtige Richtung gehen.

Allerdings ist Sicherheit etwas allgemein. Was genau willst du denn sicher haben? Beschränke dich mit deiner Software doch erstmal auf ein Themengebiet. Mach eine Firewall draus, da hat man schon gegnug zutun. Wenn die Firewall dann noch Features hat, wie NAT, iptables-Style usw. würde ich sie sogar benutzen.

Also nochmal Zusammenfassung: An deinem Programm fehlt das Konzept. Mir wird nicht ganz klar, was das Ziel des Programms sein soll. Auch Konzept und Umsetzung sind nicht wirklich der Kracher. Vielleicht denkst du doch besser mal über etwas anders nach?

Mit freundlichen Grüßen,

Valle
Valentin Voigt
  Mit Zitat antworten Zitat
Macci
 
#28
  Alt 26. Jun 2008, 18:19
Zitat von Die Muhkuh:
Du kannst hashen, verschlüsseln etc. pp. wie Du willst. Es wird immer einen schlauen Cracker (?) geben, der die Entschlüsselungsroutine nachbilden kann.
Hä, wie soll man denn einen Hash "entschlüsseln" ?
Beispiel einer SEHR einfachen Hashfunktion: Die Quersumme. Sei mein Passwort z.B. 1234, dann ist die Quersumme 1+2+3+4 = 10.
Wenn du jetzt nur die 10 weisst, wie willst du dann auf mein Passwort schließen? 1234 könnte genauso stimmen wie z.B. 19, oder noch unendlich - naah, endlich aber verdammt viele - andere Möglichkeiten.

Natürlich verwendet man in der Praxis nicht so einen dummen Hash-Algo. sondern einen besseren.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

 
Delphi 2009 Professional
 
#29
  Alt 26. Jun 2008, 18:21
Sorry, ich bezog das mit der Entschlüsselungsroutine nur auf verschlüsseln und nicht auf hashen. Bisschen blöde ausgedrückt.

Jedoch kann der Cracker, wenn er weiß, wie der Hash berechnet wird, diesen Nachbilden (also wenn er weiß, dass der MD5 Hash aus Vorname und Nachname gebildet wird).
Manuel
  Mit Zitat antworten Zitat
dominikkv

 
Delphi 2007 Professional
 
#30
  Alt 26. Jun 2008, 18:25
Zitat von Macci:
1234 könnte genauso stimmen wie z.B. 19, oder noch unendlich - naah, endlich aber verdammt viele - andere Möglichkeiten.
Genau, und man muss nur eine Möglichkeit finden. zB über Bruteforce mit Rainbowtabellen
Zitat von Macci:
Natürlich verwendet man in der Praxis nicht so einen dummen Hash-Algo. sondern einen besseren.
Der dann die Wahrscheinlichkeit von Kollisionen vermindert und damit wieder sicherer ist.
Dominik
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 22:41 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