Błąd pustej referencji

Błąd pustej referencji
F7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Witam.
Napisałem aplkację generującą hasła i odkodowujące plik 7Zip z hasłem. Plik jest moja własnością.

Deklaracj tablic znaków

Kopiuj
#Region "Tablice"
    'Private Znak() As String = {"a", "A", "c", "C", "d", "D", "e", "E", "f", "F", "h", "H", "i", "I", "k", "K", "l", "L", "m", "M", "o", "O", "r", "R", "u", "U", "x", "X", "y", "Y", "Z", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "!", "#", "$", "%", "&", "(", ")", "*", "@", "^", "_", "<", ">"}
    'Private Znak() As String = {"E", "f", "F", "h", "H", "i", "I", "a", "A", "c", "C", "d", "D", "e", "k", "K", "l", "L", "m", "M", "o", "O", "r", "R", "u", "U", "x", "X", "y", "Y", "Z", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "!", "#", "$", "%", "&", "(", ")", "*", "@", "^", "_", "<", ">"}
    Private Znak() As String = {"F", "Z", "0", "a", "A", "c", "C", "!", "d", "D", "e", "E", "f", "F", "h", "H", "i", "I", "k", "K", "l", "L", "m", "M", "o", "O", "r", "R", "u", "U", "x", "X", "y", "Y", "Z", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "#", "$", "%", "&", "(", ")", "*", "@", "^", "_", "<", ">"}
#End Region

Uruchomenie procedury generowania haseł przyciskiem na formie

Kopiuj
    Private Sub bt_Odszukaj_Click(sender As Object, e As EventArgs) Handles bt_Odszukaj.Click
        lbl_Początek.Text = Now
        lbl_Początek.Refresh()
        CzasP = Now
        GeneratorHaseł4()
        MsgBox(AktualneHasło)
        Me.Close()
    End Sub
Kopiuj
Procedura generowania haseł
    Private Sub GeneratorHaseł4()
        lbl_Początek.Text = Now
        For z1 = 0 To 55
            For z2 = 0 To 55
                For z3 = 0 To 55
                    For z4 = 0 To 55

                        AktualneHasło = Znak(z1) & Znak(z2) & Znak(z3) & Znak(z4)
                        Dekompresja_AES256()
                        Licznik += 1
                        If Licznik Mod 10 = 0 Then
                            CzasK = Now
                            CzasPracy = DateDiff(DateInterval.Second, CzasP, CzasK)

                            lbl_Średnia.Text = Licznik / CzasPracy
                            lbl_Średnia.Refresh()

                            lbl_Info.Text = "Wykonano " & Licznik & " haseł"
                            lbl_Info.Refresh()
                        End If
                        If Licznik Mod 100 = 0 Then
                            lbl_Koniec.Text = Now
                            lbl_Koniec.Refresh()
                        End If
                        If Wynik Then Exit Sub

                    Next
                Next
            Next
        Next
    End Sub

Procedura odkodowania pliku 7Zip

Kopiuj
    Private Sub Dekompresja_AES256()
        Try
            Archiwum = New SevenZipArchive(t, AktualneHasło)
            Archiwum.ExtractToDirectory("C:\Users\Marek\Desktop\Test 7ZIP\bin\Debug\net6.0-windows\Praca\TestZip_22")
            Wynik = True
        Catch ex As Exception
        End Try
    End Sub

Problem polega na tym, że w zależności od zdefniowanej tablcy znaków program generuję błąd pustej referencji przy różnym, zle takim samym dla tablicy stanie licznika

Błąd_1.jpg

Stan licznika przy różnych tablicah
1
Licznik_1.jpg!
2
Licznik_2.jpg
3
Licznik_3.jpg

Generalnie procedura jest skuteczna i została sprawdzona na plikach dla których znałem hasło do 7Zip.

Z góry dziękuję za pomoc
Marek

hzmzp
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 741
1

1.Przeczytaj to i zastanów się czy ktoś będzie w stanie zrozumieć co się dzieje z tego co tu opisałeś
2.Wywala ci się zawsze w tym samym miejscu!
3.Nie działa skutecznie skoro masz z tym problem

MU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 104
0

Co to jest to t, pierwszy argument SevenZipArchive

Archiwum = New SevenZipArchive(t, Aktualne Hasło)

Albo ślepy jestem albo nie widzę

obscurity
  • Rejestracja: dni
  • Ostatnio: dni
0

Próba dekompresji ze złym hasłem po prostu prowadzi do różnych błędów, widocznie ten 7zip.dll nie jest najlepiej napisany ale myślę że możesz śmiało zignorować błąd i uznać że hasło nie pasuje.
Ten wyjątek jest nawet łapany więc po prostu wyłącz w IDE Ctrl+Shift+E pauzowanie przy złapanych wyjątkach

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.