Array dynamischer Größe

Das Array dynamischer Größe hat insofern eine dynamische Größe als das beim Überschreiten der aktuell verfügbaren, bereits allozierten Kapazität (c++: capacity) der Inhalt aus dem alten Array in ein neues größeres Array kopiert wird und das alte Array schlussendlich verworfen wird.

Ein Beispiel wäre der Typ std::vector<>:

#include <iostream>
#include <vector>

int main()
{
    std::vector<int> myvector;

    int cap ;
    int i_rh{};
    
    for (int i=0; i<100; i++)
    {
        std::cout << "neue Elemente verfuegbar: " << myvector.capacity() - myvector.size() << "\n";

        cap = myvector.capacity();
        if (!(cap - myvector.size()))
        {
            myvector.push_back(i);
            std::cout << "Für Element nummer " << i + 1 << " musste capacity auf " << myvector.capacity() << " (2 hoch " << i_rh++ << ") erhoeht werden, denn vergeben " << i << "/" << cap << " Elemente\n";
            continue;
        }
        myvector.push_back(i);



    }


    std::cout << "size: " << (int) myvector.size() << '\n';
    std::cout << "capacity: " << (int) myvector.capacity() << '\n';
    std::cout << "es wurde insgesamt " << i_rh << " Mal der Speicher für myvector erhöht\n";
    
    }

Der Code gibt auf meinem Gerät

neue Elemente verfuegbar: 0
Für Element nummer 1 musste capacity auf 1 (2 hoch 0) erhoeht werden, denn vergeben 0/0 Elemente
neue Elemente verfuegbar: 0
Für Element nummer 2 musste capacity auf 2 (2 hoch 1) erhoeht werden, denn vergeben 1/1 Elemente
neue Elemente verfuegbar: 0
Für Element nummer 3 musste capacity auf 4 (2 hoch 2) erhoeht werden, denn vergeben 2/2 Elemente
neue Elemente verfuegbar: 1
neue Elemente verfuegbar: 0
Für Element nummer 5 musste capacity auf 8 (2 hoch 3) erhoeht werden, denn vergeben 4/4 Elemente
neue Elemente verfuegbar: 3
neue Elemente verfuegbar: 2
neue Elemente verfuegbar: 1
neue Elemente verfuegbar: 0
Für Element nummer 9 musste capacity auf 16 (2 hoch 4) erhoeht werden, denn vergeben 8/8 Elemente
neue Elemente verfuegbar: 7
neue Elemente verfuegbar: 6
neue Elemente verfuegbar: 5
neue Elemente verfuegbar: 4
neue Elemente verfuegbar: 3
neue Elemente verfuegbar: 2
neue Elemente verfuegbar: 1
neue Elemente verfuegbar: 0
Für Element nummer 17 musste capacity auf 32 (2 hoch 5) erhoeht werden, denn vergeben 16/16 Elemente
neue Elemente verfuegbar: 15
neue Elemente verfuegbar: 14
neue Elemente verfuegbar: 13
neue Elemente verfuegbar: 12
neue Elemente verfuegbar: 11
neue Elemente verfuegbar: 10
neue Elemente verfuegbar: 9
neue Elemente verfuegbar: 8
neue Elemente verfuegbar: 7
neue Elemente verfuegbar: 6
neue Elemente verfuegbar: 5
neue Elemente verfuegbar: 4
neue Elemente verfuegbar: 3
neue Elemente verfuegbar: 2
neue Elemente verfuegbar: 1
neue Elemente verfuegbar: 0
Für Element nummer 33 musste capacity auf 64 (2 hoch 6) erhoeht werden, denn vergeben 32/32 Elemente
neue Elemente verfuegbar: 31
neue Elemente verfuegbar: 30
neue Elemente verfuegbar: 29
neue Elemente verfuegbar: 28
neue Elemente verfuegbar: 27
neue Elemente verfuegbar: 26
neue Elemente verfuegbar: 25
neue Elemente verfuegbar: 24
neue Elemente verfuegbar: 23
neue Elemente verfuegbar: 22
neue Elemente verfuegbar: 21
neue Elemente verfuegbar: 20
neue Elemente verfuegbar: 19
neue Elemente verfuegbar: 18
neue Elemente verfuegbar: 17
neue Elemente verfuegbar: 16
neue Elemente verfuegbar: 15
neue Elemente verfuegbar: 14
neue Elemente verfuegbar: 13
neue Elemente verfuegbar: 12
neue Elemente verfuegbar: 11
neue Elemente verfuegbar: 10
neue Elemente verfuegbar: 9
neue Elemente verfuegbar: 8
neue Elemente verfuegbar: 7
neue Elemente verfuegbar: 6
neue Elemente verfuegbar: 5
neue Elemente verfuegbar: 4
neue Elemente verfuegbar: 3
neue Elemente verfuegbar: 2
neue Elemente verfuegbar: 1
neue Elemente verfuegbar: 0
Für Element nummer 65 musste capacity auf 128 (2 hoch 7) erhoeht werden, denn vergeben 64/64 Elemente
neue Elemente verfuegbar: 63
neue Elemente verfuegbar: 62
neue Elemente verfuegbar: 61
neue Elemente verfuegbar: 60
neue Elemente verfuegbar: 59
neue Elemente verfuegbar: 58
neue Elemente verfuegbar: 57
neue Elemente verfuegbar: 56
neue Elemente verfuegbar: 55
neue Elemente verfuegbar: 54
neue Elemente verfuegbar: 53
neue Elemente verfuegbar: 52
neue Elemente verfuegbar: 51
neue Elemente verfuegbar: 50
neue Elemente verfuegbar: 49
neue Elemente verfuegbar: 48
neue Elemente verfuegbar: 47
neue Elemente verfuegbar: 46
neue Elemente verfuegbar: 45
neue Elemente verfuegbar: 44
neue Elemente verfuegbar: 43
neue Elemente verfuegbar: 42
neue Elemente verfuegbar: 41
neue Elemente verfuegbar: 40
neue Elemente verfuegbar: 39
neue Elemente verfuegbar: 38
neue Elemente verfuegbar: 37
neue Elemente verfuegbar: 36
neue Elemente verfuegbar: 35
neue Elemente verfuegbar: 34
neue Elemente verfuegbar: 33
neue Elemente verfuegbar: 32
neue Elemente verfuegbar: 31
neue Elemente verfuegbar: 30
neue Elemente verfuegbar: 29
size: 100
capacity: 128
es wurde insgesamt 8 Mal der Speicher für myvector erhöht

aus.

Ersichtlich wird also, dass std::vector

myvector.capacity()

in 2-er-Potenzen erhöht, und zwar immer dann, wenn die aktuell noch verfügbare Anzahl an Elementen im vector 0 ist.

myvector.capacity()

gibt hierbei immer die Anzahl der Elemente an, die aktuell maximal in den allozierten Speicherbereich (ergo dem Vektor) geschrieben werden können, ohne dass Vector ein nächstgrößeres Array mit i + 1 der Größe repräsentiert als Summe einer Reihe





im Speicher reservieren muss und dann die Daten ins neue Array kopiert.

Dadurch wird wieder Platz für



neue Elemente im Vektor.

Dynamisch alloziertes Array

Ein dynamisch alloziertes Array ist ein Array, dessen Größe zur Laufzeit festgelegt wird. Da seine Größe zur Laufzeit bestimmt wird, kann es flexibler sein als ein Array mit fester Größe (das im Stack-Speicher alloziert wird).

Ein Beispiel:

int* dynArray;
int size = 10; // kann zur Laufzeit festgelegt werden
dynArray = new int[size];
//... Arbeit mit dynArray ...
delete[] dynArray;
...zur Antwort

Naja dein Handy ist ein weiterer Faktor neben dem Passwort, das ist erst mal gut.

SMS-Probleme sind von data2309 bereits abgedeckt.

Generell zu 2FA:

Somit braucht der Angreifer im schlimmsten Fall also dein Handy.

Wenn aber ein anderes Gerät in deinem Heimnetzwerk kompromittiert ist, könnte der Angreifer sich über dein vertrautes Netzwerk auch ohne einloggen.

Das liegt daran, dass meist das Heimnetzwerk standartmäßig vom double-check ausgeschlossen ist, du möchtest ja nicht immer wenn du daheim bist 2FA machen müssen. Von wo anders aus kennst du das vielleicht, dass dann der Check kommt.

Auch könnte per Session-Hijacking der Cookie ohne Authentifizierung gestohlen werden, also dass der Angreifer dann eingeloggt ist, sofern ein Netzwerkgerät kompromittiert ist.

Oder dein Handy selbst ist kompromittiert..

...zur Antwort

Du könntest zum Beispiel das automatische Starten der Ausführbaren Datei WerFault.exe verhindern. Dazu benötigst du einen USB-Stick auf den du die Windows ESD-Funktion spielst. Den Installer findest du hier und wählst

Erstellen von Installationsmedien für Windows 11

und das Media-Creation-Tool wendest du dann auf einen USB Stick an, der mindestens 8 GB fasst. Danach kannst du nach diesem Youtube-Video bis 3:30 vorgehen, also von diesem Stick booten und wie im Video gemacht zu einer Explorer-Instanz navigieren (Funktioniert auf Win10 wie Win11). Nun kannst du auf dein File-System mit den nötigen Rechten zugreifen, ohne das kaputte Windows zu starten.

Du hast nun einige Optionen:

  1. Autostart-Ordner leeren: Falls WerFault.exe keine Windows-Datei ist solltest du diese mit etwas Glück hier finden: C:\Users\BENUTZERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup .
  2. Wichtige Daten retten, indem du einen weiteren Stick oder ähnliches verwendest.
  3. Windows auf Fehler prüfen, oder / und neu installieren.
  4. auf deinen Stick doch einen Windows-10-Installer aufspielen um Windows 10 anstatt 11 zu installieren, da Win11 noch einige Kinderkrankheiten aufweist.
  5. mit der Eingabeaufforderung Problembehandlung betreiben.

Ich würde aber empfehlen, Windows erst einmal im abgesicherten Modus zu starten und von da aus Problembehandlung zu betreiben.

Ich hoffe, ich habe dir damit etwas geholfen.

...zur Antwort

Um sicherzustellen, dass eine gelöschte Datei nicht wiederhergestellt werden kann, müssen Sie die Bereiche der Festplatte überschreiben, in denen die Datei gespeichert war. Da Sie den Namen der Datei nicht mehr kennen, ist der beste Ansatz, den gesamten freien Speicherplatz auf der Festplatte sicher zu überschreiben.

Es gibt verschiedene Tools, die Ihnen helfen können, den freien Speicherplatz sicher zu überschreiben. Einige dieser Tools sind:

  1. CCleaner (Windows) - CCleaner ist ein kostenloses Tool, das nicht nur Ihren PC optimiert und bereinigt, sondern auch eine Option zum sicheren Löschen von freiem Speicherplatz bietet. Um den freien Speicherplatz mit CCleaner zu überschreiben, gehen Sie folgendermaßen vor:
  2. a. Laden Sie CCleaner von der offiziellen Website herunter und installieren Sie es: https://www.ccleaner.com/ccleaner b. Starten Sie CCleaner und klicken Sie auf "Tools" in der linken Seitenleiste. c. Wählen Sie "Laufwerk wiper" (Festplatten-Wischer) aus. d. Wählen Sie "Nur freien Speicherplatz löschen" und wählen Sie das Laufwerk aus, auf dem die Datei gespeichert war. e. Wählen Sie unter "Sicherheit" die gewünschte Anzahl von Überschreibvorgängen aus (mehr Überschreibvorgänge bedeuten mehr Sicherheit, aber auch mehr Zeit). f. Klicken Sie auf "Wischen", um den Vorgang zu starten.
  3. BleachBit (Windows, Linux) - BleachBit ist ein weiteres kostenloses und Open-Source-Tool zum Bereinigen und Optimieren Ihres PCs. Es bietet auch eine Option zum sicheren Löschen von freiem Speicherplatz:
  4. a. Laden Sie BleachBit von der offiziellen Website herunter und installieren Sie es: https://www.bleachbit.org/ b. Starten Sie BleachBit und klicken Sie auf "Datei" und dann auf "Freien Speicherplatz löschen". c. Wählen Sie das Laufwerk aus, auf dem die Datei gespeichert war, und klicken Sie auf "Löschen".

Beachten Sie, dass das Überschreiben von freiem Speicherplatz bei SSDs (Solid-State-Drives) weniger wirksam sein kann als bei herkömmlichen Festplatten (HDDs) aufgrund von Wear-Leveling-Algorithmen und anderen Funktionen. Bei SSDs ist es empfehlenswert, die eingebaute Secure-Erase-Funktion oder den TRIM-Befehl zu verwenden, um den gesamten Laufwerksinhalt sicher zu löschen. Beachten Sie jedoch, dass dies alle Daten auf dem Laufwerk löscht, nicht nur die gewünschte Datei.

...zur Antwort

Ja, Sie können einen Repeater verwenden, um das WLAN-Signal des Nighthawk EAX80 zu erweitern und die beiden Zimmer in der ersten Etage besser zu versorgen. Der Repeater sollte in der Lage sein, sich drahtlos mit dem Nighthawk EAX80 zu verbinden und das Signal zu verstärken.

Es gibt viele Repeater auf dem Markt, aber da Sie nach einem Netgear-Repeater gefragt haben, empfehle ich den Netgear EX8000 Nighthawk X6S. Der EX8000 unterstützt WiFi 6 und ist ein leistungsfähiger Tri-Band-Repeater, der gut mit Ihrem Nighthawk EAX80 zusammenarbeiten sollte.

Bitte beachten Sie, dass der Netgear EX8000 möglicherweise größer ist als einige andere Repeater. Wenn Sie eine kompaktere Lösung bevorzugen, können Sie sich den Netgear EX6250 anschauen. Der EX6250 ist ein kleinerer und unauffälligerer Repeater, der ebenfalls WiFi 6 unterstützt und mit dem Nighthawk EAX80 kompatibel ist. Die Einrichtung ist ähnlich wie beim EX8000.

...zur Antwort
  1. Nach der ersten Halbwertszeit (6,01 Stunden) ist die Hälfte der ursprünglichen Menge vorhanden (50 %).
  2. Nach der zweiten Halbwertszeit (weitere 6,01 Stunden) zerfällt die Hälfte der verbleibenden Menge, sodass insgesamt nur noch ein Viertel der ursprünglichen Menge vorhanden ist (25 %).

Um die Gesamtzeit zu berechnen, addieren wir die beiden Halbwertszeiten zusammen:

Gesamtzeit = Halbwertszeit * Anzahl der Halbwertszeiten Gesamtzeit = 6,01 Stunden * 2 Gesamtzeit = 12,02 Stunden

Es dauert also 12,02 Stunden, bis von einer Ausgangsmenge Technetiums nur noch ein Viertel vorhanden ist.

...zur Antwort

Es ist schwierig, einen Cloudspeicher-Anbieter zu finden, der 100 GB kostenlosen Speicherplatz anbietet. Die meisten Anbieter bieten in ihren kostenlosen Plänen weniger Speicherplatz an. Einige der bekanntesten Anbieter und ihre kostenlosen Speicherplatzangebote sind:

  1. Google Drive: 15 GB kostenloser Speicherplatz.
  2. Microsoft OneDrive: 5 GB kostenloser Speicherplatz.
  3. Dropbox: 2 GB kostenloser Speicherplatz (erweiterbar durch Empfehlungen).
  4. Box: 10 GB kostenloser Speicherplatz.
  5. pCloud: 10 GB kostenloser Speicherplatz (erweiterbar durch Empfehlungen und Aktionen).

Um 100 GB oder mehr kostenlosen Cloud-Speicherplatz zu erhalten, können Sie entweder mehrere Konten bei verschiedenen Anbietern erstellen oder Angebote nutzen, die zusätzlichen Speicherplatz durch Empfehlungen oder zeitlich begrenzte Aktionen bieten.

Beachten Sie jedoch, dass kostenlose Pläne oft weniger Funktionen und weniger Support bieten als kostenpflichtige Pläne. Abhängig von Ihren Anforderungen und der Sensibilität Ihrer Daten sollten Sie sorgfältig abwägen, ob ein kostenloser Plan ausreicht oder ob ein kostenpflichtiger Plan mit erweiterten Funktionen und Sicherheitsmaßnahmen besser geeignet ist.

...zur Antwort

Das mit den Mathestunden machen Sie mutmaßlich extra morgens, sodass man auf die Idee kommt, diese sausen zu lassen und genau das ist das Aussieben hierbei.

Klar ist aber, dass sich hier zeigt, wem wirklich viel an seinem Informatikstudium liegt und wer den Weg des geringsten Wiederstandes vorzieht.

Lässt man da nur ein paar sausen, (ob relevant oder nicht finde ich egal, da alles was dir angeboten wird, später für dich wichtig sein kann, auch wenn es nicht abgefragt werden sollte) so ist sehr, sehr schnell abgehängt, insbesondere in der Frühphase deines Studiums.

Daher rate ich dir dringend davon ab, Mathe sausen zu lassen.

Solltes du an Mathe kein gesteigertes Interesse durch die Informatik haben, solltest du deinen Studienweg überdenken.

Frohes gelingen und ein schönes Wochenende,

Lukas Z.

...zur Antwort

Du könntest zum Beispiel in Python die WLan-Passwörter auslesen oder Browserpasswörter in C++ klauen, oder eine revshell aufbauen. Einen Virus in dem Sinne heißt das dann nicht mehr, wird aber umgangssprachlich eh alles so genannt.

Das darfst du dann schon, solange du mit der Erlaubnis deines Lehrers dieses Programm auf einem Computer ausfürst. Wenn dus auf deinem Eigenen machst, entscheidest sowieso du.

Wenn du ein bisschen drüber chatten willst, dann komm doch kurz auf dc.

CoolBlockZock#2993

...zur Antwort

Naja,

so wie das aussieht liegt ja keine Innterei frei.

Man könnte versuchen, es in die Ursprungsposition zu biegen,

dabei könnte der Pin dir aber abbrechen, wenn du Pech hast. Kommt auf die Qualität an.

Wenn beide wieder normal aussehen, könnte man es als Zwischenlösung noch nutzen, wenn du nicht warten willst.

Über Themen wie Versicherung und Sicherheit brauche ich aber nicht weiter zu reden, du siehst ja die anderen Antworten.

...zur Antwort

Naja,

an sich hat die Windows Command Prompt erst mal nichts mit Hacking an sich zu tun, es handelt sich hierbei um ein Terminal, das zwar Befehle entgegennimmt, aber dieses führt auch nur (je nach Fall) andere Programme aus.

D.h. das ganze "hacking" ist eigentlich viel mehr Analyse von Systemen, mit Tools die es schon gibt, Kali Linux ist ein eigenes Betriebssystem für Penetrationtester und bietet einen sehr umfangreichen Toolsatz für Exploitation und Analyse, von Wifi Hacking bis hin zu Payload gen.

Oft, bzw. meist sind hier aber jedoch eigene, angepasste Tools vonnöten, die dann in verschiedenen Sprachen wie Python, aber auch C, C++ usw. implementiert werden.

Es werden dann zum Beispiel aktiv Buffer-Overflows, also Speicherlecks in anderen Programmen bzw. Systemen ausgenutzt, um zum Beispiel erweiterte Rechte zu erlangen. Wenn ich also die CMD benutze, dann eher, um Programme, die den ganzen Hacking shit machen, auszuführen, jedoch nicht, um alleine damit in Systeme einzudringen. Es gibt auch .bat powershell payloads für windows remshells, die ein Bisschen was damit zu tun haben, ein Beispiel habe ich selbst implementiert und schließlich dann doch veröffentlicht, aber die habe ich hier eher außen vor gelassen, da das eher Payloads sind.

Jeder "Hacker" muss also auch Kenntnis in einigen Sprachen und auch Protokollen haben, weil man nur so verstehen kann, wie die einzelnen Prorgamme acuh funktionieren.

Ich hoffe, ich habe dich ein wenig weiter gebracht.

LG Lukas

...zur Antwort

Ich habe deine Frage wie folgt verstanden:

for i in range(1, OBERGRENZE):
  print(i, end=" ")
  if (i % 10 == 0)
    print()

Damit wird bis zu einer bestimmten obergrenze in 10er-Schritten die aktuelle Zahl ausgegeben.

"end" ist ein Defaultparameter von print, der ist standartmäßig auf '\n', also neue zeile. Wir ersetzen den dann einfach mal durch ein Leerzeichen.

print() gibt nur eine neue Zeile aus.

Ausgabe (z.b.):

1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100

LG Lukas

...zur Antwort

Du musst dir da nicht einmal unbedingt Malware eingefangen haben. Der Account wurde gelöscht? Dass kann sein, denn die Verwendung von sog. Skin-Changern, die die Hexadezimale Skin ID in den binaries manipulieren sind illegal und werden von Fortnite bei Sichtung mit einem permanenten Bann bestraft. Wenn dies der Fall ist, kannst du es vergessen, den Account zurückzuverlangen, da man mittlerweile sehr gut erkennen kann, ob der spez. Spieler da mit einer Skin-ID herumläuft, die er nicht besitzen dürfte (im Shop).

Ich hoffe, ich habe dir damit weitergeholfen und du hast nicht zu viel Geld verloren.

PS: Wenn du mit deiner Kreditkarte verknüpft warst, unbedingt sperren lassen! Kann ja immernoch sein, das dein Account nur geklaut wurde.

LG Lukas

...zur Antwort

Wenn du einen Brute-Force Angriff auf Instagram starten würdest, machst du dich Paragraph §303b des StGB strafbar, egal von wem der Account stammt. Die sog. Computersabotage bzw. das Stören von Telekomonikationsanlagen steht dabei unter einer Geldstrafe bzw. Freiheitsstrafe von bis zu 5 Jahren Gefängnis. In schwereren Fällen bis 10 Jahre. Du siehts also, das hier ist kein Kavaliersdelikt und es kann gut sein, das dich nicht lange danach die Polizei besuchen kommt...

Im Anbetracht dessen, kann ich dir davon dringend abraten.

LG

...zur Antwort

Hallo,

so weit ich das weiß, ist Minecraft zumindest nicht zu einem größeren Teil als Sorcecode für die Öffentlichkeit zugänglich, wenn überhaupt. Es gibt aber kostenlose Minecraft-Alternativen, bei denen das der Fall ist.

Zu decompilen ist aber nicht zu empfehlen, denn dass führt im besten Fall zu unlesbarem Code.

LG Lukas

...zur Antwort

Hallo Hattor,

das selbst ist erst mal noch nicht gefährlich, oder sogar nützlich, um Text entsprechend einzugliedern, wenn man auf andere Formattools verzichtet. Auch kann dann durch evtl. CSS noch etwas an dem Ausshen verbessert werden. Javascript sollte aber nicht ausgeführt werden können, weshalb ich mir keine Sorgen machen würde, da das erst mal nicht so ohne Weiteres mit ausgeführt werden kann.

Beachte aber, dass es durchaus Möglichkeiten gibt, Malware in Pdf-Dateien einzubetten, aber dann nicht über HTML Tags.

Mit freundlichen Grüßen

Lukas Zander

...zur Antwort

Von der Logik her siehts gut aus :)

Wenn es aber mehr als drei werte werden, dann empfehle ich dir (falls du das in C implementieren möchtest), über ein array der zahlen zu iterieren und eine veränderliche Variable wählen, die, falls der nächste Wert größer ist, mit diesem neuen Höchstwert überschrieben wird, also irgendwie so:

int max(int *zahlen, int len) {
  int res = *zahlen;
  for (int i = 0; i < len; i++)
    if (zahlen[i] > res)
      res = zahlen[i];
  return res;
}

LG

...zur Antwort

Ich würde deine Aufabe folgendermaßen lösen, falls es dir einfach genügt:

import time, random
def ladebildschirm(text, seperator: str = '.', haefigkeit: int = 10):
    for i in range(haefigkeit):
        print("\r", end="")
        print(text + seperator * i, end="")
        time.sleep(random.random())

Du könntest dann die Funktion mit z.B.:

ladebildschirm("Connecting", haefigkeit=5)

aufrufen, und du bekommst das heraus, was du willst.

Weitere Fragen gerne auf Discord: CoolBlockZock#2993

...zur Antwort