Ich wurde von einem Online-Kurs auf eine Übung zu arbeiten, wenn ich auf thos stolperte, zog ich den Code von fast alles, aber dies noch geschieht, mein Code wird alsPrintf druckt den Inhalt von zwei Variablen
static const char alphabet1[] = "abcd";
void mycrack(char* hashed)
{
char pass[4];
char salt[2];
for (int a = 0, size = sizeof(alphabet1); a < size - 1; ++a) {
for (int b = 0, size = sizeof(alphabet1); b < size - 1; ++b) {
for (int c = 0, size = sizeof(alphabet1); c < size - 1; ++c) {
for (int d = 0, size = sizeof(alphabet1); d < size - 1; ++d) {
pass[a] = alphabet1[a];
pass[b] = alphabet1[b];
pass[c] = alphabet1[c];
pass[d] = alphabet1[d];
salt[0] = '5';
salt[1] = '0';
printf("salt:%s \n",salt);
}
}
}
}
}
int main(int argc, string argv[1])
{
mycrack(argv[1]);
return 0;
}
folgt
aber wo printf sollte das Salz (50) für jeden itteration i das Salz erhalten drucken + den Pass: ex
salt:50a
salt:50ab
salt:50abc
salt:50abcd
salt:50abcd
salt:50abcd
salt:50abcd
salt:50abcd
salt:50abcd
salt:50abcd
salt:50abcd
bitte, beachten Sie, ich weiß, dass ich innerhalb eines statischen Wert sein sollte nicht erneut erklärt Die Schleife, aber ich habe den Code angepasst, der Originalcode hängt von Argv-Eingabe und dafür ab wäre schwieriger zu veranschaulichen.
Sie scheinen, dass 'char' Strings in C zu vergessen sind wirklich *** nullterminierte ** Byte-Strings * bezeichnet. Der Null-Terminator ist wichtig, um nicht zu vergessen. Und beachten Sie, dass der Null-Terminator das Zeichen ''\ 0'' ist, kein Null-Zeiger (wie' NULL' ist). Das bedeutet natürlich, dass eine Zeichenfolge aus zwei Zeichen Platz für * drei * Zeichen benötigt, um an den Terminator zu passen. –
@Someprogrammerdude, danke für die Hilfe, ich bin an höhere Sprachen gewöhnt und total vergessen, damit umzugehen. –
'Größe = Größevon (Alphabet1); a ist bedeutungsloser Code Bloat, stattdessen 'a
Lundin