Filehash rausfinden

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von xX-Nick-Xx.

    Filehash rausfinden

    Guten Abend zusammen, wir arbeiten derzeit an einem Programm für ein Spiel. Dieses Spiel: Farming Simulator 17 nutzt einen Filehash. wir haben aber bislang nicht raus finden können welchen.

    Kann man das Irgendwie erkennen?

    Der Filehash schaut so aus: d1aa0bbc11931b730a6947f1049953cd als Beispiel

    Gibt es ein Tool oder so was erkennt welche Hash Methode benutzt wurde?

    Danke im vorraus

    Hey,

    wieder super Infos. Filehash für? Für die Mods? Für die Updates? Für was denn? Frag dafür am besten im Forum vom Farming Simulator.
    Da werden mit Sicherheit ein paar Leute sein die das wissen und oder es steht in na Doku drin.

    Ist halt 128Bit... Kann MD5 sein oder irgendwas anderes von den unzähligen.
    en.wikipedia.org/wiki/List_of_hash_functions

    Ansonsten kann man ohne weitere Angaben wie wo was wieder nichts genaues sagen.


    :offtopic:
    Desweiteren würde ich dich bitten dich mal endlich ein wenig mehr auch für die anderen Leute zu interessieren und nicht sobald dein
    Problem gelöst ist das Thema als fertig zu markieren und dann stille walten zu lassen.
    Das hier ist ein FORUM da geht es darum das auch die Leute per Google/Forum suche einen Thread finden und dort nach einer Lösung suchen.
    Wenn dann aber wie in den meisten Fällen bei dir nur das Thema als Erledigt markiert ist ohne mal zu zeigen was denn nun richtig war oder
    wie genau du es gelöst hast ist das ziemlich unfair gegenüber allen die dir hier immer helfen.
    Also trage mal z.b. in deinem letzten Thread deine Lösung nach: Auf Webseite einloggen und datei downloaden mit Webclient
    Oder allgemein in deinen Threads mal bitte deine Lösung mit posten am Ende. Danke.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Dieser Base16-String ist 32 Zeichen lang. Jedes Zeichen encodiert 4 Bits. 32 * 4 = 128. Also 128 Bits.
    Guckt man sich diese Liste an und sucht nach "128": en.wikipedia.org/wiki/List_of_hash_functions
    Dann ist die wahrscheinlichste Option MD5.
    Wenn Du uns sagts, wo genau die Hashfunktion in diesem Spiel zum Tragen kommt, dann können wir vielleicht recherchieren, welche Hashfunktion verwendet wurde. Am Ergebnis der Hashfunktion kann man jedenfalls nicht erkennen, welche Hashfunktion es ist (abgesehen vom Betrachten der Länge natürlich).
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    xX-Nick-Xx schrieb:

    Filehash
    Bist Du darauf angewiesen, einen extern berechneten Hash zu verwenden und zu überprüfen
    oder
    ist das alles in Deinem Programm intern?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Der Hash ist für die Mods, genau. ich brauche den hash um zu vergleichen ob die mods schon vorhanden sind oder nicht.

    Also, ich möchte vergleichen ob der mod schon auf der Festplatte ist oder nicht. daher benötige ich den Filehash.
    diesen finde ich in einer XML im Savegame aber ich benötige den filehash um es vergleichen zu können mit der Datei
    Mfg

    Naja mit einem einfachen Google Aufruf findet man fast alles...
    dotnet-snippets.de/snippet/den…-einer-datei-ermitteln/77
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Den MD5 rausfinden habe ich auch schon geschafft, nur leider stimmt er nicht mit dem hash im Savegame überein.

    Filehash aus dem Programm zum beispiel: 7C04881877EE2FE3DD4561A14F823B76
    Filehash aus dem Savegame (Von der Gleichen Datei): 5b5513b32e90366bedff5621c54c3f75

    Mfg

    Naja du weißt ja auch nicht, ob sie den Hash mittels MD5 erstellt haben oder?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Nein, das weiß ich nicht :D ich habe was gefunden das den hash richtig anzeigt, nur hab ich da auch keine Ahnung wie er das macht.

    Habe diesen Code gefunden. bekomme ihn aber nicht übersetzt
    (Ich glaube es ist C++) (Code Converter bekommt ihn auch nicht übersetzt, bzw ich weiß nicht mal ob der das macht was ich suche :D :P ich seh aber im Code steht MD5)

    C-Quellcode

    1. private static string LS(string file)
    2. {
    3. byte[] array = File.ReadAllBytes(file);
    4. byte[] bytes = Encoding.UTF8.GetBytes(Path.GetFileNameWithoutExtension(file));
    5. Array.Resize<byte>(ref array, array.Length + bytes.Length);
    6. Array.Copy((Array) bytes, 0, (Array) array, array.Length - bytes.Length, bytes.Length);
    7. return string.Join(string.Empty, ((IEnumerable<byte>) new MD5Cng().ComputeHash(array)).Select<byte, string>((Func<byte, string>) (x => x.ToString("x2"))));
    8. }

    Edit// Nick sein Post entstand während ich meinen schrieb
    Hm,
    @Niko Ortner und ich haben dir beide diesen tollen Link gepostet: en.wikipedia.org/wiki/List_of_hash_functions
    Im Zweifel teste die 128Bit functions aus. Ganz einfaches try and error.

    Desweiteren ergab nun eine google suche nach : Farming simulator 17 mod hash
    direkt ein ergebnis zu: farmingmods2015.com/ls-hash-check-mod-v-1-15/

    Da mal kurz reingeschaut und es kommt diese Funktion hervor:
    Spoiler anzeigen

    C#-Quellcode

    1. private static string HashLS(string file)
    2. {
    3. byte[] array = File.ReadAllBytes(file);
    4. byte[] bytes = Encoding.UTF8.GetBytes(Path.GetFileNameWithoutExtension(file));
    5. Array.Resize(ref array, array.Length + bytes.Length);
    6. Array.Copy(bytes, 0, array, array.Length - bytes.Length, bytes.Length);
    7. return string.Join(string.Empty, from x in new MD5Cng().ComputeHash(array)
    8. select x.ToString("x2"));
    9. }



    übergeben wird einfach der pfad zur datei siehe:

    Spoiler anzeigen

    C#-Quellcode

    1. if (openzip.ShowDialog() == DialogResult.OK)
    2. {
    3. checkList.Enabled = false;
    4. dataLS.Rows.Clear();
    5. string[] fileNames = openzip.FileNames;
    6. foreach (string text in fileNames)
    7. {
    8. try
    9. {
    10. int num = dataLS.Rows.Add(new DataGridViewRow());
    11. FileInfo fileInfo = new FileInfo(text);
    12. dataLS.Rows[num].Cells["nomeFile"].Value = Path.GetFileName(text);
    13. dataLS.Rows[num].Cells["ls11Hash"].Value = HashLS(text);
    14. dataLS.Rows[num].Cells["size"].Value = fileInfo.Length.ToFileSize();
    15. label5.Text = "Listed:" + (num + 1) + " Mods";
    16. }
    17. catch (SecurityException ex)
    18. {
    19. MessageBox.Show("Security error. Please contact your administrator for details.\n\nError message: " + ex.Message + "\n\nDetails (send to Support):\n\n" + ex.StackTrace);
    20. }
    21. catch (Exception ex2)
    22. {
    23. MessageBox.Show("Cannot read: " + text.Substring(text.LastIndexOf('\\')) + ". You may not have permission to read the file, or it may be corrupt.\n\nReported error: " + ex2.Message);
    24. }
    25. }
    26. }
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

    xChRoNiKx schrieb:

    direkt ein ergebnis zu: farmingmods2015.com/ls-hash-check-mod-v-1-15/


    Das hab ich auch schon gefunden.
    Ah okay, kenne mich mit C# nicht auch... Blick da noch nicht so mit den Klammern durch :D

    EDIT: Ich habe jetzt alles soweit hinbekommen, nur bei dieser Zeile komme ich nicht weiter...

    VB.NET-Quellcode

    1. Return String.Join(String.Empty, from, x, in, (New MD5Cng + ComputeHash(array)), select, x.ToString("x2"))


    Fehlerliste:
    Spoiler anzeigen
    Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
    Fehler BC30201 Ausdruck erwartet. test2 C:\Users\nico9\source\repos\test2\test2\Form1.vb 97 Aktiv
    Fehler BC30201 Ausdruck erwartet. test2 C:\Users\nico9\source\repos\test2\test2\Form1.vb 97 Aktiv
    Fehler BC30451 "from" wurde nicht deklariert. Aufgrund der Schutzstufe ist unter Umständen kein Zugriff möglich. test2 C:\Users\nico9\source\repos\test2\test2\Form1.vb 97 Aktiv
    Fehler BC30451 "x" wurde nicht deklariert. Aufgrund der Schutzstufe ist unter Umständen kein Zugriff möglich. test2 C:\Users\nico9\source\repos\test2\test2\Form1.vb 97 Aktiv
    Fehler BC30451 "ComputeHash" wurde nicht deklariert. Aufgrund der Schutzstufe ist unter Umständen kein Zugriff möglich. test2 C:\Users\nico9\source\repos\test2\test2\Form1.vb 97 Aktiv
    Fehler BC30451 "x" wurde nicht deklariert. Aufgrund der Schutzstufe ist unter Umständen kein Zugriff möglich. test2 C:\Users\nico9\source\repos\test2\test2\Form1.vb 97 Aktiv





    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „xX-Nick-Xx“ ()

    Ist der von dir oben beschrieben Code.

    VB.NET-Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Imports System.IO
    4. Imports System.Text
    5. Imports System.Windows.Forms
    6. Imports System.Security.Cryptography

    VB.NET-Quellcode

    1. Private Function HashLS(ByVal filepath As String) As String
    2. Dim arr As Byte() = File.ReadAllBytes(filepath)
    3. Dim bytes As Byte() = Encoding.UTF8.GetBytes(Path.GetFileNameWithoutExtension(filepath))
    4. Array.Resize(arr, arr.Length + bytes.Length)
    5. Array.Copy(bytes, 0, arr, arr.Length - bytes.Length, bytes.Length)
    6. Return String.Join(String.Empty, New MD5Cng().ComputeHash(arr).Select(Function(x) x.ToString("x2")))
    7. End Function


    Freundliche Grüsse

    exc-jdbi