• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

md5sums von Paketen überprüfen

theclaw

Doofmannsgehilfe
Themenstarter #1
Hi :)

Hab ein kleines PHP script geschrieben, das schaut, ob die md5sums von den Dateien in den Paketen mit denen auf der Festplatte übereinstimmen. Hab sowas nirgends gefunden, und denke dass das nützlich sein könnte. naja viel spaß damit.. ciao. theclaw

Code:
#!/usr/local/bin/php
<?php

// MD5-Checker
// ------------------
// 
// Programm schaut, ob die in dem +CONTENTS-File angegebenen MD5-Sums
// mit denen von der Festplatte übereinstimmen, und gibt ggf. falls dies
// nicht der Fall sein soll.
//
// (c) 2003 Johannes Bittner

$dir = "/var/db/pkg"; // Verzeichnis der Paketdatenbank.
$d = dir($dir);
$ln = NULL;
$dir_pkg = NULL;
$relfile = NULL;
$md5_pkg = NULL;
$md5_orig = NULL;
    
$cwd_found = 0;

for($i = 0; $entry = $d->read(); $i++)
{ 
  if(($i >= 2) && $entry != "pkgdb.db")
  {
    $relpath = "$dir/$entry/+CONTENTS"; // Pfad zu der Contents Datei.
    
    
    $fd = fopen($relpath, "r"); // Datei öffnen.
  
    while(!feof($fd))
    {
      $buffer = fgets($fd, 1024);
      
      
      if(preg_match("/^\@cwd .*/", $buffer) && $cwd_found == 0)
      {
        $dir_pkg = substr($buffer, 5);
        $cwd_found == 1;
      }

      if(preg_match("/^\@comment MD5.*/", $buffer) && file_exists(chop($relfile)))
      {
        $md5_pkg = substr($buffer, 13);

        if((chop($md5_pkg) != $md5_orig) && !is_link(chop($relfile)))
        {
          printf("ERR Pkg: $entry File: ".chop($relfile)." Pkg: ".chop($md5_pkg)." Orig: $md5_orig \n");
        }
      }

      if($buffer[0] != '@' && $buffer[0] != '+')
      {
        $relfile = chop($dir_pkg)."/$buffer";
        if(file_exists(chop($relfile)))
        {
          if(!is_link(chop($relfile)))
            $md5_orig = md5_file(chop($relfile));
        }

      }

    }
    fclose($fd);

    $cwd_found = 0;
  }
}

?>