<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>YourHelpCenter.de &#187; MySQL</title>
	<atom:link href="http://www.yourhelpcenter.de/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yourhelpcenter.de</link>
	<description>Hilfe &#38; Support für IT Probleme</description>
	<lastBuildDate>Fri, 05 Feb 2010 20:46:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>mySQL: Doppelte IDs auflisten / Doppelte Einträge finden</title>
		<link>http://www.yourhelpcenter.de/2009/11/mysql-doppelte-ids-auflisten-doppelte-eintrage-finden/</link>
		<comments>http://www.yourhelpcenter.de/2009/11/mysql-doppelte-ids-auflisten-doppelte-eintrage-finden/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 09:32:14 +0000</pubDate>
		<dc:creator>Katrin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[duplicate]]></category>
		<category><![CDATA[Duplikate]]></category>
		<category><![CDATA[DUPs]]></category>
		<category><![CDATA[Fields]]></category>
		<category><![CDATA[IDs]]></category>

		<guid isPermaLink="false">http://www.yourhelpcenter.de/?p=718</guid>
		<description><![CDATA[Um in mySQL doppelte Einträge (Feldinhalte) aufzulisten, hilft Ihnen das folgende SQL Statement:
SELECT id FROM muster m WHERE (
  SELECT count(*) FROM muster WHERE id = m.id
) >1
In diesem Beispiel werden alle IDs aus der Tabelle &#8220;muster&#8221; aufgelistet, die doppelt vorhanden sind.
Wenn Sie Ihre eigene Tabelle eintragen, achten Sie bitte darauf, beide Namen anzupassen.
]]></description>
			<content:encoded><![CDATA[<p>Um in mySQL doppelte Einträge (Feldinhalte) aufzulisten, hilft Ihnen das folgende SQL Statement:</p>
<p><code>SELECT id FROM muster m WHERE (<br />
  SELECT count(*) FROM muster WHERE id = m.id<br />
) >1</code></p>
<p>In diesem Beispiel werden alle IDs aus der Tabelle &#8220;muster&#8221; aufgelistet, die doppelt vorhanden sind.</p>
<p>Wenn Sie Ihre eigene Tabelle eintragen, achten Sie bitte darauf, <em>beide</em> Namen anzupassen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourhelpcenter.de/2009/11/mysql-doppelte-ids-auflisten-doppelte-eintrage-finden/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>mySQL: Zeilen aus verbundenen Tabellen löschen</title>
		<link>http://www.yourhelpcenter.de/2009/08/mysql-zeilen-aus-verbundenen-tabellen-loschen/</link>
		<comments>http://www.yourhelpcenter.de/2009/08/mysql-zeilen-aus-verbundenen-tabellen-loschen/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 05:00:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Anweisungen]]></category>
		<category><![CDATA[DEL]]></category>
		<category><![CDATA[delete]]></category>
		<category><![CDATA[join]]></category>
		<category><![CDATA[linked]]></category>
		<category><![CDATA[löschen]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Tabellen]]></category>
		<category><![CDATA[tables]]></category>
		<category><![CDATA[verbundene]]></category>
		<category><![CDATA[verknüpfte]]></category>

		<guid isPermaLink="false">http://www.yourhelpcenter.de/?p=437</guid>
		<description><![CDATA[Um Daten (Zeilen) aus Tabellen effektiv zu löschen, dürfen Sie die 1 MB Grenze (Standardwert der Systemvariablen max_allowed_packet) nicht überschreiten.
Bei komplexen DELETE Anweisungen ist das aber schnell der Fall.
Die Lösung ist dann nur die Zerlegeung der DELETE Statements in kleinere Protionen (notfalls Einzelanweidungen).
Am schnellsten läuft ein DELETE Befehl, wenn nur 100 bis 1000 related_column-Werte pro [...]]]></description>
			<content:encoded><![CDATA[<p>Um Daten (Zeilen) aus Tabellen effektiv zu löschen, dürfen Sie die 1 MB Grenze (Standardwert der Systemvariablen max_allowed_packet) nicht überschreiten.<br />
Bei komplexen DELETE Anweisungen ist das aber schnell der Fall.</p>
<p>Die Lösung ist dann nur die Zerlegeung der DELETE Statements in kleinere Protionen (notfalls Einzelanweidungen).<br />
Am schnellsten läuft ein DELETE Befehl, wenn nur 100 bis 1000 related_column-Werte pro (indizierter) Anweisung anstehen.</p>
<p>Hat die &#8220;related_column&#8221; (Feld für die Verbindung der Tabellen) keinen Index, ist die Geschwindigkeit von der Anzahl der Argumente der IN-Klausel unabhängig.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourhelpcenter.de/2009/08/mysql-zeilen-aus-verbundenen-tabellen-loschen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sicherheit: MD5 Hash decodieren / entschlüsseln (16 stelligen Hash)</title>
		<link>http://www.yourhelpcenter.de/2009/07/sicherheit-md5-hash-decodieren-cracken-16-stelligen-hash/</link>
		<comments>http://www.yourhelpcenter.de/2009/07/sicherheit-md5-hash-decodieren-cracken-16-stelligen-hash/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 16:59:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Anleitungen]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[berechnen]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[crack]]></category>
		<category><![CDATA[decodieren]]></category>
		<category><![CDATA[entschlüsseln]]></category>
		<category><![CDATA[knacken]]></category>
		<category><![CDATA[md5]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[passwort]]></category>
		<category><![CDATA[rückrechnen]]></category>
		<category><![CDATA[verschlüsseln]]></category>
		<category><![CDATA[zurück]]></category>

		<guid isPermaLink="false">http://www.yourhelpcenter.de/?p=433</guid>
		<description><![CDATA[Der folgende C Source kann ggf. Ihnen helfen, vergessene MD5 Passwörter (nur 16-stelligen Hash) wieder zu erhalten. Dabei werden nur Passwörter mit bis zu 8 Zeichen berechnet. Außerdem können nicht alle Sonderzeichen berücksichtigt werden. Von Decodieren bzw. Entschlüsseln kann aufgrund der angewendeten Methoden nicht geredet werden. Das genannte MD5 Verfahren hat mathematische Lücken und wurde [...]]]></description>
			<content:encoded><![CDATA[<p>Der folgende C Source kann ggf. Ihnen helfen, vergessene MD5 Passwörter (nur 16-stelligen Hash) wieder zu erhalten. Dabei werden nur Passwörter mit bis zu 8 Zeichen berechnet. Außerdem können nicht alle Sonderzeichen berücksichtigt werden. Von Decodieren bzw. Entschlüsseln kann aufgrund der angewendeten Methoden nicht geredet werden. Das genannte MD5 Verfahren hat mathematische Lücken und wurde daher bereits ab mySQL Version 4.1 durch den stärken und (bislang sicheren) MD5/32 Hash abgelöst.</p>
<p><strong>Hinweis:</strong><br />
Den Sourcecode nutzen Sie vollständig auf eigene Gefahr und Verantwortung. Bitte prüfen Sie vorher, ob Sie berechtigt sind, den MD5 Hash zu berechnen. Sollten Sie Zweifel haben, nutzen Sie die Methoden nicht !</p>
<p>Um Ihnen nicht den vollständigen Source zu liefern (und jedem Hobby-Passwort-Analysten die Berechnung zu erlauben) haben wir die wichtigen Bitverschiebungen im Source durch Smileys ersetzt. Für erfahrene Entwickler wird das Herausfinden und Ersetzen der entsprechenden Sourcecode-Positionen kein Problem darstellen. Zusätzlich bleibt der Source äußerst karg kommentiert.</p>
<pre>// Tools zur Decodierung von 16stelligen MD5 Hashes
// Verwendet von mySQL OLD_PASSWORT() etc.

#include "stdlib.h"
#include "stdio.h"
#include "string.h"

#define xor ^

void search3_new( );
void search4_new( );
void search5_new( );
void search6_new( );
void search7_new( );
void search8_new( );
void get_old_nr2( );
void init_password( );
void found_footprint( );

int search_extension(unsigned long nrd, unsigned long nr2d, unsigned long add1d);
char footprint_str[32];
int len3=0, len4=0, len5=0, len6=0, len7=0, len8=0, len9=0, len10=0, lenall=1;

unsigned char char1, char2, char3, char4, char5, char6, char7, char8, char9, char10;
unsigned char extension_char1, extension_char2, extension_char3;
unsigned long nr2_g2_expected1_genuine;
unsigned long nr2_g2_expected2_genuine;
unsigned long nr2_g3;
unsigned long nr2_g3plus;
unsigned long nr2_expected;
unsigned long footprint1;
unsigned long footprint2;

int hexdigit_value(char c) {
  if (c >= '0' &#038;&#038; c <= '9' ) return c - '0';
  if (c >= 'a' &#038;&#038; c <= 'f' ) return c - 'a' + 10;
  if (c >= 'A' &#038;&#038; c <= 'F' ) return c - 'A' + 10;  

  printf("Fehler: '%c' ist kein Hex-Wert\r\n", c);
  exit(0);
  return 0;
}

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

  if (argc!=2 || (argc >= 2 &#038;&#038; strcmp(argv[1], "--help") == 0)) {
    printf("Syntax  : %s [MD5 Hash]\r\n", argv[0] );
    printf("Beispiel: %s 565491d704013245 (liefert das Passwort \"123456\")\r\n", argv[0]);
    exit(0);
  }

  char * args = argv[1];

  if (strlen(args) != 16 ) {
        printf("Fehler: '%s' ist kein MD5 Hash (16 Hex-Zeichen)\r\n", args);
        exit(1);
  }

   // Hash holen
  strcpy(footprint_str, args);
  unsigned long f1=0, f2=0;

  int q;
  for (q = 0; q < 8; q++) {
    f1 = (f1 << 4) + hexdigit_value(args[q]);
    f2 = (f2 << 4) + hexdigit_value(args[q+8]);
  }

  footprint1 = f1;
  footprint2 = f2;

  // Initialisierungen
  get_old_nr2();
  init_password();

  // Suche
  search3_new();
  search4_new();
  search5_new();
  search6_new();
  search7_new();
  search8_new();
  printf("Das Passwort hat wohl mehr als 8 Zeichen ...\r\n");

  return(0);
}

void init_password(  ) {
  char1  = 0;
  char2  = 0;
  char3  = 0;
  char4  = 0;
  char5  = 0;
  char6  = 0;
  char7  = 0;
  char8  = 0;
  char9  = 0;
  char10 = 0;
}

void get_old_nr2() {
  unsigned long old_nr2_value;
  int old_nr2[8] ;
  int new_nr2[8] ;
  int new_nr[8];
  int carry[8] ;
  int p;

  for (p = 0; p < 8; p++) {
    old_nr2[p] = 0;
    new_nr2[p] = 0;
    new_nr[p]  = 0;
    carry[p]   = 0;
  }

  new_nr[1] = footprint1 &#038; 255;
  new_nr[2] = (footprint1 >>  8 ) &#038; 255;
  new_nr[3] = (footprint1 >> 16 ) &#038; 255;
  new_nr[4] = (footprint1 >> 24 ) &#038; 255;

  new_nr2[1] = footprint2 &#038; 255;
  new_nr2[2] = (footprint2 >>  8 ) &#038; 255;
  new_nr2[3] = (footprint2 >> 16 ) &#038; 255;
  new_nr2[4] = (footprint2 >> 24 ) &#038; 255;

  for (p=1; p<=4; p++) {
    unsigned long tmp;
    tmp = old_nr2[p-1] ^ new_nr[p];
    old_nr2[p] = new_nr2[p] - carry[p] - tmp;

    if (old_nr2[p] < 0 ) {
      carry[p+1]  = 1;
      old_nr2[p] += 256;
    }
  }

  old_nr2_value = (old_nr2[1] | (old_nr2[2] << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> |
                  (old_nr2[3] << 16) | (old_nr2[4] << 24) ) &#038; 0x7FFFFFFF;

  nr2_g2_expected1_genuine = old_nr2_value &#038; 0x7FF00000;
  nr2_g2_expected2_genuine = (old_nr2_value - 0x100000) &#038; 0x7FF00000;
  nr2_expected = old_nr2_value;
  nr2_g3 = nr2_g2_expected1_genuine &#038; 0x70000000;
  nr2_g3plus = (nr2_g2_expected1_genuine + 0x10000000) &#038; 0x70000000;
}

void found_footprint() {
  char password[256], *ps;
  int p;
  ps = password;

  if (char1) *ps++ = char1;
  if (char2) *ps++ = char2;
  if (char3) *ps++ = char3;
  if (char4) *ps++ = char4;
  if (char5) *ps++ = char5;
  if (char6) *ps++ = char6;
  if (char7) *ps++ = char7;

  *ps++ = extension_char1;
  *ps++ = extension_char2;
  *ps++ = extension_char3;
  *ps   = 0;

  // Gefundenes Passwort anzeigen
  printf("%s = %s\r\n", footprint_str, password);
  exit(0);
}

void search3_new() {
  unsigned long nr = 1345345333L, add = 7, nr2 = 0x12345671L;
  if (search_extension(nr, nr2, add))
    return;
}

void search4_new() {
  unsigned long nr = 1345345333L, add = 7, nr2 = 0x12345671L;

  for (char1 = 33; char1 < 127; char1++) {
    nr  = 1345345333L;
    add = 7;
    nr2 = 0x12345671L;
    nr  ^= (((nr &#038; 63) + add) * (unsigned long)char1) + (nr << 8);
    nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
    add += char1;

    if (search_extension(nr, nr2, add))
        return;
  }
}

void search5_new() {
  unsigned long nr = 1345345333L, add = 7, nr2 = 0x12345671L;

  for (char1 = 33; char1 < 127; char1++)
    for (char2 = 33; char2 < 127; char2++) {
      nr  = 1345345333L;
      add = 7;
      nr2 = 0x12345671L;

      nr  ^= (((nr &#038; 63) + add) * (unsigned long)char1) + (nr << 8);
      nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
      add += char1;

      nr  ^= (((nr &#038; 63) + add) * (unsigned long)char2) + (nr << 8);
      nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
      add += char2;

      if (search_extension(nr, nr2, add))
          return;
  }
}

void search6_new() {
  unsigned long nr = 1345345333L, add = 7, nr2 = 0x12345671L;

  for (char1 = 33; char1 < 127; char1++)
    for (char2 = 33; char2 < 127; char2++)
        for (char3 = 33; char3 < 127; char3++) {
          nr  = 1345345333L;
          add = 7;
          nr2 = 0x12345671L;

          nr  ^= (((nr &#038; 63) + add) * (unsigned long)char1) + (nr << 8);
          nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
          add += char1;

          nr  ^= (((nr &#038; 63) + add) * (unsigned long)char2) + (nr << 8);
          nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
          add += char2;

          nr  ^= (((nr &#038; 63) + add) * (unsigned long)char3) + (nr << 8);
          nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
          add += char3;

          if (search_extension(nr, nr2, add)) return;
  }
}

void search7_new() {
  unsigned long nr = 1345345333L, add = 7, nr2 = 0x12345671L;

  for (char1 = 33; char1 < 127; char1++)
    for (char2 = 33; char2 < 127; char2++)
        for (char3 = 33; char3 < 127; char3++)
          for (char4 = 33; char4 < 127; char4++) {
               nr  = 1345345333L;
          add = 7;
          nr2 = 0x12345671L;

              nr  ^= (((nr &#038; 63) + add) * (unsigned long)char1) + (nr << 8);
              nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
              add += char1;

              nr  ^= (((nr &#038; 63) + add) * (unsigned long)char2) + (nr << 8);
              nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
              add += char2;

              nr  ^= (((nr &#038; 63) + add) * (unsigned long)char3) + (nr << 8);
              nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
              add += char3;

              nr  ^= (((nr &#038; 63) + add) * (unsigned long)char4) + (nr << 8);
              nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
              add += char4;

              if (search_extension(nr, nr2, add)) return;
  }
}

void search8_new() {
  unsigned long nr = 1345345333L, add = 7, nr2 = 0x12345671L;

  for (char1 = 33; char1 < 127; char1++)
    for (char2 = 33; char2 < 127; char2++)
        for (char3 = 33; char3 < 127; char3++)
          for (char4 = 33; char4 < 127; char4++)
              for (char5 = 33; char5 < 127; char5++) {
                nr  = 1345345333L;
                add = 7;
                nr2 = 0x12345671L;

                nr  ^= (((nr &#038; 63) + add) * (unsigned long)char1) + (nr << 8);
                nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
                add += char1;

                nr  ^= (((nr &#038; 63) + add) * (unsigned long)char2) + (nr << 8);
                nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
                add += char2;

                nr  ^= (((nr &#038; 63) + add) * (unsigned long)char3) + (nr << 8);
                nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
                add += char3;

                nr  ^= (((nr &#038; 63) + add) * (unsigned long)char4) + (nr << 8);
                nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
                add += char4;

                nr  ^= (((nr &#038; 63) + add) * (unsigned long)char5) + (nr << 8);
                nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
                add += char5;

                if (search_extension(nr, nr2, add)) return;
  }
}

void search9_new() {
  unsigned long nr = 1345345333L, add = 7, nr2 = 0x12345671L;

  for (char1 = 33; char1 < 127; char1++)
    for (char2 = 33; char2 < 127; char2++)
        for (char3 = 33; char3 < 127; char3++)
          for (char4 = 33; char4 < 127; char4++)
              for (char5 = 33; char5 < 127; char5++)
                for (char6 = 33; char6 < 127; char6++) {
                    nr  = 1345345333L;
                    add = 7;
                    nr2 = 0x12345671L;

                    nr  ^= (((nr &#038; 63) + add) * (unsigned long)char1) + (nr << 8);
                    nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
                    add += char1;

                    nr  ^= (((nr &#038; 63) + add) * (unsigned long)char2) + (nr << 8);
                    nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
                    add += char2;

                    nr  ^= (((nr &#038; 63) + add) * (unsigned long)char3) + (nr << 8);
                    nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
                    add += char3; 

                    nr  ^= (((nr &#038; 63) + add) * (unsigned long)char4) + (nr << 8);
                    nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
                    add += char4;

                    nr  ^= (((nr &#038; 63) + add) * (unsigned long)char5) + (nr << 8);
                    nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
                    add += char5;

                    nr  ^= (((nr &#038; 63) + add) * (unsigned long)char6) + (nr << 8);
                    nr2 += (nr2 << <img src='http://www.yourhelpcenter.de/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ^ nr;
                    add += char6;

                    if (search_extension(nr, nr2, add)) return;
  }
}

int search_extension(unsigned long nrd, unsigned long nr2d, unsigned long add1d) {
  unsigned long nre, nrf, nrg;
  unsigned long nr2e, nr2f, nr2g;
  unsigned long add1e, add1f, add1g;
  unsigned long constant1e, constant3e, variable1e;
  unsigned long constant1f, constant3f, variable1f;
  unsigned long constant1g, constant3g, variable1g;
  unsigned long nrdisc1, nrdisc2, nr2disc1, nr2disc2;
  unsigned long nr12;
  unsigned long delta1, delta2, delta3, delta4;
  unsigned long dividende1 , dividende2;

  constant1e = (nrd &#038; 63) + add1d;
  constant3e = nr2d << 8;
  variable1e = (constant1e << 5) + (nrd << 8);

  nrdisc1  = nrd xor variable1e;
  nrdisc2  = nrdisc1 + 0x100000;
  nr2disc1 = nr2d + (constant3e xor nrdisc1);
  nr2disc2 = nr2d + (constant3e xor nrdisc2);
  nr12   = nrdisc1 << 8;

  delta1 = nrdisc1 xor (nr2disc1 << 8);
  delta2 = ((delta1 xor (nr12 + 0x10000000)) + nr2disc1) &#038; 0x70000000;
  delta1 = ((delta1 xor nr12) + nr2disc1) &#038; 0x70000000;

  nr12   = nrdisc2 << 8;
  delta3 = nrdisc2 xor (nr2disc2 << 8);
  delta4 = ((delta3 xor (nr12 + 0x10000000)) + nr2disc2) &#038; 0x70000000;
  delta3 = ((delta3 xor nr12) + nr2disc2) &#038; 0x70000000;

  if (delta1 == nr2_g3 || delta2 == nr2_g3 || delta3 == nr2_g3 || delta4 == nr2_g3 ||
      delta1 == nr2_g3plus || delta2 == nr2_g3plus || delta3 == nr2_g3plus ||
      delta4 == nr2_g3plus)

    for (extension_char1 = 33; extension_char1 <= 126; extension_char1++) {
      variable1e = variable1e + constant1e;
      nre = nrd xor variable1e;
      nr2e = nr2d + (constant3e xor nre);

      nr12   = nre << 8;
      delta1 = nre xor (nr2e << 8);
      delta2 = ((delta1 xor (nr12 + 0x100000)) + nr2e) &#038; 0x7FF00000;
      delta1 = ((delta1 xor nr12) + nr2e) &#038; 0x7FF00000;

      if (delta1 == nr2_g2_expected1_genuine || delta1==nr2_g2_expected2_genuine ||
          delta2 == nr2_g2_expected1_genuine || delta2==nr2_g2_expected2_genuine ) {

      add1e = add1d + extension_char1;

      constant1f = (nre &#038; 63) + add1e;
      constant3f = nr2e << 8;
      variable1f = (constant1f << 5 ) + (nre << 8);

      for (extension_char2 = 33; extension_char2 <= 126; extension_char2++) {
        variable1f = variable1f + constant1f;
        nrf = nre xor variable1f;
        nr2f = nr2e + (constant3f xor nrf);            

        if ((nr2f &#038; 0x7FFFFFFF) == nr2_expected) {
          add1f      = add1e + extension_char2;
          constant1g = (nrf &#038; 63) + add1f;
          constant3g = nr2f << 8;
          variable1g = (constant1g << 5 ) + (nrf << 8);

          for (extension_char3 = 33; extension_char3 <= 126; extension_char3++) {
            variable1g = variable1g + constant1g;
            nrg = nrf xor variable1g;
            nr2g = nr2f + (constant3g xor nrg);

            if ((nrg &#038; 0x7FFFFFFF) == footprint1 &#038;&#038; (nr2g &#038; 0x7FFFFFFF) == footprint2) {
              found_footprint();
              return(1);
            }
          }
        }
      }
    }
  }

  return(0);
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.yourhelpcenter.de/2009/07/sicherheit-md5-hash-decodieren-cracken-16-stelligen-hash/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>mySQL: Alten MD5 Hash in C# berechnen (16 stellig)</title>
		<link>http://www.yourhelpcenter.de/2009/06/mysql-alten-md5-hash-in-c-berechnen-16-stellig/</link>
		<comments>http://www.yourhelpcenter.de/2009/06/mysql-alten-md5-hash-in-c-berechnen-16-stellig/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 18:30:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Anleitungen]]></category>
		<category><![CDATA[C# .Net]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[alte passwörter]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[crack]]></category>
		<category><![CDATA[crypt]]></category>
		<category><![CDATA[deassemblieren]]></category>
		<category><![CDATA[dekodierbar]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[hashs]]></category>
		<category><![CDATA[knackbar]]></category>
		<category><![CDATA[md5.16]]></category>
		<category><![CDATA[md5/16]]></category>
		<category><![CDATA[old passwort]]></category>
		<category><![CDATA[old_password]]></category>
		<category><![CDATA[verschlüsselt]]></category>
		<category><![CDATA[verschlüsselung]]></category>

		<guid isPermaLink="false">http://www.yourhelpcenter.de/?p=416</guid>
		<description><![CDATA[Die mySQL Versionen vor V4.1 nutzen einen veralteten MD5 Hash-Algorithmus. Dieser lieferte nur einen max. 16 stelligen Hashwert und ist weiterhin unsicher und teilweise decodierbar. Zwar gilt für MD5 aufgrund seines Algorithmusses grundsätzlich, dass diese Hashwerte nicht &#8220;decodiert&#8221; werden können &#8211; für den alten MD5/16 Code gilt dies&#8217; jedoch nicht eingeschränkt.
Aufgrund des häufigen Anfragen für [...]]]></description>
			<content:encoded><![CDATA[<p>Die mySQL Versionen vor V4.1 nutzen einen veralteten MD5 Hash-Algorithmus. Dieser lieferte nur einen max. 16 stelligen Hashwert und ist weiterhin unsicher und teilweise decodierbar. Zwar gilt für MD5 aufgrund seines Algorithmusses grundsätzlich, dass diese Hashwerte nicht &#8220;decodiert&#8221; werden können &#8211; für den alten MD5/16 Code gilt dies&#8217; jedoch nicht eingeschränkt.</p>
<p>Aufgrund des häufigen Anfragen für eine einfache Berechnung dieses MD5/16 Hash haben wir Ihnen den C# Sourcecode zur Verfügung gestellt. Diese liefert Ihnen für ein Passwort (= Parameter) den MD5/16 Hash:</p>
<pre>namespace ConsoleApplication
{
    class Program
    {
        static string mysql_old_password(string sPassword)
        {
            UInt32[] result = new UInt32[2];
            bool bDebug = false;
            UInt32 nr = (UInt32)1345345333, add = (UInt32)7, nr2 = (UInt32)0x12345671;
            UInt32 tmp;

            char [] password = sPassword.ToCharArray();
            int i;

            for (i = 0; i < sPassword.Length; i++)
            {
                if (password[i] == ' ' || password[i] == '\t')
                    continue;

                tmp = (UInt32)password[i];
                nr ^= (((nr &#038; 63) + add) * tmp) + (nr << 8);
                nr2 += (nr2 << 8 ) ^ nr;
                add += tmp;
            }

            result[0] = nr &#038; (((UInt32)1 << 31) - (UInt32)1);
            UInt32 val = (((UInt32)1 << 31) - (UInt32)1);
            result[1] = nr2 & val;
            string hash = String.Format("{0:X}{1:X}", result[0], result[1]);
            return hash.ToLower();
        }

        static void Main(string[] args)
        {
            string hash = mysql_old_password("Hier Ihr Passwort");
            Console.WriteLine(hash);
       }
    }
}</pre>
<p>Das häufige Problem sind alte mySQL Datenbanken, die Identifikationen enthalten und heute nicht mehr einfach ohne mySQL geprüft werden können. </p>
<p>Den alten MD5/16 Hash erhalten Sie auch weiterhin innerhalb von mySQL durch den Befehl "OLD_PASSWORD()". Dieser Quellcode soll Ihnen nur dann helfen, wenn Sie alte Daten (z.Bsp. aus Sicherungen) prüfen müssen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourhelpcenter.de/2009/06/mysql-alten-md5-hash-in-c-berechnen-16-stellig/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mySQL: Schutz vor Angriffen in Datenbankabfragen (SQL Injection)</title>
		<link>http://www.yourhelpcenter.de/2009/06/mysql-schutz-vor-angriffen-in-datenbankabfragen-sql-injection/</link>
		<comments>http://www.yourhelpcenter.de/2009/06/mysql-schutz-vor-angriffen-in-datenbankabfragen-sql-injection/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 14:46:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Anleitungen]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[abfragen]]></category>
		<category><![CDATA[angriff]]></category>
		<category><![CDATA[angriffe]]></category>
		<category><![CDATA[anpassen]]></category>
		<category><![CDATA[aufpassen]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[codieren]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[dritte]]></category>
		<category><![CDATA[geheim]]></category>
		<category><![CDATA[injection]]></category>
		<category><![CDATA[injektion]]></category>
		<category><![CDATA[manupulation]]></category>
		<category><![CDATA[neutral]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[schutz]]></category>
		<category><![CDATA[schützen]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[statements]]></category>
		<category><![CDATA[umformen]]></category>
		<category><![CDATA[vorsicht]]></category>
		<category><![CDATA[vorsichtig]]></category>

		<guid isPermaLink="false">http://www.yourhelpcenter.de/?p=368</guid>
		<description><![CDATA[Normale SQL Abfragen mit direkt eingebundenen Parametern ohne zusätzliche Schutzfunktionen kann sehr böse Folgen haben. Meist merken Sie davon nichts &#8211; Ihre Daten sind jedoch in höchster Gefahr.
Szenario #1: Ein einfacher Angriff
Nehmen wir eine (leider) normale Datenbankabfrage in PHP:
$query = "SELECT * FROM users
WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
Nicht immer müssen die &#8220;richtigen&#8221; Parameter durch Ihre Oberfläche [...]]]></description>
			<content:encoded><![CDATA[<p>Normale SQL Abfragen mit direkt eingebundenen Parametern ohne zusätzliche Schutzfunktionen kann sehr böse Folgen haben. Meist merken Sie davon nichts &#8211; Ihre Daten sind jedoch in höchster Gefahr.</p>
<p><strong>Szenario #1: Ein einfacher Angriff</strong></p>
<p>Nehmen wir eine (leider) normale Datenbankabfrage in PHP:</p>
<p><code>$query = "SELECT * FROM users<br />
WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";</code></p>
<p>Nicht immer müssen die &#8220;richtigen&#8221; Parameter durch Ihre Oberfläche übergeben werden. Durch einfache Manipulation der Parameter (über gesonderte Abfragen) können beliebige Daten mit POST übergeben werden. Gehen wir von folgenden Parametern aus:</p>
<p><code>$_POST['username'] = "max";<br />
$_POST['password'] = "' OR ''='";</code></p>
<p>Dadurch würde das SQL Statement so aussehen:</p>
<p><code>SELECT * FROM users WHERE user='max' AND password='' OR ''=''</code></p>
<p><strong>Szenario #2: Auflisten von Benutzernamen &#038; Passwörtern</strong></p>
<p>Ebenfalls leicht möglich. Dafür wird eine Datenbankabfrage (SELECT Statement) einfach erweitert:</p>
<p><code>$query = "SELECT id, name, inserted, size<br />
FROM products<br />
WHERE size = '$size'<br />
ORDER BY $order LIMIT $limit, $offset;";</code></p>
<p>Nun wird z.Bsp. der Parameter &#8220;size&#8221; vom Angreifer modifiziert:</p>
<p><code>'<br />
union select '1', concat(uname || '-' || passwd) as name, '1971-01-01', '0' from usertable;<br />
--</code></p>
<p>Dadurch wird folgende SQL Statement an die Datenbank übergeben:</p>
<p><code>SELECT id, name, inserted, size<br />
FROM products<br />
WHERE size = ''<br />
union select '1', concat(uname||'-'||passwd) as name, '1971-01-01', '0' from usertable;<br />
--' ORDER BY $order LIMIT $limit, $offset;</code></p>
<p><strong>Szenario #3: Zurücksetzen / Ändern eines Passwortes</strong></p>
<p>Das SQL Statement wird wie folgt zusammengebaut:</p>
<p><code>$query = "UPDATE usertable SET pwd='$pwd' WHERE uid='$uid';";</code></p>
<p>Diese kleine Erweiterung des Parameters &#8220;uid&#8221; reicht aus:</p>
<p><code>$uid == ' or uid like'%admin%'; --</code></p>
<p>Dadurch erhält Ihre Datenbank diesen Updatebefehl:</p>
<p><code>$query = "UPDATE usertable SET pwd='...' WHERE uid='' or uid like '%admin%'; --";</code></p>
<p><strong>Szenario #4: Zugriff auf das Betriebssystem Ihre Datenbankservers</strong></p>
<p>Ihre Abfrage:</p>
<p><code>$query  = "SELECT * FROM products WHERE id LIKE '%$prod%'";</code></p>
<p>Wenn jetzt der Parameter &#8220;name&#8221; entsprechend verändert wird, erhalten Sie folgendes SQL Statement:</p>
<p><code>SELECT * FROM products<br />
                    WHERE id LIKE '%a%'<br />
                    exec master..xp_cmdshell 'net user test testpass /ADD'--";</code></p>
<p>Dadurch würde (sofern Sie als entsprechend berechtigter Benutzer verbunden sind) ein neuer Benutzer &#8220;test&#8221; angelegt werden &#8230; und dieser kann dann natürlich frei auf dem Datenbankserver arbeiten.</p>
<p><strong>Schutz Ihrer Daten &#038; Datenbank</strong></p>
<ol>
<li>Verbinden Sie sich nur als Benutzer mit den benötigten Rechten zur Datenbank.<br />
Niemals als Administrator (sa / sysdba / sys / &#8230;)</p>
<li>Prüfen Sie Parameter vor der Benutzung auf Plausibilität.<br />
Z.Bsp. bei nummerischen Werten durch die Funktion &#8220;is_numeric()&#8221;.</p>
<li>Escapen Sie jeden anderen Parameter, welchen Sie direkt an die Datenbank weitergeben.<br />
Nutzen Sie dafür Funktionen wie &#8220;mysql_real_escape_string()&#8221;, &#8220;sqlite_escape_string()&#8221;, usw.</p>
<li>Geben Sie keine Datenbank internen Informationen heraus (Schema, Views, Spezifikationen, etc.)<br />
Diese Infos können leicht für Angriffe genutzt werden und erleichtern die gezielte Manipulation Ihrer Daten.
</ol>
<p><strong>Beispiel für eine bessere Abfrage:</strong></p>
<p><code>$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",<br />
            mysql_real_escape_string($user),<br />
            mysql_real_escape_string($password));<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourhelpcenter.de/2009/06/mysql-schutz-vor-angriffen-in-datenbankabfragen-sql-injection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mySQL: Sortierung nach zufälligen Werten</title>
		<link>http://www.yourhelpcenter.de/2008/12/mysql-sortierung-nach-zufalligen-werten/</link>
		<comments>http://www.yourhelpcenter.de/2008/12/mysql-sortierung-nach-zufalligen-werten/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 18:54:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[hinzufügen]]></category>
		<category><![CDATA[order]]></category>
		<category><![CDATA[order by]]></category>
		<category><![CDATA[rand()]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[rnd()]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[sort by]]></category>
		<category><![CDATA[sortieren]]></category>
		<category><![CDATA[sortierung]]></category>
		<category><![CDATA[Spalte]]></category>
		<category><![CDATA[zufall]]></category>
		<category><![CDATA[zufällig]]></category>
		<category><![CDATA[zufällige]]></category>
		<category><![CDATA[zufallswert]]></category>
		<category><![CDATA[zufallszahl]]></category>

		<guid isPermaLink="false">http://www.yourhelpcenter.de/?p=187</guid>
		<description><![CDATA[Wenn Sie bei einer mySQL Abfrage (Query) eine Spalte mit zufälligen Werten anfügen möchten, dann nutzen Sie diesen Befehl:
SELECT ID, Name, RAND() FROM Test
Wenn Sie nach dieser Spalte sortieren möchten, dann hilft Ihnen ein einfaches &#8220;Order by&#8221; mit einem entsprechenden Spaltennamen leider nicht weiter.
Sie müssen dann ein weiteres Feld der Abfrage in die Berechnung einbeziehen. [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn Sie bei einer mySQL Abfrage (Query) eine Spalte mit zufälligen Werten anfügen möchten, dann nutzen Sie diesen Befehl:</p>
<pre>SELECT ID, Name, RAND() FROM Test</pre>
<p>Wenn Sie nach dieser Spalte sortieren möchten, dann hilft Ihnen ein einfaches &#8220;Order by&#8221; mit einem entsprechenden Spaltennamen leider nicht weiter.<br />
Sie müssen dann ein weiteres Feld der Abfrage in die Berechnung einbeziehen. Dann geht&#8217;s:</p>
<pre>SELECT ID, Name, 0*ID+RAND() AS sort FROM Test ORDER BY sort</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.yourhelpcenter.de/2008/12/mysql-sortierung-nach-zufalligen-werten/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Entwicklungsumgebung mit cakePHP, mySQL &amp; Eclipse</title>
		<link>http://www.yourhelpcenter.de/2008/12/entwicklungsumgebung-mit-cakephp-mysql-eclipse-installieren/</link>
		<comments>http://www.yourhelpcenter.de/2008/12/entwicklungsumgebung-mit-cakephp-mysql-eclipse-installieren/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 11:23:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Anleitungen]]></category>
		<category><![CDATA[Apache WebServer]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[cakePHP]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[anleitung]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[aufbauen]]></category>
		<category><![CDATA[beispiel]]></category>
		<category><![CDATA[cake]]></category>
		<category><![CDATA[cake Framework]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Datenbankanbindung]]></category>
		<category><![CDATA[Datenbanksystem]]></category>
		<category><![CDATA[Datenbankzugriff]]></category>
		<category><![CDATA[dienst]]></category>
		<category><![CDATA[dienste]]></category>
		<category><![CDATA[eigene]]></category>
		<category><![CDATA[einfach]]></category>
		<category><![CDATA[einrichten]]></category>
		<category><![CDATA[entwickeln]]></category>
		<category><![CDATA[entwicklungsumgebung]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[gut erklärt]]></category>
		<category><![CDATA[Homapge]]></category>
		<category><![CDATA[Homepage]]></category>
		<category><![CDATA[hosts]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[installieren]]></category>
		<category><![CDATA[Internetauftritt]]></category>
		<category><![CDATA[Internetauftritte]]></category>
		<category><![CDATA[konfiguration]]></category>
		<category><![CDATA[konfigurieren]]></category>
		<category><![CDATA[Muster]]></category>
		<category><![CDATA[musterumgebung]]></category>
		<category><![CDATA[nachvollziehbare]]></category>
		<category><![CDATA[php Framework]]></category>
		<category><![CDATA[Plug-In]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[RDBMS]]></category>
		<category><![CDATA[schnell]]></category>
		<category><![CDATA[Schritt für Schritt]]></category>
		<category><![CDATA[vhost]]></category>
		<category><![CDATA[vhosts]]></category>
		<category><![CDATA[virtual host]]></category>
		<category><![CDATA[Webseiten]]></category>
		<category><![CDATA[Webseitendesign]]></category>
		<category><![CDATA[win32]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[wwwrun]]></category>
		<category><![CDATA[xampp]]></category>

		<guid isPermaLink="false">http://www.yourhelpcenter.de/?p=117</guid>
		<description><![CDATA[Benötigte Software (in Klammern die für diese Anleitung genutzte Version)

XAMPP (1.6.8 &#8211; Win32, Basic Package)
cakePHP (1.2.0.7945-rc4, Zip Archiv)
Eclipse (3.4.1 Classic (Ganymede) &#8211; Windows, Zip Archiv)

Installation(en)
Sofern ich keine Angabe zu einem Bildschirm oder Schritt einer Software-Installation gemacht habe, übernehmen Sie einfach die vorgegebenen / angezeigten Einstellungen.

XAMPP

Starten Sie die &#8220;xampp-win32-1.6.8-installer.exe&#8221;
Zielverzeichnis: &#8220;C:\xampp&#8221; (Standard)
Am Ende wird angeboten, das Control [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Benötigte Software</strong> (in Klammern die für diese Anleitung genutzte Version)</p>
<ul>
<li><a title="XAMPP Download" href="http://www.apachefriends.org/de/xampp-windows.html" target="_blank">XAMPP</a> (1.6.8 &#8211; Win32, Basic Package)</li>
<li><a title="cakePHP Download" href="http://cakeforge.org/frs/?group_id=23&amp;release_id=432" target="_blank">cakePHP</a> (1.2.0.7945-rc4, Zip Archiv)</li>
<li><a title="Eclipse Download" href="http://www.eclipse.org/downloads/" target="_blank">Eclipse</a> (3.4.1 Classic (Ganymede) &#8211; Windows, Zip Archiv)</li>
</ul>
<p><strong>Installation(en)</strong></p>
<p>Sofern ich keine Angabe zu einem Bildschirm oder Schritt einer Software-Installation gemacht habe, übernehmen Sie einfach die vorgegebenen / angezeigten Einstellungen.</p>
<ul>
<li>XAMPP
<ul>
<li>Starten Sie die &#8220;xampp-win32-1.6.8-installer.exe&#8221;</li>
<li>Zielverzeichnis: &#8220;C:\xampp&#8221; (Standard)</li>
<li>Am Ende wird angeboten, das Control Panel zu starten.<br />
Wählen Sie &#8220;Ja&#8221; &#8211; Starten Sie jedoch noch kein Modul</li>
</ul>
</li>
</ul>
<ul>
<li>cakePHP
<ul>
<li>Legen Sie im Verzeichnis &#8220;C:\xampp&#8221; einen neuen Unterordner &#8220;www&#8221; an</li>
<li>Entpacken Sie das Archiv &#8220;cake_1.2.0.7945-rc4.zip&#8221; im neuen Order &#8220;www&#8221;</li>
<li>Benennen Sie den erstellten Ordner um in &#8220;cakePHP&#8221;<br />
Sie haben jetzt ein Verzeichnis &#8220;c:\xampp\cakePHP&#8221;.<br />
In diesem finden Sie vier Ordner und u.a. die &#8220;index.php&#8221;</li>
<li>Gehen Sie in das Verzeichnis &#8220;C:\xampp\www\cakePHP\app\config&#8221;</li>
<li>Öffnen Sie die Datei &#8220;core.php&#8221;</li>
<li>Suchen Sie die folgende Zeile und ändern Sie den zweiten Parameter (&#8220;DYhG93..&#8221;) in eine andere willkürliche &amp; zufällige Zeichenkette ab:<br />
<code>Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');</code></li>
<li>Speichern Sie die Datei und schließen Sie den Editor</li>
<li>Im gleichen Verzeichnis finden Sie die Datei &#8220;database.php.default&#8221;</li>
<li>Kopieren Sie die Datei in &#8220;database.php&#8221; und öffnen Sie sie mit einem Editor</li>
<li>Am Ende der Datei tragen Sie die Zugangsdaten für Ihren mySQL Server (s.u.) ein:<br />
<code>var $default = array(<br />
'driver' =&gt; 'mysql',<br />
'persistent' =&gt; false,<br />
'host' =&gt; 'localhost',<br />
'login' =&gt; 'root',<br />
'password' =&gt; 'masterpwd',<br />
'database' =&gt; 'cakePHP',<br />
'prefix' =&gt; '',<br />
);</code><br />
<span style="color: #ff0000;">Sicherheitshinweis:<br />
Bitte nutzen Sie andere Passwörter. Ich verwende in meinem Beispiel stets &#8220;masterpwd&#8221; &#8211; ersetzen Sie es durch ein sicheres Passwort. Außerdem nutze ich in diesem Beispiel den Datenbankuser &#8220;root&#8221;. Wenn Ihre Entwicklungsumgebung nicht sicher oder geschützt ist, nutzen Sie bitte einen anderen Datenbankuser. Die Einrichtung und Einstellungen sind nicht Teil dieser Anleitung.</span></li>
</ul>
</li>
</ul>
<ul>
<li>Virtuellen Server unter Apache (XAMPP) konfigurieren
<ul>
<li>Gehen Sie in das Verzeichnis &#8220;C:\xampp\apache\conf\extra&#8221;</li>
<li>Öffnen Sie die Datei &#8220;httpd-vhosts.conf&#8221; mit einem Texteditor</li>
<li>Entfernen Sie am Anfang der Datei die Kommentarzeichen (#) vor dieser Zeile:<br />
<code>NameVirtualHost *:80</code>
</li>
<li>Fügen Sie am Ende der Textdatei die folgenden Zeilen hinzu:
<pre>&lt;VirtualHost *:80&gt;
  ServerAdmin webmaster@local
  DocumentRoot c:/xampp/htdocs
  ServerName localhost
  ErrorLog C:/xampp/apache/logs/error.log
  CustomLog C:/xampp/apache/logs/access.log common
&lt;/VirtualHost&gt;

&lt;VirtualHost *:80&gt;
  ServerAdmin webmaster@cakePHP.local
  DocumentRoot c:/xampp/www/cakePHP/app/webroot
  &lt;Directory c:/xampp/www/cakePHP/app/webroot&gt;
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    DirectoryIndex index.php index.shtml index.html index.htm
    Order allow,deny
    Allow from all
  &lt;/Directory&gt;
  ServerName cakePHP
  ErrorLog C:/xampp/apache/logs/cakePHP-error.log
  CustomLog C:/xampp/apache/logs/cakePHP-access.log common
&lt;/VirtualHost&gt;</pre>
</li>
<li>Speichern Sie die Datei und schließen Sie den Editor</li>
<li>Gehen Sie in das Verzeichnis &#8220;C:\windows\system32\drivers\etc&#8221;</li>
<li>Öffnen Sie die Datei &#8220;hosts&#8221; mit einem Texteditor</li>
<li>Fügen Sie am Ende der Datei folgende Zeile hinzu:<code>127.0.0.1    cakePHP </code></li>
<li>Speichern Sie die Datei und schließen Sie den Editor</li>
</ul>
</li>
</ul>
<ul>
<li>Apache (WebServer) starten
<ul>
<li>In der unteren rechten Bildschirmecke finden Sie neben der Uhr ein oranges &#8220;X&#8221; Symbol.<br />
Klicken Sie es einmal mit der linken Maustaste an. Das XAMPP Control Panel öffnet sich.</li>
<li>Klicken Sie hinter &#8220;Apache&#8221; auf den &#8220;Start&#8221; Button<br />
Nach wenigen Sekunden wird vor dem Button der grüne Text &#8220;Running&#8221; erscheinen.<br />
Gut gemacht: Ihr WebServer läuft !</li>
</ul>
</li>
</ul>
<ul>
<li>mySQL &amp; phpMyAdmin konfigurieren (Datenbank &amp; -administration)
<ul>
<li>Klicken SIe auf &#8220;Start&#8221; hinter &#8220;MySQL&#8221;</li>
<li>Nach wenigen Sekunden wird vor dem Button der grüne Text &#8220;Running&#8221; erscheinen</li>
<li>Ändern Sie das Masterpasswort Ihres mySQL Servers:<br />
Dafür führen Sie folgenden Befehl aus (drücken Sie dafür die Windowstaste + &#8220;R&#8221; zusammen):<br />
<code>c:\xampp\mysql\bin\mysqladmin --user=root --password= password masterpwd</code><br />
<span style="color: #ff0000;">Wählen Sie bitte ein anderes (sichers) Passwort und ersetzen Sie &#8220;masterpwd&#8221; an Ende der Zeile durch Ihr Passwort.</span></li>
<li>Gehen Sie in das Verzeichnis &#8220;C:\xampp\phpMyAdmin&#8221; und öffnen Sie die Datei &#8220;config.inc.php&#8221;</li>
<li>Tragen Sie Ihr Passwort in die folgende Zeile ein (die Hochkommata sind wichtig):<br />
<code>$cfg['Servers'][$i]['password'] = 'masterpwd';</code></li>
<li>Speichern Sie die Datei und schließen Sie den Editor</li>
<li>Starten Sie Ihren Browser (z.Bsp. Mozilla Firefox) und öffnen Sie folgende Seite:<br />
<a title="phpMySQL Administration" href="http://localhost/phpmyadmin/" target="_blank">http://localhost/phpmyadmin/</a></li>
<li>Wieder gut gemacht: Ihr Datenbankserver läuft !</li>
<li>Legen Sie eine neue Datenbank an:<br />
In der mittleren Spalte geben Sie unter &#8220;Neue Datenbank anlegen&#8221; den Namen &#8220;cakePHP&#8221; in das Textfeld ein und klicken auf &#8220;anlegen&#8221;</li>
</ul>
</li>
</ul>
<ul>
<li>cakePHP testen
<ul>
<li>Öffnen Sie in Ihrem Browser die URL &#8220;<a title="cakePHP Installation starten" href="http://cakePHP" target="_blank">http://cakePHP</a>&#8220;</li>
<li>Ihnen wird die Standardseite von cakePHP angezeigt.<br />
Dabei zeigen Ihnen die vier grünen Bereiche die notwendigen (und erfüllten) Voraussetzungen an.</li>
</ul>
</li>
</ul>
<hr size="1">
Ihre cakePHP Installation ist jetzt vollständig einsetzbar. Die Installation und Konfiguration von Eclipse bringt Ihnen jedoch einen vielseitigen und optimalen Editor für Ihre neuen (php) Webseiten. Die Codevervollständigung, PHP Syntaxprüfung und weitere Features unterstützen Sie bei der Entwicklung Ihrer Internetseiten.</p>
<p>Bei dieser Anleitung habe ich die Eclipse Classic Version gewählt. Je nach Wunsch können Sie aber auch andere (auf der <a title="Eclipse Download Homepage" href="http://www.eclipse.org/downloads/" target="_blank">Eclipse Download Seite</a> angezeigte) Versionen nutzen.</p>
<hr size="1">
<ul>
<li>Eclipse installieren (optional)
<ul>
<li>Entpacken Sie das Archiv &#8220;eclipse-SDK-3.4.1-win32.zip&#8221;.<br />
In dem erhaltenen Verzeichnis &#8220;eclipse-SDK-3.4.1-win32&#8243; finden Sie den Ordner &#8220;eclipse&#8221;.</li>
<li>Kopieren Sie diesen &#8220;eclipse&#8221; Ordner in das Verzeichnis &#8220;C:\xampp&#8221; hinein.<br />
Sie haben jetzt ein Verzeichnis &#8220;C:\xampp\eclipse&#8221;.</li>
<li>Dort finden Sie die Anwendung &#8220;eclipse.exe&#8221;, die Sie bitte starten</li>
<li>Sie werden nach Ihrem gewünschten &#8220;Workspace&#8221; gefragt:<br />
Wählen Sie als Verzeichnis bitte &#8220;C:\xampp\www&#8221;</li>
<li>Beim ersten Start von Eclipse wird Ihnen die Startseite angezeigt.<br />
Dort klicken Sie auf das rechte Symbol (&#8220;Workbench&#8221;).<br />
Sie sehen jetzt den Arbeitsbereich Ihrer Eclipse Installation</li>
</ul>
</li>
</ul>
<p>Eclipse ist jetzt bereits voll einsetzbar. Damit Ihnen die Arbeit mit PHP aber leichter fällt und alle gewünschten Zusatzfunktionen zur Verfügung stehen, muss die PHP Erweiterung installiert werden:</p>
<ul>
<li>Eclipse: PHP Erweiterung (Plugin) installieren
<ul>
<li>Klicken Sie in Eclipse auf den Menüpunkt &#8220;Help&#8221; und dann auf &#8220;Software Updates &#8230;&#8221;</li>
<li>Wählen Sie den Reiter &#8220;Available Software&#8221; aus</li>
<li>Klicken Sie dort auf den Button &#8220;Add Site&#8221; und geben Sie die folgende URL ein:
<p>http://update.phpeclipse.net/update/stable/1.2.x</li>
<li>Die neuen Quellen werden in der Softwareliste angezeigt</li>
<li>Aktivieren Sie die beiden Einträge<br />
http://phpeclipse.sourceforge.net/ [...] und<br />
http://update.phpeclipse.net/ [...]</li>
<li>Klicken Sie auf &#8220;Install&#8221;</li>
<li>In der Übersicht klicken Sie auf &#8220;Next&#8221;</li>
<li>Lesen Sie die Lizenzbedinungen, stimmen Sie zu und klicken Sie auf &#8220;Finish&#8221;<br />
Die aktuellen Updates für Eclipse und das PHP Plugin werden jetzt installiert</li>
<li>Am Ende der Installation wird Ihnen der Neustart von Eclipse angeboten.<br />
Stimmen Sie zu</li>
</ul>
</li>
</ul>
<p>Alle Programme und Erweiterungen sind nun fertig installiert. Sie können mit der Arbeit an Ihren Webseiten beginnen:</p>
<ul>
<li>Ihr cakePHP Projekt (s.o.) in Eclipse öffnen
<ul>
<li>Wählen Sie in Eclipse den Menüpunkt &#8220;Window&#8221;, dann &#8220;Open Perspective&#8221; und jetzt &#8220;Other&#8221;</li>
<li>Klicken Sie doppelt auf den Listeneintrag &#8220;PHP&#8221;.<br />
Ihre Arbeitsfläche hat sich nun an PHP angepasst</li>
<li>Im linken Bereich (&#8220;Navigator&#8221;) drücken Sie die rechte Maustaste, wählen &#8220;New&#8221; und &#8220;PHP Projekt&#8221;</li>
<li>Als Projektnamen geben Sie &#8220;cakePHP&#8221; ein und klicken auf &#8220;Finish&#8221;</li>
<li>Ihnen wird ein neuer Eintrag im Navigator angezeigt: Ihre cakePHP Installation</li>
</ul>
</li>
</ul>
<p>Fertig.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourhelpcenter.de/2008/12/entwicklungsumgebung-mit-cakephp-mysql-eclipse-installieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mySQL Prozesse auflisten &amp; stoppen</title>
		<link>http://www.yourhelpcenter.de/2008/12/mysql-prozesse-auflisten-stoppen/</link>
		<comments>http://www.yourhelpcenter.de/2008/12/mysql-prozesse-auflisten-stoppen/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 19:35:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[abschiessen]]></category>
		<category><![CDATA[abschießen]]></category>
		<category><![CDATA[beenden]]></category>
		<category><![CDATA[hart]]></category>
		<category><![CDATA[processes]]></category>
		<category><![CDATA[prozesse]]></category>
		<category><![CDATA[schliessen]]></category>
		<category><![CDATA[schließen]]></category>
		<category><![CDATA[sofort]]></category>
		<category><![CDATA[stopen]]></category>
		<category><![CDATA[stoppen]]></category>
		<category><![CDATA[tasklist]]></category>
		<category><![CDATA[tasks]]></category>

		<guid isPermaLink="false">http://www.yourhelpcenter.de/?p=151</guid>
		<description><![CDATA[Sie können sich die Prozesse auf Ihrem mySQL Server anzeigen lassen und auf Wunsch beenden.
Auflisten der aktuellen Prozesse:
mysql&#62; show processlist;
Ihnen wird folgende Liste (als Beispiel) angezeigt:
+-----+------+-----------+---------+---------+-------+-------+------------------+
&#124; Id  &#124; User &#124; Host      &#124; db      &#124; Command &#124; Time  &#124; State &#124; Info   [...]]]></description>
			<content:encoded><![CDATA[<p>Sie können sich die Prozesse auf Ihrem mySQL Server anzeigen lassen und auf Wunsch beenden.</p>
<p>Auflisten der aktuellen Prozesse:</p>
<pre>mysql&gt; show processlist;</pre>
<p>Ihnen wird folgende Liste (als Beispiel) angezeigt:</p>
<pre>+-----+------+-----------+---------+---------+-------+-------+------------------+
| Id  | User | Host      | db      | Command | Time  | State | Info             |
+-----+------+-----------+---------+---------+-------+-------+------------------+
| 385 | prog | localhost | NULL    | Query   |     0 | NULL  | show processlist |
| 957 | prog | localhost | test    | Sleep   | 21619 |       | NULL             |
+-----+------+-----------+---------+---------+-------+-------+------------------+
2 rows in set (0.00 sec)</pre>
<p>Um einen bestimmten Prozess zu beenden, nutzen Sie den Befehl &#8220;kill&#8221;:</p>
<pre>mysql&gt;kill 957</pre>
<p>Alternativ können Sie einen Prozess auch direkt aus der Kommandozeile beenden:</p>
<pre>mysqladmin kill 957</pre>
<p>Beachten Sie bitte, dass Sie stets die exakte Prozess-ID wissen.</p>
<p>Die folgenden mySQL Befehle könnten Ihnen ebenfalls weiterhelfen:</p>
<pre>mysql&gt; show status;
mysql&gt; show innodb status;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.yourhelpcenter.de/2008/12/mysql-prozesse-auflisten-stoppen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>mySQL: Logs löschen / leeren</title>
		<link>http://www.yourhelpcenter.de/2008/11/mysql-logs-loschen-leeren/</link>
		<comments>http://www.yourhelpcenter.de/2008/11/mysql-logs-loschen-leeren/#comments</comments>
		<pubDate>Sat, 29 Nov 2008 07:46:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Anleitungen]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[clean log]]></category>
		<category><![CDATA[clear logfiles]]></category>
		<category><![CDATA[Clear logs]]></category>
		<category><![CDATA[Logdateien]]></category>
		<category><![CDATA[Logfiles]]></category>
		<category><![CDATA[Logs löschen]]></category>
		<category><![CDATA[reset log]]></category>

		<guid isPermaLink="false">http://www.yourhelpcenter.de/?p=107</guid>
		<description><![CDATA[Unter mySQL löschen Sie die Logs (Log-Dateien) mithilfe des folgenden Befehls:
&#62; reset master;
Die (binären) Logfiles liegen bei einer Standardinstallation im Pfad &#8220;/usr/local/var/&#8221; und enden auf &#8220;-bin.000001&#8243;, &#8220;-bin.000002&#8243; usw.
]]></description>
			<content:encoded><![CDATA[<p>Unter mySQL löschen Sie die Logs (Log-Dateien) mithilfe des folgenden Befehls:</p>
<pre>&gt; reset master;</pre>
<p>Die (binären) Logfiles liegen bei einer Standardinstallation im Pfad &#8220;/usr/local/var/&#8221; und enden auf &#8220;-bin.000001&#8243;, &#8220;-bin.000002&#8243; usw.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yourhelpcenter.de/2008/11/mysql-logs-loschen-leeren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mySQL: Verbindungen trennen</title>
		<link>http://www.yourhelpcenter.de/2008/11/mysql-verbindungen-trennen/</link>
		<comments>http://www.yourhelpcenter.de/2008/11/mysql-verbindungen-trennen/#comments</comments>
		<pubDate>Sat, 29 Nov 2008 07:42:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Anleitungen]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[beenden]]></category>
		<category><![CDATA[connection]]></category>
		<category><![CDATA[entfernen]]></category>
		<category><![CDATA[hinauswerfen]]></category>
		<category><![CDATA[kappen]]></category>
		<category><![CDATA[löschen]]></category>
		<category><![CDATA[rausschmeissen]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[user]]></category>
		<category><![CDATA[user-session]]></category>
		<category><![CDATA[Verbindung trennen]]></category>

		<guid isPermaLink="false">http://www.yourhelpcenter.de/?p=104</guid>
		<description><![CDATA[Wenn Sie unter mySQL einen Benutzer bzw. seine Verbindung zur Datenbank trennen möchten, dann gehen Sie mit folgenden Befehlen vor:
Schritt 1:
Finden Sie die Connection-ID des Benutzers heraus:
&#62; show processlist;
+-----+------+-----------+---------+---------+-------+-------+------------------+
&#124; Id  &#124; User &#124; Host      &#124; db      &#124; Command &#124; Time  &#124; State &#124; [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn Sie unter mySQL einen Benutzer bzw. seine Verbindung zur Datenbank trennen möchten, dann gehen Sie mit folgenden Befehlen vor:</p>
<p><strong>Schritt 1:</strong><br />
Finden Sie die Connection-ID des Benutzers heraus:</p>
<pre>&gt; show processlist;</pre>
<pre>+-----+------+-----------+---------+---------+-------+-------+------------------+
| Id  | User | Host      | db      | Command | Time  | State | Info             |
+-----+------+-----------+---------+---------+-------+-------+------------------+
| 621 | prog | localhost | company | Sleep   | 21644 |       | NULL             |
| 822 | prog | localhost | company | Sleep   |   721 |       | NULL             |
| 912 | test | localhost | NULL    | Query   |     0 | NULL  | show processlist |
+-----+------+-----------+---------+---------+-------+-------+------------------+
3 rows in set (0.00 sec)</pre>
<p><strong>Schritt 2:</strong><br />
Trennen Sie die gewünschte Verbindung durch den Befehl</p>
<pre>&gt; kill 621;</pre>
<p>Sie können diesen Befehl auch von der OS Kommandozeile ausführen:</p>
<pre>mysqladmin kill 621</pre>
<p><strong>Fertig.</strong></p>
<p>Die folgenden mySQL Befehle können Ihnen zusätzlich weiterhelfen:</p>
<pre>&gt; show status;
&gt; show status\G;
&gt; show innodb status;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.yourhelpcenter.de/2008/11/mysql-verbindungen-trennen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
