alexss95
Goto Top

Sichere Textabfrage im Internet

Tag!

Also, nachdem ich also jetzt weiß, wie man eine fernümpftige aktivierung mit
einem Lizenzschlüssel hinbekommt, möchte ich jetzt noch eine Text-Abfrage
im Internet machen, also z.B.:

Nutzer gibt richtigen Lizenzschlüssel "2374973947" ein,
dann soll das Programm ins Internet gehen, auf meine Seite,
welche dann mit htaccess geschützt ist und sich dort anmelden.

Wenn es dort angemeldet ist, soll es überprüfen, ob der Schlüssel dort
registriert ist, wenn nicht, dann wird eine Fehlermeldung gezeigt.

Ist das zu realisieren?
Geht es auch einfacher?

Danke schonmal im Vorraus!

Gruß
Alexss95

Content-Key: 127070

Url: https://administrator.de/contentid/127070

Printed on: April 25, 2024 at 00:04 o'clock

Member: H41mSh1C0R
H41mSh1C0R Oct 14, 2009 at 08:20:59 (UTC)
Goto Top
moin,

Ich würde das Pferd wiefolgt aufziehen:

1. Programm Installation
2. Am Ende der Installation wird eine Mail an dich gesendet, mit Info's zu:
- Key 2)
- Benutzerangaben 2)
- Timestamp 1)
- generierten Hardwarestamp 3)
- Mail 2)
- Randsysteminfo's 1)

1) rein zu statistischen Zwecken
2) zum validieren benutzen
3) damit kannst du feststellen ob die Installation auf dem gleichen Rechner erfolgt oder auf unterschiedlichen

3. Benutzer bekommt eine Antwort auf seine Mail mit nem "Aktivierungskey"
4. Benutzer gibt den Aktivierungskey im Programm ein und dann wird der Status des
Programms auf Aktiviert gesetzt, sowohl in der Software als auch in der DB.

Bei jedem Update kannst du dann abgleichen ob die Aktivierungsranddaten mit denen der DB übereinstimmen. Stimmt eine Angabe nicht wird der Status im Programm wieder zurückgesetzt bzw. kommt alle 5min eine Meldung oder was weiß ich. xD Deiner Phantasie sind keine Grenzen gesetzt.

gruß
Member: Alexss95
Alexss95 Oct 14, 2009 at 08:29:29 (UTC)
Goto Top
Danke, für die schnelle Antwort!

Das ist ja alles schön und gut, mir aber zu kompliziert und außerdem bin ich dann mit meinem VB-Latein am Ende!

Ist es nicht ganz simpel wie oben beschrieben zu lösen?
Member: H41mSh1C0R
H41mSh1C0R Oct 14, 2009 at 08:37:34 (UTC)
Goto Top
Das ist nicht die Bohne kompliziert, wenn du genau das machst so wie ich das beschrieben habe. Was musst du nun tun?:

- Suche dir ne Anleitung wie man z.B. HardwareIDs(Mainboard/CPU/HDD usw.) ermittelt mit VB
- Suche dir ne Anleitung wie man die Uhrzeit abfragt
- Suche dir ne Anleitung wie man ne Mail versenden kann

Wie du einen Key generierst weißt du mittlerweile, also:

1. generiere einen Key
2. bastel in dein Programm die Abfragen rein, und lass ne Mail versenden zum schluss
3. Bastel deinen ersten Keygenerator etwas um um einen Aktivierungskey zu erstellen(z.B. Input: Kundenmail + benutzen Key + Name --> Output: Aktivierungskey)
4. schicke diesen Aktivierungskey dem Empfänger
5. baue in deinem Programm eine Routine ein die den Status auf "aktiviert" setzt und die Benutzerdaten im Infobereich einträgt

Diese Vorgehensweise hat den Vorteil, das nur dann eine Aktivierung auf diesem Wege möglich ist, wenn die von dir vorgegebenen Randbedingungen erfüllt werden.

Möglichkeit 2:

1. Kunde fordert Key an mit (Kundenmail + benutzen Key + Name)
2. Du generierst aus diesen Sachen einen Key und sendest ihm den + Login für deine Webseite.
3. Dann trägst du die Randbedingungen + Key in deine DB.
4. Kunde installiert und am Ende gehts auf deine Webseite und du vergleichst die Eingegebenen Sachen mit deinen Eintragungen in der DB.

Sollte da was differieren --> *kawumm* "Key ungültig"
Member: Alexss95
Alexss95 Oct 14, 2009 at 08:45:01 (UTC)
Goto Top
OK!

Du hast recht, gar nicht so schwierig!

Also:

1. Lizenzschlüssel wird überprüft, wenn richtig dann:
2. E-Mail an mich mit Hardware-Infos und Schlüssel
3. Ich generiere dann einen zweiten Key, mit dem der User dann
das Proggi endgültig aktivieren kann.

So müsste gut funktionieren, Danke!

Gruß
Alexss95
Member: H41mSh1C0R
H41mSh1C0R Oct 14, 2009 at 08:53:21 (UTC)
Goto Top
Im Grunde ist jeder Validierungsprozess umgehbar, aber je ausgefeilter er wird und je mehr Abläufe von unterschiedlichen Stellen notwendig sind, desto schwerer hats die Gegenseite. ^^

Ablauf für deine DB:

1. Kunde bekommt Proggy
2. Kunde bekommt Key (den kann man übrigens noch als Alleinstellungskriterium in die Generierung des Aktivationkey mit einbeziehen)
3. Kunde trägt Key ein und am Ende wird ne Mail versendet mit (den Randdaten die bei der Installation eingegeben worden sind + Key + Ids + Stamps usw.)
4. Daraus wird nen Aktivierungskey generiert
5. Kunde trägt den Key ein und bei Erfolg werden die entsprechenden Schalter im Programm gesetzt
6. nun kannst du noch ein eMail schicken "Aktivierung erfolgreich"
7. gleiche alle zusammengetragenen Daten zusammen und vergleiche, treten irgendwo ungereihmtheiten auf --> *kawumm* "Installation Ungültig" oder was auch immer
Member: maretz
maretz Oct 14, 2009 at 12:30:49 (UTC)
Goto Top
Moin,

bei Punkt 3 schlägt z.B. McAfee zu und verbietet deinem Programm das direkte Versenden von Mails - päng!

Bei Punkt 3 schlägt der Datenschutz zu - da du die gesammelten Sys-Infos zur Auswertung, zur Lizenzkontrolle usw. verwendest (keine Zweckbindung!) -> päng!

Warum auch so kompliziert: Du übergibst einer PHP-Seite auf deinem Server den Key den der User zur Aktivierung eingegeben hat. Gleichzeitig liegt auf deinem Server in der DB eine Liste mit den gültigen Schlüsseln (oder ein Programm zur Errechnung der Schlüssel). Ist der Schlüssel gültig so gibt deine Seite einfach nen "Gültig" zurück - und deine DB speichert das Aktivierungsdatum. Liegt der Zeitraum zwischen 2 Aktivierungen unter Zeitraum X gibt es ein NOK zurück...

In deinem Programm brauchst du jetzt nurnoch dafür sorgen das bei der Aktivierung z.B. das OK mit dem Hash-Wert der Netzwerkkarten-MAC verschlüsselt wird und speicherst den Hash in ner Datei ab. Bei jedem Start machst du jetzt einfach eine Prüfung ob der Schlüssel noch mit dem in der Datei übereinstimmt.

Vorteil dabei: Es verlassen NIE persönliche Daten den Rechner des Anwenders...
Member: H41mSh1C0R
H41mSh1C0R Oct 14, 2009 at 13:36:31 (UTC)
Goto Top
Zitat von @maretz:
bei Punkt 3 schlägt z.B. McAfee zu und verbietet deinem Programm
das direkte Versenden von Mails - päng!

Das Programm versendet die Mail natürlich nicht selber sondern öffnet brav Outlook oder einen anderen Mailclient + Vorlage deiner Wahl und du darfst Sie versenden.

Zitat von @maretz:
Bei Punkt 3 schlägt der Datenschutz zu - da du die gesammelten
Sys-Infos zur Auswertung, zur Lizenzkontrolle usw. verwendest (keine
Zweckbindung!) -> päng!

Was hier nicht zur debatte stand, aber um dem genüge zu tun muss der Kunde natürlich einen "bestimmten" Haken setzen wo er damit einverstanden ist .

Zitat von @maretz:----
Vorteil dabei: Es verlassen NIE persönliche Daten den Rechner
des Anwenders...

Das ist ein echter Vorteil =). Aber aus der Sicht des Entwicklers sind solche Datensammlungen immer nett
.
Member: Alexss95
Alexss95 Oct 14, 2009 at 14:51:29 (UTC)
Goto Top
Genau!

Ich mache einfach einen Hinweis, dass ich Computerspezifische
Daten an mich sende und das diese aber nicht an dritte weitergegeben werden. Peng!

Und fertig.

Ich bin gerade am rumbasteln, sieht aber schon recht gut aus!

Ich melde mich dann nochmal, wenn ich so weit bin.

Gruß
Alexss95
Member: Alexss95
Alexss95 Oct 14, 2009 at 15:07:46 (UTC)
Goto Top
Also, ich habe das jetzt getestet und es gibt keine Fehler.

Fast keine Fehler: Immer wenn er den Befehl .Send ausführen soll (für die E-Mail) dann kommt folgende Meldung:

Vorgang abgebrochen (Ausnahme von HRESULT: 0x80004004 (E_ABORT))

Was kann ich jetzt machen?

Gruß
Alexss95
Member: H41mSh1C0R
H41mSh1C0R Oct 14, 2009 at 15:23:39 (UTC)
Goto Top
hmmm wie schon in dem anderen Thread, meine VB Zeit ist schon sehr lange her .

Code Snippet 1

    'Kontrolle ob Outlook schon offen, sonst mit Profil "#OFFLINE#" öffnen.  
    Dim oApp As Outlook.Application
    Set oApp = GetObject(, "Outlook.Application")  

    If Err.Number = 0 Then      ' Outlook schon offen  
        MsgBox "OL schon offen!"  
        Exit Sub
    Else                        ' Outlook noch zu öffnen  
        MsgBox "Öffne OL!"  
        Dim oSess As Outlook.NameSpace
        Dim oFld As Outlook.MAPIFolder
        Dim oExpl As Outlook.Explorer
     
        ' Logon  
        Set oApp = New Outlook.Application
        Set oSess = oApp.GetNamespace("mapi")  
        oSess.Logon "#OFFLINE#", , False, True  
     
        ' Ordner zur Anzeige auswählen  
        Set oFld = oSess.GetDefaultFolder(olFolderInbox)
        Set oExpl = oApp.Explorers.Add(oFld)
        oExpl.Display
    End If 

und weitergegoogelt.

Stichwort: MAPI

Code Snippet 2

MAPISession1.SignOn  					
MAPIMessages1.SessionID = MAPISession1.SessionID    	

Mit Hilfe von der Befehlszeile ‚MAPIMessages1.Compose’ wird nun eine neue Mail verfasst. Dazu gehören dann die Befehle ‚MAPIMessages1.RecipDisplayName = empfänger@mail.com’, sowie ‚ MAPIMessages1.MsgSubject = „Betreff’, welche den Text für die Betreffzeile festlegt und schlussendlich noch der Befehl ‚MAPIMessages1.MsgNoteText = „Nachrichtentext“’, mit dem dann der Text für die Mail definiert wird.

Schlussendlich kann dann durch den Befehl ‚MAPIMessages1.Send’ die Mail gesendet werden. Dazu muss allerdings Microsoft Outlook geöffnet sein und ein Benutzerkonto eingerichtet sein.

Ein kleines Beispiel soll schlussendlich noch zum besseren Verständnis dienen:


Private Sub Form_Load()
    MAPISession1.SignOn
    MAPIMessages1.SessionID = MAPISession1.SessionID
   
    MAPIMessages1.Compose
    MAPIMessages1.RecipDisplayName = “empfänger@mail.com”
    MAPIMessages1.MsgSubject = “Dies ist die Betreffzeile”
    MAPIMessages1.MsgNoteText = “Dies ist der Nachrichtentext”
    MAPIMessages1.ResolveName
    MAPIMessages1.Send
End Sub 

Natürlich können auch Dateianhänge mit Visual Basic verschickt werden. Dazu werden einfach noch folgende Zeilen Code eingefügt:
MAPIMessages1.AttachmentIndex = 0
MAPIMessages1.AttachmentPosition = 0
MAPIMessages1.AttachmentName = "Datei.doc"  
MAPIMessages1.AttachmentPathName = "C:\datei.doc"  

Ein Formular für die Eingabe der Daten -> OL öffnen -> und versenden =)

Nur am Rande:

Um es einfacher zugestalten wäre die eine oder andere Zeile Quelltext von deiner seite sinnvoll.