Προς το περιεχόμενο

Visual Basic ερώτηση


SpirosLouis

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

 

 

Έχω κάνει ένα form το form1. Έχω βάλει π.χ. να λέει όνομα και επώνυμο (δηλαδή σαν login) και από κάτω ένα κουμπί επιβαιβέωσης που σε οδηγεί σε ένα δευτερο form.

 

Ας μιλήσουμε με κώδικες:(κώδικας από Button2-κουμπί επιβαιβέωσης)

>If TextBox1.Text = "s" And TextBox2.Text = "r" Then
           Form2.Show()
           Me.Close()
       Else
           MsgBox("Δεν είναι έγκυρο! Δοκιμάστε ξανά", MsgBoxStyle.Exclamation, "Error")
       End If
   End Sub

 

Εγώ όμως θέλω: Να μπορεί να έχει 2 και περισσότερες επιλογές στο textbox 1 και 2(δηλαδή και άμα πατήσει "a" να μπορεί να έχει πρόσβαση στο δεύτερο form(form2)).

Επίσεις αντιμετωπίζω το εξής πρόβλημα: Το παράθυρο, και έτσι, αντί να κλείσει μόνο αυτό και να ανοίξει το 2ο(form2) κλείνουν όλα.Άμα αφαιρέσω το Me.Close() τότε ανοίγει το form2 αλλά μένει και το form1.

 

Ευχαριστώ πολύ.

Δημοσ.
Καλησπέρα,

 

 

Έχω κάνει ένα form το form1. Έχω βάλει π.χ. να λέει όνομα και επώνυμο (δηλαδή σαν login) και από κάτω ένα κουμπί επιβαιβέωσης που σε οδηγεί σε ένα δευτερο form.

 

Ας μιλήσουμε με κώδικες:(κώδικας από Button2-κουμπί επιβαιβέωσης)

>If TextBox1.Text = "s" And TextBox2.Text = "r" Then
           Form2.Show()
           Me.Close()
       Else
           MsgBox("Δεν είναι έγκυρο! Δοκιμάστε ξανά", MsgBoxStyle.Exclamation, "Error")
       End If
   End Sub

 

Εγώ όμως θέλω: Να μπορεί να έχει 2 και περισσότερες επιλογές στο textbox 1 και 2(δηλαδή και άμα πατήσει "a" να μπορεί να έχει πρόσβαση στο δεύτερο form(form2)).

Επίσεις αντιμετωπίζω το εξής πρόβλημα: Το παράθυρο, και έτσι, αντί να κλείσει μόνο αυτό και να ανοίξει το 2ο(form2) κλείνουν όλα.Άμα αφαιρέσω το Me.Close() τότε ανοίγει το form2 αλλά μένει και το form1.

 

Ευχαριστώ πολύ.

μην χρησιμοποιήσεις το Me.Close() αλλά το Me.Hide()

>
If TextBox1.Text = "user1" And TextBox2.Text = "pass1" Then
           Form2.Show()
           Me.Hide()
       ElseIf TextBox1.Text = "user2" And TextBox2.Text = "pass2" Then
           Form2.Show()
           Me.Hide()
       Else
           MsgBox("Δεν είναι έγκυρο! Δοκιμάστε ξανά", MsgBoxStyle.Exclamation, "Error")
       End If

 

από άποψη ασφαλείας αυτό που κάνει είναι τελείως λάθος. αυτό συμβαίνει επειδή με cracking τεχνικές μπορούν να εντοπιστούν τα Strings που είναι αποθηκευμένα μέσα στα exe.

 

ο σωστός τόπος να γίνει είναι χρησιμοποιώντας τεχνικές Hash όπως η

SHA1.

 

 

 

χρειάζεσαι τις βιβλιοθήκεςεϛ:

>
Imports System.Security.Cryptography
Imports System.Text.Encoding
Imports System.Text

 

και τον παρακάτω κώδικα.

 

>
Private Function BytesToHex(ByVal bytes() As Byte) As String
       Dim hex As New StringBuilder
       For n As Integer = 0 To bytes.Length - 1
           hex.AppendFormat("{0:X2}", bytes(n))
       Next
       Return hex.ToString
   End Function

   Private Function SH1Encode(ByVal input As String) As String
       Dim sh1 As SHA1

       sh1 = SHA1.Create()
       Return BytesToHex(sh1.ComputeHash(UTF8.GetBytes(input)))
   End Function

 

>
If TextBox1.Text = "user1" And SH1Encode(TextBox2.Text) = "F0578F1E7174B1A41C4EA8C6E17F7A8A3B88C92A" Then
           Form2.Show()
           Me.Hide()
       ElseIf TextBox1.Text = "user2" And SH1Encode(TextBox2.Text) = "8BE52126A6FDE450A7162A3651D589BB51E9579D" Then
           Form2.Show()
           Me.Hide()
       Else
           MsgBox("Δεν είναι έγκυρο! Δοκιμάστε ξανά", MsgBoxStyle.Exclamation, "Error")
       End If

 

όπου το pass1 μετατρέπετε σε F0578F1E7174B1A41C4EA8C6E17F7A8A3B88C92A και το passw2 σε 8BE52126A6FDE450A7162A3651D589BB51E9579D

 

Έτσι ένας που θέλει να σπάσει το πρόγραμμα θα βρει το F0578F1E7174B1A41C4EA8C6E17F7A8A3B88C92A αλλά δεν θα μπορεί να καταλάβει ότι αντιστοιχεί στο pass1.

 

 

παρακάτω είναι ολόκληρο το αρχείο VB

 

 

>Imports System.Security.Cryptography
Imports System.Text.Encoding
Imports System.Text
Imports System.IO
Public Class Form1

   Private Function BytesToHex(ByVal bytes() As Byte) As String
       Dim hex As New StringBuilder
       For n As Integer = 0 To bytes.Length - 1
           hex.AppendFormat("{0:X2}", bytes(n))
       Next
       Return hex.ToString
   End Function

   Private Function SH1Encode(ByVal input As String) As String
       Dim sh1 As SHA1

       sh1 = SHA1.Create()
       Return BytesToHex(sh1.ComputeHash(UTF8.GetBytes(input)))
   End Function

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       If TextBox1.Text = "user1" And TextBox2.Text = "pass1" Then
           Form2.Show()
           Me.Hide()
       ElseIf TextBox1.Text = "user2" And TextBox2.Text = "pass2" Then
           Form2.Show()
           Me.Hide()
       Else
           MsgBox("Δεν είναι έγκυρο! Δοκιμάστε ξανά", MsgBoxStyle.Exclamation, "Error")
       End If


       TextBox2.Text = SH1Encode(TextBox1.Text)


       If SH1Encode(TextBox1.Text) = SH1Encode("a") Then
           MsgBox("OK", MsgBoxStyle.Exclamation, "Error")
       End If

   End Sub
   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       If TextBox1.Text = "user1" And SH1Encode(TextBox2.Text) = "F0578F1E7174B1A41C4EA8C6E17F7A8A3B88C92A" Then
           Form2.Show()
           Me.Hide()
       ElseIf TextBox1.Text = "user2" And SH1Encode(TextBox2.Text) = "8BE52126A6FDE450A7162A3651D589BB51E9579D" Then
           Form2.Show()
           Me.Hide()
       Else
           MsgBox("Δεν είναι έγκυρο! Δοκιμάστε ξανά", MsgBoxStyle.Exclamation, "Error")
       End If
   End Sub

   Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
       TextBox3.Text = SH1Encode(TextBox3.Text)
   End Sub
End Class

 

Δημοσ.

reflected

>Public Sub New()
       Me.InitializeComponent
       AddHandler Me.button1.Click, Function 
           Dim f As Form
           Select Case Me.textBox1.Text.ToLower
               Case "admin"
                   If (Me.textBox2.Text = "1234") Then
                       f = New Form { _
                           .Text = "Admin Form" _
                       }
                       AddHandler f.HandleDestroyed, Function 
                           MyBase.Show
                       End Function
                       MyBase.Hide
                       f.ShowDialog
                   End If
                   Return
               Case "mitsos"
                   If (Me.textBox2.Text = "1234") Then
                       f = New Form { _
                           .Text = "Mitsos Form" _
                       }
                       AddHandler f.HandleDestroyed, Function 
                           MyBase.Show
                       End Function
                       MyBase.Hide
                       f.ShowDialog
                   End If
                   Return
           End Select
           MessageBox.Show("lathos user!!!")
       End Function
   End Sub

orig

 

>namespace oeo
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
           button1.Click += delegate
           {
               switch (textBox1.Text.ToLower())
               {
                   case "admin":
                       {
                           if (textBox2.Text != "1234") break;
                           var f = new Form { Text = "Admin Form" };
                           f.HandleDestroyed += delegate { this.Show(); };
                           this.Hide();
                           f.ShowDialog();

                       } break;
                   case "mitsos":
                       {
                           if (textBox2.Text != "1234") break;
                           var f = new Form { Text = "Mitsos Form" };
                           f.HandleDestroyed += delegate { this.Show(); };
                           this.Hide();
                           f.ShowDialog();
                       } break;
                   default:
                       MessageBox.Show("lathos user!!!");
                       break;
               }
           };
       }
   }
}

 

 

Αν καταλαβα καλα.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...