Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17
  1. #1

    Standard Logikproblem/Suche Idee

    Also es geht um folgendes...

    Ich habe ein Webpanel indem ich Tasks für den Bot eintragen kann dass schaut so aus:


    Und mein Table für die Tasks so:
    CREATE TABLE tasks (
    nick varchar(50) NOT NULL default '',
    command varchar(255) NOT NULL default '',
    bnum int(11) NOT NULL default '0',
    executed int(11) NOT NULL default '0'
    ) TYPE=MyISAM;
    Nun habe ich nur ein Problem.. mein bot connected jede 10min und es wird bis jetzt nur Abgefragt wie ob er schon in der Datenbank vorhanden ist oder nicht.

    Wie könnte ich es jetzt realisieren das er den Task nur einmal ausführt und sich für längere Zeit merkt dass er den Auftrag schon ausgeführt hat? Die Abfrage ob schon die erforderlichen 'executions' erfolgt sind kann man ja einfach Abfragen.

    Ungf. so:

    if limit < execution {
    echo befehl
    }
    nur wenn er dann wieder connected soll er den nächsten command in der Liste ausführen.. habe irgendwie ein Brett vor dem Kopf!

    Danke schonmal wenn sich jemand die Zeit nimmt sich dass durchzulesen..
    Geändert von CYSER (14.12.2010 um 11:23 Uhr)

  2. #2
    Anfänger
    Registriert seit
    11.12.2010
    Beiträge
    28

    Standard

    Genau das ist die einzige Herausforderung bei der Programmierung eines Webpanels. Du musst dir merken welcher Bot was und wann ausführt. Das ganze natürlich mit möglichst wenigen Queries und immer möglichst aktuell. Du solltest dir ein Diagramm zeichnen, in dem du festlegst, wie ein Bot in welcher Situation reagieren soll, denn ich kann dir versprechen, dass du dich sonst noch mehr verwirrst. Was wenn ein Bot während der Ausführung offline geht? Was wenn ein Command abgebrochen wird? Sollte man nicht zwischen verschiedenen Befehlen unterscheiden? Ein bin-update sollte optimalerweise nicht mehrmals ausgeführt werden

  3. #3

    Standard

    , ja du hast recht.. klingt logisch bei dem Rest hatte ich keine Probleme, da hängts bei mir irgendwie. Ich werd mich mal an eine Skizze setzen..

    Wenn ich weitergekommen bin werde ich dass mal posten

  4. #4
    OpCodeKiddy Avatar von EBFE
    Registriert seit
    30.03.2009
    Beiträge
    442

    Standard

    Nur als Anmerkung: warum immer den Server belasten? Der Bot kann sich doch die letzten ausgeführten Befehle merken
    TrueCrypt/RAR/Zip Passwort vergessen und das Bruten dauert ewig? Oder brauchst du fein abgestimmte Wortlisten? Hilf dir selbst mit WLML - Word List Markup Language
    Gib Stoned/Mebroot/Sinowal und anderen Bootkits keine Chance: Anti Bootkit v 0.8.5

  5. #5

    Standard

    Ja daran hatte ich auch schon gedacht aber wie soll ich es über ne längere Zeit speichern wenn z.B. der Pc des Bots herunterfährt. In einer Text-datei oder in den Resourcen speichern? Ich wollte eigentlich eher den Server belasten.. - wie du so schön gesagt hast. Doch ich kriege es nicht gebacken ich wollte eigentlich nur immer bei executed + 1 rechnen doch das schützt nicht vor Doppelausführungen.. habe ich dann gemerkt x)

  6. #6
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Wenn nur der Bot sich das merkt muss der Bot auch in der Lage sein, dem Command&Control Server mitzuteilen, dass der Befehl nun oft genug ausgeführt wurde, wobei man dem Bot letztlich Kontrolle über den Server einräumen müsste, was logischer Weise nicht wünschenswert ist (vorallem deshalb, weil dann ein Angreifer "Bot spielen" könnte und so Befehle aus der DB löscht, bevor diese wirklich ausgeführt worden sind).

    Eine mögliche Lösung wäre es dem Bot eine eindeutige ID zu verpassen (möglichst etwas Computer-bezogenes und nicht gerade die IP, da die sich ja i.d.R. ändert) und sich zu merken, welcher Bot sich welche Befehle wann abgeholt hat. Entsprechend dem kann man dann dem Bot die Befehle geben, die er noch nicht ausgeführt hat, bzw. der Bot kann Befehle abfragen, die er vor einem Neustart erhalten hat und noch ausführen soll.
    Ein weiterer Vorteil ist der, dass sich ein Bot dann auch registrieren kann (Vorsicht: Flood-Schutz einbauen!) und so auch erweiterte Statistiken erstellt werden können.

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  7. #7

    Standard

    Danke für die Anregungen BlackBerry um nochmal drauf zu einzugehen;
    ..und sich zu merken, welcher Bot sich welche Befehle wann abgeholt hat...
    Da sind wir beim Knackpunkt angekommen es, ist ja so das ich den Bot schon mit einer eindeutigen ID registriert habe.. das ist schonmal da.

    Nun habe ich eine eine Zeile in Tasks die sagen wir mal so aussieht:
    Task-1, download*http://bla.de/file.exe, 100, 0
    Ich kann ja jetzt nicht extra für jeden Task ein Table registrieren (was phpseitig garnicht geht?) um die namen der bots einzutragen die den Task schon ausgeführt haben.

    Um dann letztendlich zu checken ala:
    select*eintask if botname schon im table nächster task
    Das muss doch einfacher gehen, irgendwie ist mein Horizont in Php auch noch nicht so weit um mir so ein ~ "simpel" scheinendes System auszudenken.

    Ich möchte das aber schon irgendwie schaffen :-(

  8. #8
    NoClose Wurm
    Registriert seit
    31.03.2009
    Beiträge
    174

    Standard

    Was ist wen jeder bot ne eigene spalte bekommt.

    Alla bot1_id|download*http://bla.de/file.exe, 100, 0,befehl2,befehl3|

    sähe dann so aus

    Bot1:halo server ich lebe und bin bot1 hast du befehle für mich ?
    Server:jo in deiner table steht du sollst file.exe runterladen und befehl 2 ist auchnoch da.
    Bot1v2:Jo exe runtergeladen und ausgeführt. Hast du noch was ?
    Server:befehl 2
    Bot1v2:done

    hab mich mysql nur nen bischen beschäftigt

  9. #9

    Standard

    @dzdz danke dir , habe jetzt mal was erstellt - vielleicht kann es wer nachvollziehen bei fragen zu bestimmten Prozeduren werde ich nochmal fragen


  10. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    lol123321 (14.12.2010)

  11. #10
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Und da hapert es halt schon bei den Basics im Datenbankdesign.

    Wofür ist eine Tabelle gut? Eine Tabelle fasst gleiche Daten zusammen.

    Wenn man dynamische Namen (wie Tabelle1, Tabelle2, ...) benutzt, weiß man i.d.R. schon, dass man beim DB-Design richtig Mist gebaut hat, da eine Tabelle für sich zur strukturierung dient und du dir bei dynamischen Tabellennamen auch noch die Namen merken müsstest (=> Strukturieren von Strukturiertem :S)



    Jeder User landet in der selben Tabelle. Jeder Task landet in der selben Tabelle.
    Jeder Eintrag hat seine eigene eindeutige(!) ID.

    Da ein User viele Tasks abarbeiten kann und ein Task von vielen Usern bearbeitet wird (m:n-Beziehung) muss eine Assoziationstabelle her. Diese hat als Einträge jeweils die UserID und die TaskID. D.h. sie repräsentiert die Abarbeitung eines Users von genau einem Task.

    Die Menge der User, die an einem Task arbeiten kannst du dann ganz einfach selektieren und mit dem angegebenen Limit vergleichen (siehe Beispielabfrage im Bild)... je nachdem ob das mehr oder weniger sind erlaubst du dann halt das Aufnehmen neuer Tasks... Gibst du bei einem Task jeweils noch ein Datum an, an dem er ausläuft kannst du dann auch leicht eine Liste aller laufenden Tasks für einen User generieren.

    Das läuft dann ungefähr so: der Client verbindet zum Server und fragt ganz nett "so Chef, was steht denn heute an?". Der Server schaut erstmal was noch zu erledigen ist - d.h. er selektiert alle laufenden Aufträge von dem speziellen User (der muss natürlich bereits seine Identifikation gesendet haben) und schaut nach bei welchen Aufträgen das "Verfallsdatum" noch nicht überschritten wurde. Die gibt der Server dem Client aus. Zusätzlich fragt der Server sich auch noch welche Aufträge laufen und NOCH NICHT von dem User bearbeitet werden (aber noch nicht von genug Clients bearbeitet werden) und gibt auch die an den User weiter.
    Tjo... und dann wird geschafft. (bleibt nur zu hoffen, dass das keine DDoS-Aufträge o.ä. sind - weil das wäre ziemlich armselig)
    Geändert von blackberry (14.12.2010 um 17:41 Uhr)

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  12. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    lol123321 (14.12.2010)

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Suche nach Idee für Webseite...
    Von cl9wn im Forum Webmaster
    Antworten: 9
    Letzter Beitrag: 21.05.2010, 22:23

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •