| die letzten Änderungen * Seitenstruktur * Stichwortsuche :


logo_puschin.jpg

Startseite

Knowledge base



Kontakt

Impressum

Knowledge base - C++

Knowledge base

5 Benutzer online Druckversion




zurück



C++
Dateien in Verzeichnissen auf md5-Hash prüfen

Achtung: Funktioniert nicht auf 64bit-Systemen!

Hier gibt es eine neue Version:
http://hashlib2plus.sourceforge.net/

compile.sh :

# g++ md5.cpp md5wrapper.cpp hashy.cpp -o hashy



hashy.cpp :

#include <iostream>     // cout
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <iostream>
#include <string>
#include "md5wrapper.h"
#include <cstdio>
#include <stdio.h>
#include <stdlib.h>

using namespace std;
void list_directory(char* path, char* GESUCHTER_HASH);
md5wrapper *md5;

// char* GESUCHTER_HASH = "adc10c8152e1d3d2f3482f5c31bc5004";

int main(int argc, char **argv) {

//    char* dir_path = (argc>1) ? *++argv : "." ;
//    char* dir_path = "/";

    if (argc < 3) {
        printf("\n");
        printf("  hashy [debug|HASH] [LAUFWERKSBUCHSTABE]\n");
        printf("  -----------------------------------------------------------\n");
        printf("\n");
        printf("  Beispiel\n");
        printf("  ========\n\n");
        printf("  hashy 2e0b152ed60de2431dfc0c436363385e c:\n\n");
        return 0;
    }

    char* dir_path = argv[2];
    char* GESUCHTER_HASH = argv[1];

    list_directory(dir_path, GESUCHTER_HASH);
    return 0;
}

void list_directory(char* path, char* GESUCHTER_HASH) {

    DIR *Verzeichnis;
    char buf[1024];
    char tmp[1024];
    int Dateityp;
    struct dirent *VerzEintrag;
    struct stat Status;

    Verzeichnis = opendir(path);

    // Konnte das Verzeichnis geoeffnet werden?
    //
    if (Verzeichnis == NULL) { return; }
    VerzEintrag = readdir(Verzeichnis);


    while ( VerzEintrag != NULL ) {

        // Handelt es sich um ein bestimmtes Verzeichnis welches wir ueberspringen?
        //
        if (strcmp ("..", VerzEintrag->d_name) == 0 || strcmp (".", VerzEintrag->d_name) == 0 || strcmp ("dev", VerzEintrag->d_name) == 0) {
                VerzEintrag = readdir(Verzeichnis);
                continue;
        }

        // Den neuen Pfad basteln
        //
        sprintf (buf, "%s/%s", path, VerzEintrag->d_name);
        //printf("DEBUG => %s\n", buf);

        // Typ rausbekommen
        //
      stat(buf, &Status);
        Dateityp = Status.st_mode & S_IFMT;

        if (Dateityp == S_IFDIR) {
                //printf("VERZEICHNIS gefunden => %s | %d\n", buf, Status.st_rdev);
                list_directory(buf, GESUCHTER_HASH);
        }
        else if (Dateityp == S_IFREG) {
                printf("%s", buf);
                //printf(".");

                // Jetzt kann ich mit der Datei tolle Sachen machen
                //
                md5 = new md5wrapper();

                string hash;
                hash = md5->getHashFromFile(buf);

//              if (argc == 3) {
//              }

                if (hash == GESUCHTER_HASH) {
                        printf("\n");
                        printf("  TREFFER!\n");
                        printf("  ===> Der Hash %s wurde gefunden ! <===\n", GESUCHTER_HASH, buf);
                        printf("  ===> Dateiname ist %s <===\n", buf);
                        printf("\n");
                        return;
                }

                if (!strcmp(GESUCHTER_HASH, "debug")) {
                        printf(" ==> ");
                        std::cout << hash << endl;
                }
                else
                {
                        printf("\n");
                }

        }
        VerzEintrag = readdir(Verzeichnis);
    }
    closedir(Verzeichnis);
}


zurück



Knowledge base wurde zuletzt bearbeitet am 12.07.13 durch Frank

www.puschin.de
login

<body bgcolor='#FFFFFF' link='#000000' vlink='#000000' alink='#000000' text='#000000'><font face='Verdana' size='2'><strong>www.puschin.de</strong><br>Die Webseite http://www.puschin.de bietet eine interessante Webseite zu vielen Themen aus dem Bereich Linux und Windows. Man findet hier Tipps und Tricks zu cms php apache postfix openxchange tomcat windows linux firewall <br><br><font face='Verdana' size='2'><li><a href='cms.php?print=&aktion=thema_anzeigen&menue_id=191'>Startseite</a><font face='Verdana' size='2'><li><a href='cms.php?print=&aktion=thema_anzeigen&menue_id=63'>Knowledge base</a><font face='Verdana' size='2'><li><a href='cms.php?print=&aktion=thema_anzeigen&menue_id=57'>Kontakt</a><font face='Verdana' size='2'><li><a href='cms.php?print=&aktion=thema_anzeigen&menue_id=9'>Impressum</a></body>