IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Člen
Člen
Avatar
Člen:9.8.2014 14:49

Ahojte :)
Potrebujem pomoc s programom. Ide o program, ktory vypocita MD5 hash vybrateho suboru a nasledne ho porovna s databazou (jednoduchy "antivirak") a ked sa najde zhoda tak ho bud vymaze alebo upozorni pouzivatela.
Moj kod:

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

    Private Sub Panel1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint

    End Sub

    Private Sub TextBox1_Click(sender As Object, e As System.EventArgs) Handles TextBox1.Click
        'kliknutie na textove pole na vyber suboru (textbox1)
        'zobrazenie okna na výber súboru
        OpenFileDialog1.ShowDialog()
    End Sub

    Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged

    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        'kliknutie na tlacidlo spustenia kontroly suboru (button1)
        'kontrola hodnoty textbox-u1
        If Not My.Computer.FileSystem.FileExists(TextBox1.Text) Then 'ak subor neexistuje
            MsgBox("Zadaný súbor neexistuje", MsgBoxStyle.Exclamation, "Chyba")
        Else 'ak subor existuje
            'kontrola suboru
            'vypocitanie hashu suboru
            Dim subor As String = TextBox1.Text
            Dim hashsuboru As String = vypocitajhash(subor)
            'ak je hash v "databaze"
            If My.Application.Info.DirectoryPath & "\databaza.txt".Contains(hashsuboru) Then
                MsgBox("Nájdená hrozba")
            End If
        End If
    End Sub

    Private Sub OpenFileDialog1_FileOk(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
        'potvrdenie suboru v otvaraciom dialogu
        TextBox1.Text = OpenFileDialog1.FileName
    End Sub

    Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
        'ukoncenie programu
        Me.Close()
    End Sub

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

    End Sub
    'funkcia na vypocet hashu
    Function vypocitajhash(ByVal filePath As String)
        Dim md5 As MD5CryptoServiceProvider = New MD5CryptoServiceProvider
        Dim f As FileStream = New FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)
        f = New FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)
        md5.ComputeHash(f)
        f.Close()
        Dim hash As Byte() = md5.Hash
        Dim buff As StringBuilder = New StringBuilder
        Dim hashByte As Byte
        For Each hashByte In hash
            buff.Append(String.Format("{0:X2}", hashByte))
        Next
        Dim md5string As String
        md5string = buff.ToString()
        Return md5string
    End Function
End Class

Vypise mi to chybu

Conversion from string "C:\Users\PC\documents\visual stu" to type 'Boolean' is not valid.

v riadku

If My.Application.Info.DirectoryPath & "\databaza.txt".Contains(hashsuboru) Then
MsgBox("Nájdená hrozba")
End If

Dik za pomoc ;)

Odpovědět
9.8.2014 14:49
...
Avatar
Odpovídá na Člen
Michal Žůrek - misaz:9.8.2014 15:02

protože

My.Application­.Info.Directo­ryPath je string
"\databaza.txt"­.Contains(hashsu­boru) je boolean a ty nejde spojit.přesněji jde, ale ne v tomto případě.

ten pravý operand od & ti to nehledá v zadaném souboru ale v uvedeném stringu, což je blbost, pročti si zdejíš tutoriály k práci se soubory, řešení najdeš v http://www.itnetwork.cz/…-soubory-txt

 
Nahoru Odpovědět
9.8.2014 15:02
Avatar
Člen
Člen
Avatar
Člen:9.8.2014 15:18

Misaz thx za radu ale nakoniec som to poriesil inak... Vytvoril som listbox v ktorom su hashe (databaza) a ked listbox obsahuje hash kontrolovaneho suboru tak vypise oznam

If databaza.Items.Contains(hashsuboru) Then
                MsgBox("Nájdená hrozba")
            End If
Akceptované řešení
+20 Zkušeností
Řešení problému
Nahoru Odpovědět
9.8.2014 15:18
...
Avatar
Odpovídá na Člen
Michal Žůrek - misaz:9.8.2014 16:27

příště použij talčítko odpovědět aby se mi to označilo. Jinak tento postup ti nebude stačit v okamžiku, kdy hashů budeš mít hodně, pak se ti to nevejde do RAM, nauč se pracovat se skutečnou databázi.

 
Nahoru Odpovědět
9.8.2014 16:27
Avatar
Člen
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
Člen:9.8.2014 16:32

To mas pravdu... a asi sa zacnem ucit pracovat s databazou ;)

Nahoru Odpovědět
9.8.2014 16:32
...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.