Autor Beitrag
glotzer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Sa 26.06.10 13:22 
SimpUp - Der neue, einfache Updater
Bitte unbedingt beachten: Es handelt sich um eine Beta-Version, d.h. es sind eventuell noch bugs o.ä. vorhanden, die verwendung in Projecten empfehle ich (noch) nicht.

Ich war mir nicht sicher ob ich es hier oder in Open Source Projekte schreiben soll. Fals es nicht passt bitte verschieben.

Screenshot

Funktionsweise
Der Updater ist einen eigenständiges Programm, das Update läuft via eines HTTP-Servers und eines Update-Scriptes. In der neueren Version ist die möglichkeit vorhanden die Verbindung mittels SSL zu schützen und die Datei via zertifikaten zu kontrolieren.

Das "Hauptprogramm" ruft ,zum kontrolieren ob neue Updates zu verfügung stehen, eine funktion in der mitgelieferten DLL auf. Diese regelt die Kommunikation mit dem Server und sagt dem Program ob ein Update vorhanden ist oder nicht.
Fals ein Update möglish ist, muss das "Hauptprogramm" eine weitere Funltion in der Dll aufrufen, die das Script herunterläd. Daraufhin muss der Updater gestarted werden und das Haupprogram beendet werden. Der Updater führt daraufhin das update durch, Fertig.
Dies kann auch mittels einer *.bat datei gemacht werden.

Funktionsumfang der Scriptsprache (genauerer Erklärungen zu den einzelnen Funktionen befinden sich in der Documentation)
  1. DOWNLOAD: läd eine Datei aus dem Internet herunter(nicht sicher)
  2. SAFEDOWNLOAD: läd eine Datei aus dem Internet herunter (sicher, wenn verschlüsselt und gültige zertifikate)
  3. RENAME: benennt eine Datei um
  4. DELETE: löscht eine Datei
  5. GOTO: setzt die ausführung des Skriptes an einer anderen stelle fort, entweder an einem Label oder an einer Zeilennummer
  6. :Llabel :setzt eine makierung für GOTO anweisungen
  7. SHOWMESSAGE: zeigt eine Nachricht an
  8. IFDLG: Öffnet einen einfachen ja/nein Dialog, behandlung des Ergebnisses via GOTO möglich
  9. EXTRACT: Entpackt eine zip-Datei
  10. CREATEDIR: Erstellt einen Ordner
  11. DELETEFILE: löscht eine Datei
  12. // : Kommentare, werden vom Interpreter ignoriert
  13. WRITEREGISTRY: Schreibt in die Registrierungsdatenbank

geplante Funktionen:
-CALLDLL: Ruft eine Funktion in einer DLL
-CALLANW: Started eine Anwendung
-IFREG: if abfragen mit der registry

-download via FTP
-ein Script zum Updaten via Hashlist
-schneller zugriff auf registry

Bekannte Bugs
  • Teilweise Fehlermeldungen bei Abbrechen des Updates, dies passiert wegen verwendung von Threads. Wird bald möglichst gefixed.



Fremde Komponenten



Lizenz
Der Updater darf sowohl für Private wie auch Kommertielle Projekte kostenlos genutzt werden.
Die Verwendung, Verarbeitung und Weitergabe des Quellcodes ist uneingeschränkt erlaubt.
Für die Fremden Komponenten gelten die jeweiligen Lizenzinformationen.
Über eine Erwähnung von mir bei Verwendung des Updaters würde ich mich freuen.

Download
Updater 0.1 BETA Hier
Updater 0.1 BETA Debuging Version(zum testen etc) Hier
Dokumentation 0.1 BETA Hier

Updater 0.0 BETA Hier
DLL 0.0 BETA Hier
Dokumentation 0.0 BETA Hier

(Beispiele folgen sobald ich Zeit hab welche zu machen :p )

Moderiert von user profile iconNarses: Bild als Anhang hochgeladen.
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von glotzer am Mi 30.06.10 17:51, insgesamt 10-mal bearbeitet
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8720
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 26.06.10 13:37 
Was ich in deinem Updater extrem vermisse (das hat aber bisher keiner der hier im DF vorgestellten AFAIK, obwohl das EXTREM wichtig wäre): Ich habe keine Chance, die erhaltenen Updates auf Integrität und Authentizität zu prüfen. Wenn ich das in deinem Beispiel richtig stehe, kommt das Update-Script über eine HTTP-Verbindung, dein Archiv für's Update kommt über eine HTTP-Verbindung. Leichter kann man das großflächige Infizieren mit Viren einem Angreifer nicht machen.

Vor knapp 2 Jahren gab es mal im Inet ein Problem, bei dem JEGLICHE DNS-Server verwundbar waren gegen das Unterschieben falscher DNS-Antworten in Cache-Server. Resultat war, dass man beliebige Domains problemlos verbiegen konnte. Nach dem das Problem an den DNS-Servern gefixt war, zeigte sich aber ein zweiteres, wesentlich schwerwiegenderes: Kaum einer der verfügbaren Updater hätte eine Manipulation an sinen Updates festgestellt.

Ich würddaher raten, eine Möglichkeit um Client-Seitig sowohl das Update-Script als auch die heruntergeladenen Dateien zu validieren, einzubauen.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.

Für diesen Beitrag haben gedankt: glotzer
glotzer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Sa 26.06.10 13:44 
hmm das wusst ich garnicht. vielen dank für den Tipp :D

würde eine Verschlüsselung der Verbindung mit SSL das Problem beheben? oder ist es dann immernoch möglich da einzugreifen?
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8720
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 26.06.10 13:51 
Verschlüsslung bringt zwar schon mal etwas gegen die offensichtlichen Angriffe (transparenter Zwangsproy), behebt das Problem aber nicht. Sinnvoller wäre hier die Nutzung von digitalen Signaturen, wo nur der Ersteller der Anwendung Einfluss auf die verwendeten Schlüssel hat. Eine etwas schwächere Variante wäre die Nutzung von HMACs (Message Authentication Codes) die grob als eine Art Salted Hash aufgefasst werden können.Mehr dazu erklär ich aber auch gern noch mal in nem separaten Thread ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
glotzer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Sa 26.06.10 13:57 
wäre super, ich hab nur Bahnhof verstanden ^^

uhm SSL werd ich mich dann gleich mal kümmern
Teekeks
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 211
Erhaltene Danke: 23



BeitragVerfasst: Sa 26.06.10 19:27 
Und nun noch eine Optische Sache:
Dein Formular heißt noch "Form1" ;)
glotzer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Sa 26.06.10 19:46 
ups... ya änder ich gleich.
danke
glotzer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: So 27.06.10 16:54 
Neue version:
-auf anraten von BenBE die Verbindung gesichert und kontrolle via zertifikaten eingebaut.
-Registry zugriff ermöglicht
-Formular umbenant
-"test"-version hochgeladen, um einfach mit dem updater rumspeilen zu können.

ein großer dank an BenBE für die hilfe mit der sicherheit :D
oOXTCOo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141

Windows XP Prof. 3
Delphi 7
BeitragVerfasst: Mo 08.11.10 02:16 
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Was ich in deinem Updater extrem vermisse (das hat aber bisher keiner der hier im DF vorgestellten AFAIK, obwohl das EXTREM wichtig wäre): Ich habe keine Chance, die erhaltenen Updates auf Integrität und Authentizität zu prüfen. Wenn ich das in deinem Beispiel richtig stehe, kommt das Update-Script über eine HTTP-Verbindung, dein Archiv für's Update kommt über eine HTTP-Verbindung. Leichter kann man das großflächige Infizieren mit Viren einem Angreifer nicht machen.

Vor knapp 2 Jahren gab es mal im Inet ein Problem, bei dem JEGLICHE DNS-Server verwundbar waren gegen das Unterschieben falscher DNS-Antworten in Cache-Server. Resultat war, dass man beliebige Domains problemlos verbiegen konnte. Nach dem das Problem an den DNS-Servern gefixt war, zeigte sich aber ein zweiteres, wesentlich schwerwiegenderes: Kaum einer der verfügbaren Updater hätte eine Manipulation an sinen Updates festgestellt.
Ich würddaher raten, eine Möglichkeit um Client-Seitig sowohl das Update-Script als auch die heruntergeladenen Dateien zu validieren, einzubauen.


der tread ist zwar schon etwas her...

das dns problem gibt es immer noch!
jetzt ist es ein router exploit, das die dns adresse direkt im router überschreibt und bestimmte adressen umleitet.

anfällig dafür zb. mein netgear router.
wer zb. bei google results statt zur gewünschten seite auf zb. epoclick.com geleitet wird, der sollte mal seine dns adresse im router checken.
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Di 16.11.10 19:14 
Warum machst du das Programm nicht für die Konsole, wenn eh nur Text geschrieben wird? Würde einfach vom Konzept her besser passen und für meine Begriffe professioneller aussehen. Ich meine damit nicht, dass ich Konsolenprogramme generell bevorzuge (obwohl es meistens so ist), sondern nur, dass es unprofessionell ist, eine GUI zu basteln, wenn es um eine Textsache geht.
glotzer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Di 16.11.10 20:18 
auch wahr, muss aber erlich sagen dass ich sowas noch nie gemacht hab. das project liegt eh zurzeit auf eis... naja mal gucken

danke für den tipp