1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Andy

Beiträge von Andy

  • Text-only Counterstrike :D

    • Andy
    • 28. November 2009 um 19:00

    Hi,
    erinnert mich an die allerersten Text-Adventures :rofl: aus den 70er Jahren. Hab mal eins für Apples IIe bzw LISA in Basic programmiert. Das waren damals die absoluten Renner bei uns an der Schule...
    Meistens musste man in einem Labyrinth den Weg durch verschiedene Level nach unten finden, die Gegner auf dem Weg dorthin wurden immen schwieriger. allerdings haben die auch schon Waffen und Rüstungen "gedropt" und es gab Erfahrungspunkte EP.

    Btt: wenn ich in eine Richtung laufe, werde ich nach 3-4 Schritten immer auf ein anderes Feld "gebeamt".
    ggf wärs gut, wenn man eine "Warnung" bekäme, dass der "Feind" in der Nähe ist

  • FileRead liest nur die ersten 4 Zeichen

    • Andy
    • 28. November 2009 um 17:07

    Hallo, habe mal ein kleines Script zur Verdeutlichung des Vorgehens bei Bearbeitung von "Binärdateien" geschrieben und auch kommentiert, was wo und warum passiert....

    Spoiler anzeigen
    [autoit]


    $datei = "test.gfx"

    [/autoit] [autoit][/autoit] [autoit]

    $binfile = FileOpen($datei, 18) ;eine Binärdatei mit zufälligen Daten schreiben
    $binstring = ""
    For $i = 1 To 50 ;zufällige "Binärdaten" schreiben
    $binstring &= Chr(Random(1, 255, 1))
    Next
    $binstring &= Chr(0) ;ein nullbyte kennzeichnet bei einer TEXTDATEI das Ende, kann aber in einer Binärdatei als ganz normales Zeichen vorkommen
    $binstring &= @CRLF
    $binstring &= "Hallo, hier ist ein Text mitten in der Binärdatei!" ;ein Text wird in die Binärdaten eingefügt
    $binstring &= @CRLF
    For $i = 1 To 50 ;zufällige "Binärdaten" schreiben
    $binstring &= Chr(Random(0, 255, 1))
    Next

    [/autoit] [autoit][/autoit] [autoit]

    FileWrite($binfile, $binstring) ;schreibt eine "Binärdatei", welche aber auch Text enthält

    [/autoit] [autoit][/autoit] [autoit]

    FileClose($binfile)
    ShellExecuteWait("scite.exe", $datei) ;Dateiinhalt in Scite darstellen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;********************************************************************
    ;Binärdatei laden und das Wort "Text" durch das wort "Platzhalter" ersetzen
    $binfile = FileOpen($datei, 16) ;Datei öffnen
    $binstring = FileRead($binfile, FileGetSize($datei)) ;liest Daten im HEX-Format, alle Zeichen in der Datei
    FileClose($binfile)

    [/autoit] [autoit][/autoit] [autoit]

    ;MsgBox(0, 'Darstellung Dateiinhalt im Hexformat',$binstring)

    [/autoit] [autoit][/autoit] [autoit]

    $string = BinaryToString($binstring) ;Hexdaten umwandeln in einen String

    [/autoit] [autoit][/autoit] [autoit]

    #Region Nur zur Info, wie man den gesamten Dateiinhalt anzeigen kann, für das eigentliche Ersetzen unnötig
    ;die Stringlänge ist 151 byte, es werden aber nur die ersten 50 Byte in einer Msgbox angezeigt, denn das 51. Byte ist ein Nullbyte....
    MsgBox(262144, "Vergleich Scite / Messagebox AutoIt", "In Scite werden die Nullbytes durch NUL-Zeichen ersetzt, die gesamte Datei ist lesbar." & @CRLF & @CRLF & _
    "Die Darstellung in der Messagebox erfolgt nur bis zum ersten Nullbyte an Position " & StringInStr($string, Chr(0)) & ", siehe unten! " & @CRLF & _
    "Allerdings ist das Wort ""Text"" in der Datei an der Position " & StringInStr($string, "Text") & " enthalten!" & @CRLF & _
    "Um in einer Msgbox auch den gesamten Dateiinhalt darstellen zu können, muß man die Nullbytes ersetzen!" & @CRLF & @CRLF & $string)
    ;die DARSTELLUNG per Msgbox oder anderen Darstellungen funktioniert nur bis zum nächsten NULLBYTE! Der String wird aber dadurch nicht verändert!
    $replace = StringReplace($string, Chr(0), "CHR(0)") ;ersetzt alle Nullbytes mit dem Text CHR(0), damit man den gesamten Dateiinhalt darstellen kann
    MsgBox(262144, "Beispiel zur Darstellung des gesamten Dateiinhaltes in einer Msgbox", "Die Nullbytes wurden durch den String ""CHR(0)"" ersetzt. Der enthaltene Text ist nun auch in einer Msgbox lesbar..." & @CRLF & @CRLF & $replace) ;Der Dateiinhalt ist nun "lesbar"
    #Region

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0, "Das Wort ""Text"" wird nun in der Datei ersetzt...", "Bitte OK drücken!")
    $replace2 = StringReplace($string, "Text", "Platzhalter", 0, 2) ;man kann den Text im String ersetzen/verändern, allerdings nicht mit stringregexp()
    $binfile = FileOpen($datei, 18) ;Dateihandle holen....
    FileWrite($binfile, $replace2) ;... Daten im HEX-Format schreiben
    FileClose($binfile)

    [/autoit] [autoit][/autoit] [autoit]

    ShellExecuteWait("scite.exe", $datei)

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0, "Ersetzt", "Das Wort ""Text"" wurde durch ""Platzhalter"" ersetzt! In Scite sieht man das Ergebnis!")

    [/autoit]
  • Doppelgeburtstag

    • Andy
    • 28. November 2009 um 13:37

    Glücklichen Herzwunsch und alles Gute den beiden Geburtstags-"kindern" :D auch von mir!

  • Torrent - Allgemeine Fragen

    • Andy
    • 28. November 2009 um 13:18
    Zitat

    Jaja, Wikipedia und die Relevanzdebatte

    Ganz ehlich!? Wenn 90% der hier Fragenden sich dort auch nur NÄHERUNGSWEISE vorher informieren würden, dann wäre ich schon froh. Man muß sich ja nicht ausschließlicht dort informieren. Sowas fällt bei mir unter den Begriff Medienkompetenz.
    "Früher" gabs dicke Bücker, da stand "Lexikon" auf dem Buchrücken. Auch nicht verkehrt! Aber von jemandem in der heutigen Zeit zu verlangen, bei einer Frage in einem BUCH nachzuschlagen ist zugegebenermaße archaisch....
    Foren zumüllen ist dagegen IN. Nix gegen den Threadersteller, der ist wenigstens in der Lage, deutlich und verständlich in akzeptabler Form seine Frage zu formulieren! Da haben wir (nicht nur hier im Forum) schon andere Beispiele gesehen :S

    BtT: Browser benutzen der sich auf Torrents versteht ;)

  • Aus deaktiviertem Programm Textinhalte lesen!!!

    • Andy
    • 27. November 2009 um 20:08
    Zitat

    nein will nur mit zb ImgSearch suchen ob dort gerade Login ist oder net...

    Man kann keine "Images" suchen wo keine existieren! Ein "Window" ist in erster Linie eine Menge von Beschreibungen, Controls, Nachrichten uswusf. .
    Das was du auf dem Bildschirm siehst, ist nur eine DARSTELLUNG dieses Windows. Und auch nur dann kannst du in dieser Darstellung nach "Images" suchen. Wenn man mit minimierten oder "unsichtbaren" Programmen kommunizieren möchte, dann macht man das uber Nachrichten und/oder andere Methoden, aber "Images" gibts da keine, die existieren einfach nicht. Daher kann man auch nicht mit Pixelsearch oder anderen ähnlichen Funktionen suchen....

    Wenn dein minimiertes Fenster ein Control für das Login enthält, dann könnte man es darüber versuchen. Es bietet sich die Verwendung des AutoIt-windowInfo-Tools an....

  • Firewall über 100.000 zugriffe - normal??

    • Andy
    • 27. November 2009 um 19:40

    Nein, das ist heutzutage "normal". Da wir in dem tollen System der Zwangstrennung und Vergabe einer neuen IP alle 24h sind, könnte es sein, daß deine IP kurz vorher noch von einem lieben Mitmenschen mit einer großen Fangemeinde genutzt wurde...(hab ich das nicht fein umschrieben^^?)

    Wenn du einen Router hast und auch das Spiel WC3 (WarCraft3, jaja, hat soooo nen Bart^^ aber in WC3 bekommt man einfachst die IP´s der Mitspieler) dann zock mal einige Runden und lass dir die gedroppten Pakete vom Router anzeigen...viel Spass dabei.

    Btw, solange nicht permanent jemand von DRINNEN versucht nach draussen zu telefonieren, ist das kein Problem.

  • Torrent - Allgemeine Fragen

    • Andy
    • 27. November 2009 um 19:34

    http://de.wikipedia.org/wiki/BitTorrent beantwortet bestimmt nicht alle, aber die relevanten Fragen....

  • Torrent - Allgemeine Fragen

    • Andy
    • 27. November 2009 um 19:29

    Leecher: Die jenigen, die die Datei AUSSCHLIESSLICH herunterladen, aber den Upload verweigern....

  • FileRead liest nur die ersten 4 Zeichen

    • Andy
    • 27. November 2009 um 19:04

    Wenns schon am AUSLESEN der Daten hapert, dann viel Spass beim Ändern....
    Wozu gibts eigentlich HEX-Editoren?

  • Torrent - Allgemeine Fragen

    • Andy
    • 27. November 2009 um 19:01
    Zitat

    Ich verstehe aber das mit dem hochladen nicht. Wereden dann ständig Daten hochgeladen?

    Das "System" Torrent lebt ausschließlich davon, daß du von verschiedenen Quellen die Einzelteile der Daten gleichzeitig lädst. Sagen wir du lädst ein Video mit 5 Folgen der Simpsons als Inhalt, dann wird die erste Folge vom Server1, die 2. Folge vom Server2 usw downgeloadet und bei dir auf dem Rechner wieder zu einem Video zusammengebaut.
    Das funktioniert natürlich nur dann, wenn auf einer ausreichenden Anzahl an Rechnern im Netz dieses Video vorrätig ist. Wenn nur 3 Rechner eine Datei anbieten, dann kannst du diese Datei natürlich wesentlich langsamer laden, als wenn 3000 Rechner diese Datei anbieten.
    Damit natürlich so viele Rechner wie möglich Daten anbieten, wird Dein aktueller Download auch GLEICHZEITIG als Upload zur Verfügung gestellt! Wenn dein Nachbar also 5 Sekunden nach dir dieselbe Datei lädt, dann bist DU auch einer der Server! ...oder du bist nur ein Leecher :rolleyes: ...dann hab ich nix gesagt....

  • TCP - Datei Laden

    • Andy
    • 27. November 2009 um 18:02

    Kein Ding...immer wieder gerne.
    Aber eins noch, du musst abfangen, ob du eine "normalen" HTTP-Rückgabe erhälst (als Ascii-Text) oder eine mit der HEX-Kennung '0x' an den ersten beiden Stellen als Binärübertragung!
    Wenn bei einem Download die Datei nicht vorhanden oder falsch geschrieben wurde, dann bekommst du ja die Fehlermeldung in Klarschrift....

    btw. der Header trennt sich von der Nachricht durch eine "blank line", das sollten also 2 CRLF direkt hintereinander sein, die Header sind nicht "genormt"
    weiterhin wäre zu überlegen, die Daten direkt in eine Datei zu schreiben statt sie erst komplett in den Speicher zu lesen.

  • _Au3Optim (Inline-Funktionen und Code-Optimierung)

    • Andy
    • 27. November 2009 um 15:55
    Zitat

    - Statements die über mehrere Zeilen gehen werden zu einer Zeile vereint.

    Sehr fein! Könnte man in Scite einbauen, um u.a. div. Debugging-Zeilen an die richtige Position zu bringen.
    Bin jetzt mit dem Obfuscator nicht soooo fit, könntest du einen optimalen, "allgemeingültigen" Header zum Einsetzen in die *.AU3 erstellen? Oder ggf innerhalb der Funktion schon einen Obfuscator-Durchlauf machen?

  • DeskLock

    • Andy
    • 27. November 2009 um 15:36

    Ich fand die Idee mit dem Randomnamen auch nicht schlecht. Der erste Prozess startet einen zweiten mit einem Randomnamen. Beide überwachen sich gegenseitig. Externe Programme werden zwar den "DeskLock"-Prozess finden und schliessen können, aber mit Sicherheit aber nicht den Randomnamen.
    GGf gibts auch eine Möglichkeit, neu hinzugekommene Medien (USB-Sticks,CD/DVD,Diskette) abzufragen und die davon per Autostart angeworfenen Prozesse abzuschiessen. D.h. alle Prozesse (ausser beim Start des Lockers vorhandene) werden von einem der beiden Scripte abgeschossen. So kann man den Autostart lassen, Programme können aber trotzdem nicht gestartet werden.

    Nachteil, evtl automatisch startende Prozesse des Systems (Backup usw.) müsste/könnte man ausnehmen.

  • Zeichenkette auseinander nehmen und Teile davon wieder zusammensetzen

    • Andy
    • 27. November 2009 um 15:24
    [autoit]

    $string = "Max Mustermann03/OU=xxx/OU=yyy/O=zzz"
    $string=stringreplace($string,"/OU=","/") ;ersetzt teilstrings
    $return=stringreplace($string,"/O=","/") ;ersetzt teilstrings
    MsgBox(1, "", $return)

    [/autoit]
  • TCP - Datei Laden

    • Andy
    • 27. November 2009 um 11:33

    Hallo,
    sicherlich wird es irgendwo eine Definition des Headers geben, der Rest ist wie schon gezeigt pillepalle.
    Ich hab den Header in meinem Beispiel beim 11. CRLF per definitionem "beendet" :D , hat so schön gepasst.
    Beim Test mit der uhr.png oben rechts hier auf der site ist es der 10. CRLF bei dem man trennen muss....

    Wenn man ein Protokoll/Format nicht kennt, dann muss man eben solange dran rumstricken, bis es passt, oder bis man jemanden trifft der weiß wie es geht^^

    /*edit*/ Übertragene Dateilänge (incl. Header) minus ausgelesene "Rohdatenlänge" ist gleich Länge des Headers

    [autoit]

    ;http://www.autoit.de/wcf/icon/dateS.png
    $oFile = FileOpen(@scriptdir&"\uhr.png", 18)
    $srecv=stringreplace($srecv,"0x","") ;alle 1024 langen strings wieder aufdröseln
    $header=binarytostring("0x"&stringleft($srecv,stringinstr($srecv,"0D0A",0,10)+3)) ;das 10. crlf finden
    MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$header' & @lf & @lf & 'Return:' & @lf & $header & @CRLF &stringlen($header) ) ;### Debug MSGBOX
    $headerarray=stringsplit($header,@crlf,3) ;zeilen splitten
    _arraydisplay($headerarray)
    $laenge=number(stringright($headerarray[6],stringlen($headerarray[6])-stringinstr($headerarray[6]," ",0,-1))) ;zahl aus dem 6. arrayfeld auslesen
    $srecv=stringtrimleft($srecv,stringlen($srecv)-$laenge*2) ;header abschneiden
    $sRecv= binarytostring("0x"&$srecv) ;fileformat
    FileWrite($oFile, $sRecv)
    FileClose($oFile)

    [/autoit]

    noch beliebig kürzbar, aber so wird der Weg zu den Rohdaten relativ klar

  • DeskLock

    • Andy
    • 27. November 2009 um 11:10
    Zitat

    Und so wirds geknackt:

    Lösung: 2 Prozesse die sich gegenseitig überwachen und wieder neustarten.

  • DeskLock

    • Andy
    • 27. November 2009 um 00:44

    ist das Absicht, daß sich der Locker mit nem Alt-F4 ausgehebeln lässt?

  • Ausgabe in eine TXT

    • Andy
    • 27. November 2009 um 00:37

    Hallo Alina,
    Einzeiler.... :thumbup:

    [autoit]

    For $xx = 0 To 2
    MsgBox(0, "", $Var[$xx])
    Next

    [/autoit][autoit][/autoit][autoit]

    FileWriteLine("_Found_file.txt",$var[2]) ;die letzte messagebox in ein file schreiben

    [/autoit]

    zweiter...das kommt davon wenn man mitten in der Nacht Kaffee kochen geht....

  • TCP - Datei Laden

    • Andy
    • 27. November 2009 um 00:19

    sodele, liest die Dateilänge aus dem Header und schreibt das File.

    [autoit]

    $oFile = FileOpen(@scriptdir&"\AutoItlogo.gif", 18)
    $srecv=stringreplace($srecv,"0x","") ;alle 1024 langen strings wieder aufdröseln

    [/autoit][autoit][/autoit][autoit]

    $header=binarytostring("0x"&stringleft($srecv,stringinstr($srecv,"0D0A",0,11)+3)) ;das 11. crlf finden
    MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$header' & @lf & @lf & 'Return:' & @lf & $header) ;### Debug MSGBOX
    $headerarray=stringsplit($header,@crlf,3) ;zeilen splitten
    _arraydisplay($headerarray)
    $laenge=number(stringright($headerarray[6],stringlen($headerarray[6])-stringinstr($headerarray[6]," ",0,-1))) ;zahl aus dem 6. arrayfeld auslesen
    MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$laenge' & @lf & @lf & 'Return:' & @lf & $laenge) ;### Debug MSGBOX

    [/autoit][autoit][/autoit][autoit]

    $srecv=stringtrimleft($srecv,stringlen($header)*2) ;header abschneiden
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $srecv = ' & $srecv & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit][autoit][/autoit][autoit]

    $srecv=stringleft($srecv,$laenge*2) ;die zahl hab ich aus dem header =länge des gif (hoffentlich^^)
    $sRecv= binarytostring("0x"&$srecv)

    [/autoit][autoit][/autoit][autoit]

    FileWrite($oFile, $sRecv)

    [/autoit][autoit][/autoit][autoit]

    FileClose($oFile)

    [/autoit]


    /*EDIT*/ kl. Fehler beseitigt, du machst das wie ich dich kenne mit einer Zeile regex^^
    Super Script übrigens! :thumbup:

  • TCP - Datei Laden

    • Andy
    • 26. November 2009 um 23:48
    [autoit]

    $oFile = FileOpen(@scriptdir&"\AutoItlogo.gif", 18)

    [/autoit][autoit][/autoit][autoit]

    $srecv=stringreplace($srecv,"0x","") ;alle 1024 langen strings wieder aufdröseln
    $srecv=stringtrimleft($srecv,stringinstr($srecv,_stringtohex("GIF"))-1)
    $srecv=stringleft($srecv,12718*2) ;die zahl hab ich aus dem header =länge des gif
    $sRecv= binarytostring("0x"&$srecv)

    [/autoit][autoit][/autoit][autoit]

    FileWrite($oFile, $sRecv)

    [/autoit][autoit][/autoit][autoit]

    FileClose($oFile)

    [/autoit]

    so gehts einwandfrei...musst nur noch die Länge der übertragenen Daten (hier das GIF) aus dem Header fischen....ich bastel mal was^^

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™