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 2 von 4     12 34      
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, 36x aufgerufen)
 
Benutzerbild von Der.Kaktus
Der.Kaktus

 
Delphi 7 Enterprise
 
#11
  Alt 24. Jun 2008, 15:49
Zitat von Tyrael Y.:
Zitat von RavenIV:
/Zum Thema
<Ironie on>
Mülltonne auf, "Security1Beta" rein, Mülltonne zu.
&lt;Ironie off&gt;
-.- dein Post ist völliger Müll

Der junge Mann ist 13.
13 Jahre alt Mann, er versucht sich an Delphi und du
schreibst so einen Mist.

Schreib doch einfach nix, wenn du nix zu sagen hast oder
beantworte seine Frage.
voll zustimme ..Dachte, dieses "sommerlochgeschnatter" waere nun endlich genug nach ca. 800 Beitraegen *kobbschuettel*


Nun noch zum Thema:

versuch mal Deinem Quelltext bissl Form zugeben.."einruecken Begin End etc." macht es uebersichtlicher
und Fehler lassen sich auch besser finden.
  Mit Zitat antworten Zitat
blender

 
Delphi 7 Personal
 
#12
  Alt 24. Jun 2008, 16:17
Die Batch soll ja laufend nach dem Taskmanager suchen und ihn beenden.

Code:
:anfang
taskkill /im taskmgr.exe
GoTo anfang
Was ist an GoTo´s eigentlich so schlimm?
  Mit Zitat antworten Zitat
NormanNG

 
Delphi 2007 Professional
 
#13
  Alt 24. Jun 2008, 16:42
Hi,

ich hab´dir mal den Code etwas formatiert...
Dann hat man bessere Übersicht, weiß wo ein
begin anfängt und wo das dazugehörige end steht etc.

Das mit dem goto ist ein no-go
Wird im allgemeinen als schlechter Programmierstil angesehen,
weil der Programmfluss nicht mehr so einfach zu durchschauen ist.

Versuch doch mal, das Programm in einzelne Prozeduren/Funktionen zu
unterteilen. Dann wird der Hauptteil übersichtlicher und du brauchst
(hoffentlich) keine goto´s mehr

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.
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

 
Delphi 7 Enterprise
 
#14
  Alt 24. Jun 2008, 17:50
du kannst auch ne menge units aus deinem programm verbannen, um die datei grösse zu reduzieren...
du verwendest eh keine befehle aus diesen units...

hab sie mal markiert:

Delphi-Quellcode:
program Security1Beta;

{$APPTYPE CONSOLE}

uses
  Windows,
  SysUtils; // das sind die einzigen verwendeten units, der rest ist nicht in verwendung
             // das verringert deine dateigrösse von rund 361kb auf rund 43kb
// Messages,
// 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.

eine frage aber noch:
wozu soll dieses programm genau sein, und was hat das mit sicherheit zu tun??
Martin
  Mit Zitat antworten Zitat
fLaSh11
 
#15
  Alt 24. Jun 2008, 18:17
Außerdem solltest du bedenken, dass man die Zeile

{...} if (passwort = 'passwort1') {...} mit jedem guten Disassembler auslesen kann und somit das Passwort in Null Komma nichts herausfinden kann!
  Mit Zitat antworten Zitat
Benutzerbild von smallsmoker
smallsmoker
 
#16
  Alt 24. Jun 2008, 19:01
Zitat:
mit jedem guten Disassembler auslesen kann und somit das Passwort in Null Komma nichts herausfinden kann!
stichwort: dec 5.1
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

 
Delphi 7 Enterprise
 
#17
  Alt 24. Jun 2008, 19:08
Zitat von fLaSh11:
Außerdem solltest du bedenken, dass man die Zeile

{...} if (passwort = 'passwort1') {...} mit jedem guten Disassembler auslesen kann und somit das Passwort in Null Komma nichts herausfinden kann!
sicher ist das so, aber ich glaube er fängt gerade erst an, da ist das vllt erstmal ausreichend für den anfang

mit disasm kann er sich dann später einfriemeln ...
Martin
  Mit Zitat antworten Zitat
fLaSh11
 
#18
  Alt 24. Jun 2008, 19:39
@ lbccaleb:
Haste natürlich recht! Klar muss man nicht alles perfekt sein. Mein Vorschlag war für die weiterführende Arbeit. Sozusagen für Version 2
  Mit Zitat antworten Zitat
blender

 
Delphi 7 Personal
 
#19
  Alt 26. Jun 2008, 15:34
Wie kann man es denn Verhindern, dass das Passwort eingelesen werden kann?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

 
Delphi 11 Alexandria
 
#20
  Alt 26. Jun 2008, 15:35
Du müsstest es verschlüsseln oder irgendwie außerhalb des Kompilats ablegen oder besser beides.
Detlef
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 18:54 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