Du bist nicht angemeldet.

[VB 2008] Serial - Key

Digot

VB - Paradisler

  • »Digot« ist der Autor dieses Themas

Beiträge: 356

Dabei seit: 17. September 2009

Hilfreich-Bewertungen: 14

  • Private Nachricht senden

1

Montag, 12. April 2010, 21:35

Serial - Key

Hi
Heute zeig ich euch, wie man einen Serial Schutz für Programme macht:

Als erstes erstellt ihr die Einstellung "Start" und setzt den Wert auf "true".
Dann erstellt ihr eine Form mit a) einer Textbox b) einem Button c) zwei Pictureboxen.
Zunächst ordnet ihr diese vier Elemente ungefähr in dieser Reihenfolge:

Dann stellt ihr die Sichtbarkeit von beiden Pictureboxen auf false und deaktiviert den Button.
Dann sucht euch ein Hackerl und ein X für die Kontrolle.
Dann gibt es vier Arten für die Kontrolle:
1.) es wird der Anfangs und Endbuchstabe kontrolliert

Visual Basic Quellcode

1
  Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged        If TextBox1.Text.StartsWith("a") And TextBox1.Text.EndsWith("b") Then            PictureBox1.Show()            Button1.Show()            PictureBox2.Hide()        Else : PictureBox2.Show()            Button1.Hide()            PictureBox1.Hide()        End If

2.) es wird der Text kontrolliert

Visual Basic Quellcode

1
  Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged        If TextBox1.Text="hallo" Then            PictureBox1.Show()            Button1.Show()            PictureBox2.Hide()        Else : PictureBox2.Show()            Button1.Hide()            PictureBox1.Hide()        End If

3.) es wird der Anfangsbuchstabe kontrolliert

Visual Basic Quellcode

1
  Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged        If TextBox1.Text.StartsWith("a") Then            PictureBox1.Show()            Button1.Show()            PictureBox2.Hide()        Else : PictureBox2.Show()            Button1.Hide()            PictureBox1.Hide()        End If

4.) es wird der Endbuchstabe kontrolliert

Visual Basic Quellcode

1
  Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged        If  TextBox1.Text.EndsWith("b") Then            PictureBox1.Show()            Button1.Show()            PictureBox2.Hide()        Else : PictureBox2.Show()            Button1.Hide()            PictureBox1.Hide()        End If

Dann brauchen wir das ganze für den Button:

1.) es wird der Anfangs und Endbuchstabe kontrolliert

Visual Basic Quellcode

1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        If TextBox1.Text.StartsWith("a") And TextBox1.Text.EndsWith("b") Then            PictureBox1.Show()            PictureBox2.Hide()My.settings.Start=false        Else : PictureBox2.Show()            Button1.Hide()            PictureBox1.Hide()        End If        

2.) es wird der Text kontrolliert

Visual Basic Quellcode

1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click	     If TextBox1.Text="hallo" Then            PictureBox1.Show()           My.settings.Start=false            PictureBox2.Hide()        Else : PictureBox2.Show()            Button1.Hide()            PictureBox1.Hide()        End If

3.) es wird der Anfangsbuchstabe kontrolliert

Visual Basic Quellcode

1
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        If TextBox1.Text.StartsWith("a") Then            PictureBox1.Show()            My.settings.Start=false            PictureBox2.Hide()        Else : PictureBox2.Show()            Button1.Hide()            PictureBox1.Hide()        End If

4.) es wird der Endbuchstabe kontrolliert

Visual Basic Quellcode

1
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        If  TextBox1.Text.EndsWith("b") Then            PictureBox1.Show()            My.settings.Start=false            PictureBox2.Hide()        Else : PictureBox2.Show()            Button1.Hide()            PictureBox1.Hide()        End If

My.Settings=false dient dazu, das wenn der Code richtig ist, diese Form nie wieder anzeigt.


Das war´s. Ich hoffe, ich konnte euch helfen.

lg Digot
Alle Rechtschreibfehler unterliegen der GPL und dürfen frei kopiert und modifiziert werden.
---
Jetzt neu:QuickUp!Dein gratis Tool für schnelles und bequemes Uploaden von Bildern
-----
Ihre Signatur ist auf dem neusten Stand.

Mangafreak1995

Anwendungsentwickler

  • »Mangafreak1995« ist männlich

Beiträge: 1 668

Dabei seit: 16. August 2009

Wohnort: /home/usr/

Hilfreich-Bewertungen: 175

  • Private Nachricht senden

2

Dienstag, 13. April 2010, 23:32

Bitte über Quellcode den Code nachtragen damit es lesbar ist

 Ich hab mir mal die Mühe gemacht

1.1

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    If TextBox1.Text.StartsWith("a") And TextBox1.Text.EndsWith("b") Then
        PictureBox1.Show()
        Button1.Show()
        PictureBox2.Hide()
    Else : PictureBox2.Show()
        Button1.Hide()
        PictureBox1.Hide()
    End If
End Sub

1.2

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
     If TextBox1.Text="hallo" Then
         PictureBox1.Show()
         Button1.Show()
         PictureBox2.Hide()
     Else : PictureBox2.Show()
         Button1.Hide()
         PictureBox1.Hide()
     End If
End Sub

1.3

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
     If TextBox1.Text.StartsWith("a") Then
         PictureBox1.Show()
         Button1.Show()
         PictureBox2.Hide()
     Else : PictureBox2.Show()
         Button1.Hide()
         PictureBox1.Hide()
     End If
End Sub

1.4

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
     If  TextBox1.Text.EndsWith("b") Then
         PictureBox1.Show()
         Button1.Show()
         PictureBox2.Hide()
     Else : PictureBox2.Show()
         Button1.Hide()
         PictureBox1.Hide()
     End If
End Sub

2.1

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If TextBox1.Text.StartsWith("a") And TextBox1.Text.EndsWith("b") Then
        PictureBox1.Show()
        PictureBox2.Hide()My.settings.Start=false
    Else : PictureBox2.Show()
       Button1.Hide()
       PictureBox1.Hide()
    End If
End Sub

2.2

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If TextBox1.Text="hallo" Then
      PictureBox1.Show()
      My.settings.Start=false
      PictureBox2.Hide()
    Else : PictureBox2.Show()
      Button1.Hide()
      PictureBox1.Hide()
    End If
End Sub

2.3

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If TextBox1.Text.StartsWith("a") Then
      PictureBox1.Show()
      My.settings.Start=false
      PictureBox2.Hide()
    Else : PictureBox2.Show()
      Button1.Hide()
      PictureBox1.Hide()
    End If
End Sub
2.4

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If  TextBox1.Text.EndsWith("b") Then
      PictureBox1.Show()
      My.settings.Start=false
      PictureBox2.Hide()
    Else : PictureBox2.Show()
      Button1.Hide()
      PictureBox1.Hide()
    End If
End Sub

hab das End Sub hinzugefügt und den Abstand nach links korrigiert (nicht notwendig)

 evtl Verbesserung

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Function CheckText(ByVal txt As String, ByVal setstart As Boolean) As Boolean
    Dim b As Boolean = TextBox1.Text = txt
    If b And setstart Then
        My.Settings.Start = False
    End If
    Return b
End Function

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    Dim b As Boolean = CheckText("hallo", False)
    Button1.Visible = b
    PictureBox1.Visible = b
    PictureBox2.Visible = Not (b)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If CheckText("hallo", True) Then
        ' was passiert dann ?
    End If
End Sub
Die Verbesserung verkürzt nur den geposteten Code


nur es wird eine Fehlermeldung geben dass der Sub Textbox1_Textchanged öfters als einmal mit den gleichen Signaturen vorhanden ist
wenn in Picturebox1 und Picturebox2 nur unterschiedliche Bilder sind und den Status angibt ob der Text korrekt ist sollte nur eine Picturebox verwendet werden und die Bilder dem Status entsprechen geladen werden (aus Datei oder Variable)

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Mangafreak1995« (13. April 2010, 23:47)


jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 206

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 397

  • Private Nachricht senden

3

Mittwoch, 14. April 2010, 13:05

naja, dass hat ja nicht sonderlich viel mit einem Serial Key zu tun, hinter einem Serial Key muss doch ein Algorithmus stecken...hier der einfachste dens wahrscheinlich gibt, nur zum veranschaulichen hab ich jetzt eigt. von der Caesar verschlüsselgung abgeguckt^^ ;)

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Dim Charset As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
Function CreateBlock(Start As Integer,offset As Integer)
  Dim oChar As Integer = Start
  Dim tmp As String = Chars(Start)
  For x As Integer = 0 To 3 ' Ein block 5 zeichen
    oChar = (oChar + Offset) Mod Charset.Length
    tmp &= Charset.Chars(oChar)
  Next
  Return tmp
End Function
Function CreateKey() As String
  Dim tmp As String = ""
  Dim rnd As New Random()
  For x As Integer = 0 To 4 ' 5 Blöcke
    Dim strt As Integer = Int(rnd.NextDouble() * Charset.Length)
    Dim offset As Integer = Int(rnd.NextDouble() * Charset.Length -1)
    tmp &= CreateBlock(strt,offset) & IIf(x < 4,"-","")
  Next
  Return tmp
End Function
Function CheckBlock(Block As String) As Boolean
  If Block.Length = 5 Then
    Dim offset As Integer = Charset.IndexOf(Block(1)) - Charset.IndexOf(Block(0))
    Dim oInt As Integer
    For x As Integer = 1 To 3
      Dim nOffset As Integer = Charset.IndexOf(Block(x))- Charset.IndexOf(Block(x+1))
      If nOffset <> offset Then
        Return True
      End If
    Next x
    Return True
  Else
    Return False
  End If
End Function
Function CheckKey(Key As String) As Boolean
  Dim splt() As String = Split(Key,"-")
  For x As Integer = 0 To splt.Length -1
    If CheckBlock(splt(x)) = False Then Return False
  Next
  Return True
End Function


habs nicht ausprobiert und bin mir deshalb auch nicht 100% sicher obs funzt...xD

der Aufruf sollte eigt so gehen:

Visual Basic Quellcode

1
2
3
4
5
6
7
8
'zum erzeugen eines Keys nach dem Algorithmus(natürlich ist Zufall dabei) und ausgabe in ner MsgBox
MessageBox.Show(CreateKey())
'zum überprüfen eines Keys
If CheckKey("A1234-B2145-CDGW-XDGA1-ABCDE") Then' der Key stimmt aufjedenfall nicht^^
  'mach was wenns richtig ist...
Else
  MessageBox.Show("",MsgBoxStyle.Criticial)
End If


Mfg jvbsl
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

Patschi

pkern.at

  • »Patschi« ist männlich

Beiträge: 165

Dabei seit: 31. Juli 2009

Wohnort: pkern.at / Österreich

  • Private Nachricht senden

4

Freitag, 11. Juni 2010, 16:15

Zwar etwas älter her, aber...

Quellcode

1
Der Name "Chars" wurde nicht deklariert.


Habe Visual Basic 2008!

Wie beheb ich das?
Meine neue Homepage: pkern.at
Wetter bei mir zu Haus:

jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 206

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 397

  • Private Nachricht senden

5

Freitag, 11. Juni 2010, 17:45

ich denke es sollte Charset heißen...aber den Code ansich hab ich aus dem Kopf geschrieben und nicht getestet, also sowiso keine gewähr :P
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

Patschi

pkern.at

  • »Patschi« ist männlich

Beiträge: 165

Dabei seit: 31. Juli 2009

Wohnort: pkern.at / Österreich

  • Private Nachricht senden

6

Freitag, 11. Juni 2010, 18:32

Danke!

Funktioniert einwandfrei.
Danke für den Code :D
Meine neue Homepage: pkern.at
Wetter bei mir zu Haus:

xWare Development

Registrierter Benutzer

  • »xWare Development« ist männlich

Beiträge: 25

Dabei seit: 26. Juni 2010

Wohnort: Solms

  • Private Nachricht senden

7

Samstag, 26. Juni 2010, 12:25

Verbesserungsfähig. Für jedes Programm einen neuen Serial zu machen ist sehr aufwendig. Wenn schon, ein Bot, der das erledigt.
HackerSystem v1:
Missionen - 50%
Design - 37%
Programme - 31%
Bugfixes - 80%

49,5%

jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 206

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 397

  • Private Nachricht senden

8

Samstag, 26. Juni 2010, 12:44

du weißt schon, dass(bei meinem Code) nicht jeder ein Serial für ein Programm ist, sondern viel mehr ein Algorithmus für ein Programm(dies hier ist natürlich ein sehr einfacher, ich habe schon durchaus komplexere erstellt...), somit muss kein Serial im Programm gespeichert werden, sondern viel mehr der Algorithmus zum überprüfen(dieser sollte jedoch auch Obfuscated werden)...
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

Florian

Tekker Deluxe ♥

  • »Florian« ist männlich

Beiträge: 150

Dabei seit: 14. Januar 2010

Wohnort: Lübeck

Frühere Benutzernamen: r3mote

Hilfreich-Bewertungen: 48

  • Private Nachricht senden

9

Sonntag, 27. Juni 2010, 07:19

Ich mache das ganz einfach per MySQL, Mailserver und einem TCP/IP Server ^^
Das ganze werde ich aber noch irgendwann vorstellen ;)

SenA

Registrierter Benutzer

Beiträge: 341

Dabei seit: 9. April 2010

  • Private Nachricht senden

10

Montag, 19. Juli 2010, 14:35

@jvbls

Das schwierige bei deinem Code kommt ja noch. Jetzt musst man Abfragen, ob irgendein Key aus diesem Algorithmus entsprungen sein könnte. Hast du dazu auch was^^ Denn dazu hab ich keine Idee

jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 206

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 397

  • Private Nachricht senden

11

Montag, 19. Juli 2010, 14:59

CheckKey....
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

SenA

Registrierter Benutzer

Beiträge: 341

Dabei seit: 9. April 2010

  • Private Nachricht senden

12

Montag, 19. Juli 2010, 15:22

Checkkey haste ja eingebaut. Der nimmt alles was 5zeichen und danach ein Trennzeichen hat also auch ("aaaaa-aaaaa-aaaaa-aaaaa-aaaaa")

jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 206

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 397

  • Private Nachricht senden

13

Montag, 19. Juli 2010, 15:25

ja... es gibt True raus wenn der Key richtig ist, andernfalls False...
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

SenA

Registrierter Benutzer

Beiträge: 341

Dabei seit: 9. April 2010

  • Private Nachricht senden

14

Montag, 19. Juli 2010, 15:31

Mach einfach mal ne Textbox rein und zwei Buttons.

Button1: TextBox1.Text = CreateKey()
Button2: If CheckKey(TextBox1.Text) = True Then
MsgBox("okay")
Else
MsgBox("fail")

End If


So und jetzt lass dir einen Generieren und veränder den beliebig, lass nur immer 5 deine Zeichen und das Trennzeichen. Du bekommst ein okay. Weißt du was ich meine? Das Gerüst zum prüfen fehlt hier gewaltig xD

jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 206

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 397

  • Private Nachricht senden

15

Montag, 19. Juli 2010, 15:48

also bitte, bei der Eingabe wirst du doch hoffentlich noch auf 5 zeichen pro Block kürzen und nur 5 Blöcke zulassen...also Gewaltig ist etwas ganz anderes...veränder nur einen der 5 Blöcke und es wird mit ziemlicher Sicherheit einen Fehler geben...
außerdem war das nur ein dahingeschriebener Code aus dem Kopf, der SerialKey ist auch nicht wirklich zu empfehlen, das Beispiel ist mit Caesar Methode und wirklich nicht sehr schwer zu knacken, es ist zu empfehlen einen anderen Algorithmus dafür zu schreiben...
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

SenA

Registrierter Benutzer

Beiträge: 341

Dabei seit: 9. April 2010

  • Private Nachricht senden

16

Montag, 19. Juli 2010, 18:10

Wenn die Eingabe folgendes enthält:
-5 Blöcke a 5 Zeichen, die durch "-" Getrennt sind, wird man zugelassen

Die Abfrage steht ja mit dem Algorithmus in keinerlei Verbindung.

jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 206

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 397

  • Private Nachricht senden

17

Montag, 19. Juli 2010, 18:50

die Abfrage steht sehr wohl in Verbindung mit dem Algorithmus...Check Key ruft CheckBlock auf und dort wird dieser geprüft, jedoch habe ich die Funktion nochmal angeguckt und korrigiert...(niemand kann von mir verlangen das auf anhieb und so aus dem Kopf 100% Korrekt zu machen...ich hab ja nicht den Thread eröffnet...)
hier das ganze korrigiert:

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
    Dim Charset As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    Function CreateBlock(ByVal Start As Integer, ByVal offset As Integer) As String
        Dim oChar As Integer = Start
        Dim tmp As String = Charset(Start)
        For x As Integer = 0 To 3 ' Ein block 5 zeichen
            oChar = (oChar + offset) Mod Charset.Length
            tmp &= Charset.Chars(oChar)
        Next
        Return tmp
    End Function
    Function CreateKey() As String
        Dim tmp As String = ""
        Dim rnd As New Random()
        Me.Text = ""
        For x As Integer = 0 To 4 ' 5 Blöcke
            Dim strt As Integer = CInt(rnd.NextDouble() * Charset.Length)
            Dim offset As Integer = CInt(rnd.NextDouble() * (Charset.Length - 1) + 1)
            Me.Text &= offset & ";"
            tmp &= CStr(CreateBlock(strt, offset)) & CStr(IIf(x < 4, "-", ""))
        Next
        Return tmp
    End Function
    Function CheckBlock(ByVal Block As String) As Boolean
        If Block.Length = 5 Then
            Dim offset As Integer = Charset.IndexOf(Block(1)) - Charset.IndexOf(Block(0))
            If offset < 0 Then offset = Charset.Length - offset
            offset = offset Mod Charset.Length
            For x As Integer = 1 To 3
                Dim nOffset As Integer = Charset.IndexOf(Block(x + 1)) - Charset.IndexOf(Block(x))
                If nOffset < 0 Then nOffset = Charset.Length - nOffset
                nOffset = nOffset Mod Charset.Length
                If nOffset <> offset AndAlso Charset.Length - nOffset <> offset Then
                    Return False
                End If
            Next x
            Return True
        Else
            Return False
        End If
    End Function
    Function CheckKey(ByVal Key As String) As Boolean
        Dim splt() As String = Split(Key, "-")
        For x As Integer = 0 To splt.Length - 1
            If CheckBlock(splt(x)) = False Then Return False
        Next
        Return True
    End Function
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

xtreme

Registrierter Benutzer

Beiträge: 3

Dabei seit: 22. August 2010

  • Private Nachricht senden

18

Dienstag, 31. August 2010, 19:06

hmm

Als erstes erstellt ihr die Einstellung "Start" und setzt den Wert auf "true".
was soll das heisen?

jvbsl

Noob

  • »jvbsl« ist männlich

Beiträge: 7 206

Dabei seit: 7. April 2010

Hilfreich-Bewertungen: 397

  • Private Nachricht senden

19

Mittwoch, 1. September 2010, 13:21

wie, wo, was? Könntest du bitte genauer erklären, was du meinst, evtl. auch eine Codestelle raus picken?!
Ich wollte auch mal ne total überflüssige Signatur:
---Leer---

gugi-zone.net

VB.NET & C# Programmierer

Beiträge: 1 506

Hilfreich-Bewertungen: 44

  • Private Nachricht senden

20

Mittwoch, 1. September 2010, 13:24

er meint beim 1. beitrag den anfang:

Zitat

Hi
Heute zeig ich euch, wie man einen Serial Schutz für Programme macht:

Als erstes erstellt ihr die Einstellung "Start" und setzt den Wert auf "true".
Gruß, Gugi :thumbup:

Social Bookmarks