[AutoIt]Tutorial zu Browsergamebots (Packetbots und IEbots)

12/05/2010 00:02 Shadow992#166
Quote:
Originally Posted by atakon View Post
das ist für mich extrem unlogisch weil ich kein richtiges genie in diesem ereich bin ich hab es ehrlich gesagt nicht kapiert wie es geht
Dann solltest du dir ersteinmal die Grundlagen aneignen und zuvor vielleicht ein paar Pixel-Bots machen.
01/06/2011 00:08 -Nò_óNê-#167
Ich hab da ma ne Frage, und zwar möcht ich gern wissen ob du bei dem Packetbot-Teil die Funktion von AMrK 1:1 übernommen hast bis auf die msg funktion, oder ob du noch andere Dinge in der Funktion geändert/diesem Tut angepasst hast.
Ansonsten sehr geiles Tut, habs schon geschafft mich in speed4life einzuloggen aber irgendwie will der net Tunen -.- Auf jeden Fall dickes THX^^ lg

€: Jaaa er tunt ich habs doch geschafft ^.^ Vielleicht veröffentliche ich hier doch noch den 1. S4L Bot xD
01/07/2011 13:10 Shadow992#168
Quote:
Originally Posted by -Nò_óNê- View Post
Ich hab da ma ne Frage, und zwar möcht ich gern wissen ob du bei dem Packetbot-Teil die Funktion von AMrK 1:1 übernommen hast bis auf die msg funktion, oder ob du noch andere Dinge in der Funktion geändert/diesem Tut angepasst hast.
Ansonsten sehr geiles Tut, habs schon geschafft mich in speed4life einzuloggen aber irgendwie will der net Tunen -.- Auf jeden Fall dickes THX^^ lg

€: Jaaa er tunt ich habs doch geschafft ^.^ Vielleicht veröffentliche ich hier doch noch den 1. S4L Bot xD
Ich glaube, ich habe sonst nichts geändert.
Bin mir aber nicht mehr sicher. ;)
01/10/2011 21:45 -Nò_óNê-#169
Hey,
Kann mir jmnd. kurz erklären wie man die Oberfläche von einem autoitprogramm verschwinden lassen kann, ohne das eigentliche Programm zu beenden? Also das man nur noch unten rechts in der Leiste das Icon anklicken kann, um das script zu pausieren oder zu beenden, mein ich. Hab da schon so SW_ befehle usw durchgesucht aber i.wi nicht das richtige dabei. wär nett wenn mir wer helfen könnte :) € habs rausgefunden...
dann noch eine Frage zu Funktionen, kann man irgendwie 2 funktionen zur selben zeit ausführen? weil wenn ich schreibe z.bsp. Funktion() und Funktion2() führt er ja eine nach der andern aus.
01/13/2011 18:41 tompage#170
hey hab mal eine frage wie mache ich es das inerhalb des spieles wenn ich zb den "bau"butten klicken lassen will das das geht ? was muss ich dazu machen ich komm da nicht drauf sonst hab ich ja alels kapiert aber das nicht .. wie ich das mache das er weiterarbeitet und auf "los" oder"bauen " klickt ?! egal bei welchem spiel ich will die action überhaupt wissen den befehl und wo man das dazu findet was man dazu eingeben muss in dem befehl...
01/15/2011 17:25 Qx3cP#171
Quote:
Originally Posted by -Nò_óNê- View Post
Hey,
Kann mir jmnd. kurz erklären wie man die Oberfläche von einem autoitprogramm verschwinden lassen kann, ohne das eigentliche Programm zu beenden? Also das man nur noch unten rechts in der Leiste das Icon anklicken kann, um das script zu pausieren oder zu beenden, mein ich. Hab da schon so SW_ befehle usw durchgesucht aber i.wi nicht das richtige dabei. wär nett wenn mir wer helfen könnte :) € habs rausgefunden...
dann noch eine Frage zu Funktionen, kann man irgendwie 2 funktionen zur selben zeit ausführen? weil wenn ich schreibe z.bsp. Funktion() und Funktion2() führt er ja eine nach der andern aus.
GUI von deinem Programm kannst mit verbergen.
Code:
 GUISetState(@SW_HIDE)
02/06/2011 19:26 B.o.n.g#172
Schade alter , das du nix mehr machst
02/09/2011 04:13 theboegl#173
@Shadow992:
Gutes (ausführliches) TUT ;)
Du solltest vollständiger Weise die Funktion Change($string) durch folgende von [Only registered and activated users can see links. Click Here To Register...] [Only registered and activated users can see links. Click Here To Register...] veröffentlichte Funktion ersetzen:
PHP Code:
Func _URIEncode($sData)
    ; 
Prog@ndy
    Local $aData 
StringSplit(BinaryToString(StringToBinary($sData,4),1),"")
    
Local $nChar
    $sData
=""
    
For $i 1 To $aData[0]
        
ConsoleWrite($aData[$i] & @CRLF)
        
$nChar Asc($aData[$i])
        Switch 
$nChar
            
Case 454648-5765 To 909597 To 122126
                $sData 
&= $aData[$i]
            Case 
32
                $sData 
&= "+"
            
Case Else
                
$sData &= "%" Hex($nChar,2)
        EndSwitch
    
Next
    
Return $sData
EndFunc 
Diese geht auf alle 'Fälle' ein und nicht nur auf die einigen von Change()...
03/04/2011 15:18 testaccount34#174
Hallo zusammen,

ich habe mit diesem Tutorial versucht einen Packetbot für das Spiel brokenspace.de zu entwerfen, aber leider funktioniert es nicht.

Ich sitze jetzt schon seit Stunden dran, aber finde leider keinen Fehler.

Wäre jemand mal so nett drüber zu schauen?
Die Funktionen laufen scheinbar einwandfrei ab, aber es passiert nix. Habe vorerst nur versucht mich einzuloggen und 1 Gebäude zu bauen, aber wenn ich dann nachgucke ob das Gebäude in Bau ist, ist leider nix passiert...

PHP Code:
#include<String.au3>

$name='[Only registered and activated users can see links. Click Here To Register...]'
$passwort='123456'

#comments-start
  
IP Adresse des Host ermitteln
#comments-end
TCPStartup()
$ip TCPNameToIP("brokenspace.4players.de")
TCPShutdown()

$post='bs-login-mail='&Change($name)&'&bs-login-pass='&Change($passwort)&'&form_login_submit=Einloggen'
#comments-start
  
einloggen
#comments-end
$source=TCPRequest($ip,"brokenspace.4players.de"0'login/',$post"""http://brokenspace.4players.de/login/")
$cookies=GetCookies($source)
#comments-start
  
Fusionsreaktor bauen
#comments-end
$source=TCPRequest($ip,"brokenspace.4players.de"0'runde13/planet/gebaeude.php?bid=g_02',"""""http://brokenspace.4players.de/runde13/planet/gebaeude.php/")



Func GetCookies($sQuellcode)
    
Local $sCookies$i$aCookies
    $sCookies 
''
    
$aCookies _StringBetween($sQuellcode'Set-Cookie: '';'1)
    For 
$i 0 To UBound($aCookies) - 1
        $sCookies 
&= $aCookies[$i] & ';'
    
Next
    
Return $sCookies
EndFunc   
;==>GetCookies 

Func TCPRequest
($sIp$sHost$msg=1$sSeite ""$sPost ''$sCookies ''$sReferer ''$iMaxTime 10000)
    
Local $sPacket$iSocket$iTimer

    
If $sPost '' Then
        $sPacket 
'GET /' $sSeite ' HTTP/1.1' & @CRLF
    
Else
        
$sPacket 'POST /' $sSeite ' HTTP/1.1' & @CRLF
    
EndIf
    
$sPacket &= 'Host: ' $sHost & @CRLF _
            
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14' & @CRLF _
            
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' & @CRLF _
            
'Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3' & @CRLF _
            
'Accept-Encoding: gzip,deflate' & @CRLF _
            
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' & @CRLF _
            
'Keep-Alive: 115' & @CRLF _
            
'Content-Type: application/x-www-form-urlencoded' & @CRLF _
            
'Connection: keep-alive' & @CRLF 
    
If $sReferer <> '' Then
        $sPacket 
&= 'Referer: ' $sReferer & @CRLF
    
EndIf
    If 
$sCookies <> '' Then
        $sCookies
=StringStripCR($sCookies)
        
$sCookies=StringStripWS($sCookies,8)
        
$sPacket &= 'Cookie: ' $sCookies & @CRLF
    
EndIf
    If 
$sPost <> '' Then
        $sPacket 
&= 'Content-Length: ' StringLen($sPost) & @CRLF
    
EndIf
    
$sPacket &= @CRLF
    
If $sPost <> '' Then
        $sPacket 
&= $sPost
    
EndIf
    If 
$msg=1 Then
    MsgBox
(0,"hallo welt",$sPacket)
    EndIf
    
TCPStartup()
    If @
error Then Return SetError(10"")
    
$iSocket TCPConnect($sIp80)
    If @
error Then Return SetError(20"")
    
TCPSend($iSocket$sPacket)
    If @
error Then Return SetError(30"")
    
$iTimer TimerInit()
    Do
        
$sRecv TCPRecv($iSocket1024)
        If 
TimerDiff($iTimer) > $iMaxTime Then Return SetError(40"")
    
Until $sRecv <> ""
    
Do
        
$sRecv &= TCPRecv($iSocket1024)
    
Until @error Or StringInStr($sRecv'</html>')
    
TCPCloseSocket($iSocket)
    
TCPShutdown()
    Return 
$sRecv
EndFunc   
;==>TCPRequest

Func Change
($string)
    
$string StringReplace($string"%""%25")
        
$string StringReplace($string"†""%E2%80%A0")
    
$string StringReplace($string"ä""%C3%A4")
    
$string StringReplace($string"ö""%C3%B6")
    
$string StringReplace($string"ü""%C3%BC")
    
$string StringReplace($string"!""%21")
    
$string StringReplace($string'"'"%22")
    
$string StringReplace($string"§""%C2%A7")
    
$string StringReplace($string"$""%24")
    
$string StringReplace($string"&""%26")
    
$string StringReplace($string"/""%2F")
    
$string StringReplace($string"+""%2B")
    
$string StringReplace($string" ""+")
    
$string StringReplace($string"(""%28")
    
$string StringReplace($string")""%29")
    
$string StringReplace($string"=""%3D")
    
$string StringReplace($string"?""%3F")
    
$string StringReplace($string"[""%5B")
    
$string StringReplace($string"]""%5D")
    
$string StringReplace($string"{""%7B")
    
$string StringReplace($string"}""%7D")
    
$string StringReplace($string"ß""%C3%9F")
    
$string StringReplace($string",""%2C")
    
$string StringReplace($string":""%3A")
    
$string StringReplace($string";""%3B")
    
$string StringReplace($string"#""%23")
    
$string StringReplace($string"~""%7E")
    
$string StringReplace($string"²""%C2%B2")
    
$string StringReplace($string"³""%C2%B3")
    
$string StringReplace($string"<""%3C")
    
$string StringReplace($string">""%3E")
    
$string StringReplace($string"|""%7C")
    
$string StringReplace($string"^""%5E")
    
$string StringReplace($string"°""%C2%B0")
    
$string StringReplace($string"´""%C2%B4")
    
$string StringReplace($string"@""%40")
    
$string StringReplace($string"€""%E2%82%AC")
    Return 
$string
EndFunc   
;==>Change 
03/05/2011 12:32 Shadow992#175
Quote:
Originally Posted by testaccount34 View Post
Hallo zusammen,

ich habe mit diesem Tutorial versucht einen Packetbot für das Spiel brokenspace.de zu entwerfen, aber leider funktioniert es nicht.

Ich sitze jetzt schon seit Stunden dran, aber finde leider keinen Fehler.

Wäre jemand mal so nett drüber zu schauen?
Die Funktionen laufen scheinbar einwandfrei ab, aber es passiert nix. Habe vorerst nur versucht mich einzuloggen und 1 Gebäude zu bauen, aber wenn ich dann nachgucke ob das Gebäude in Bau ist, ist leider nix passiert...

PHP Code:
#include<String.au3>

$name='[Only registered and activated users can see links. Click Here To Register...]'
$passwort='123456'

#comments-start
  
IP Adresse des Host ermitteln
#comments-end
TCPStartup()
$ip TCPNameToIP("brokenspace.4players.de")
TCPShutdown()

$post='bs-login-mail='&Change($name)&'&bs-login-pass='&Change($passwort)&'&form_login_submit=Einloggen'
#comments-start
  
einloggen
#comments-end
$source=TCPRequest($ip,"brokenspace.4players.de"0'login/',$post"""http://brokenspace.4players.de/login/")
$cookies=GetCookies($source)
#comments-start
  
Fusionsreaktor bauen
#comments-end
$source=TCPRequest($ip,"brokenspace.4players.de"0'runde13/planet/gebaeude.php?bid=g_02',"""""http://brokenspace.4players.de/runde13/planet/gebaeude.php/")



Func GetCookies($sQuellcode)
    
Local $sCookies$i$aCookies
    $sCookies 
''
    
$aCookies _StringBetween($sQuellcode'Set-Cookie: '';'1)
    For 
$i 0 To UBound($aCookies) - 1
        $sCookies 
&= $aCookies[$i] & ';'
    
Next
    
Return $sCookies
EndFunc   
;==>GetCookies 

Func TCPRequest
($sIp$sHost$msg=1$sSeite ""$sPost ''$sCookies ''$sReferer ''$iMaxTime 10000)
    
Local $sPacket$iSocket$iTimer

    
If $sPost '' Then
        $sPacket 
'GET /' $sSeite ' HTTP/1.1' & @CRLF
    
Else
        
$sPacket 'POST /' $sSeite ' HTTP/1.1' & @CRLF
    
EndIf
    
$sPacket &= 'Host: ' $sHost & @CRLF _
            
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14' & @CRLF _
            
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' & @CRLF _
            
'Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3' & @CRLF _
            
'Accept-Encoding: gzip,deflate' & @CRLF _
            
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' & @CRLF _
            
'Keep-Alive: 115' & @CRLF _
            
'Content-Type: application/x-www-form-urlencoded' & @CRLF _
            
'Connection: keep-alive' & @CRLF 
    
If $sReferer <> '' Then
        $sPacket 
&= 'Referer: ' $sReferer & @CRLF
    
EndIf
    If 
$sCookies <> '' Then
        $sCookies
=StringStripCR($sCookies)
        
$sCookies=StringStripWS($sCookies,8)
        
$sPacket &= 'Cookie: ' $sCookies & @CRLF
    
EndIf
    If 
$sPost <> '' Then
        $sPacket 
&= 'Content-Length: ' StringLen($sPost) & @CRLF
    
EndIf
    
$sPacket &= @CRLF
    
If $sPost <> '' Then
        $sPacket 
&= $sPost
    
EndIf
    If 
$msg=1 Then
    MsgBox
(0,"hallo welt",$sPacket)
    EndIf
    
TCPStartup()
    If @
error Then Return SetError(10"")
    
$iSocket TCPConnect($sIp80)
    If @
error Then Return SetError(20"")
    
TCPSend($iSocket$sPacket)
    If @
error Then Return SetError(30"")
    
$iTimer TimerInit()
    Do
        
$sRecv TCPRecv($iSocket1024)
        If 
TimerDiff($iTimer) > $iMaxTime Then Return SetError(40"")
    
Until $sRecv <> ""
    
Do
        
$sRecv &= TCPRecv($iSocket1024)
    
Until @error Or StringInStr($sRecv'</html>')
    
TCPCloseSocket($iSocket)
    
TCPShutdown()
    Return 
$sRecv
EndFunc   
;==>TCPRequest

Func Change
($string)
    
$string StringReplace($string"%""%25")
        
$string StringReplace($string"†""%E2%80%A0")
    
$string StringReplace($string"ä""%C3%A4")
    
$string StringReplace($string"ö""%C3%B6")
    
$string StringReplace($string"ü""%C3%BC")
    
$string StringReplace($string"!""%21")
    
$string StringReplace($string'"'"%22")
    
$string StringReplace($string"§""%C2%A7")
    
$string StringReplace($string"$""%24")
    
$string StringReplace($string"&""%26")
    
$string StringReplace($string"/""%2F")
    
$string StringReplace($string"+""%2B")
    
$string StringReplace($string" ""+")
    
$string StringReplace($string"(""%28")
    
$string StringReplace($string")""%29")
    
$string StringReplace($string"=""%3D")
    
$string StringReplace($string"?""%3F")
    
$string StringReplace($string"[""%5B")
    
$string StringReplace($string"]""%5D")
    
$string StringReplace($string"{""%7B")
    
$string StringReplace($string"}""%7D")
    
$string StringReplace($string"ß""%C3%9F")
    
$string StringReplace($string",""%2C")
    
$string StringReplace($string":""%3A")
    
$string StringReplace($string";""%3B")
    
$string StringReplace($string"#""%23")
    
$string StringReplace($string"~""%7E")
    
$string StringReplace($string"²""%C2%B2")
    
$string StringReplace($string"³""%C2%B3")
    
$string StringReplace($string"<""%3C")
    
$string StringReplace($string">""%3E")
    
$string StringReplace($string"|""%7C")
    
$string StringReplace($string"^""%5E")
    
$string StringReplace($string"°""%C2%B0")
    
$string StringReplace($string"´""%C2%B4")
    
$string StringReplace($string"@""%40")
    
$string StringReplace($string"€""%E2%82%AC")
    Return 
$string
EndFunc   
;==>Change 
Das ist doch ganz klar, ohne Cookies geht nichts!
03/05/2011 15:27 testaccount34#176
Quote:
Originally Posted by Shadow992 View Post
Das ist doch ganz klar, ohne Cookies geht nichts!
Zugegeben, so geht es natürlich auf keinen Fall. Hatte die Cookies aber vorher drin. Warum ich sie wieder rausgenommen hab, kann ich dir jetzt auch nicht mehr sagen.

aber leider geht es auch mit cookies nicht :(

hast du sonst noch ne idee, wodran es liegen könnte?
zwischenfrage - wenn ich nur das loginpacket schicke und dann den browser öffne und das spiel starte - müsste ich dann eingeloggt sein? weil das packet doch genau das vortäuscht: ich logge mich mit firefox ins spiel ein. denn selbst das funktioniert schon nicht richtig...

PHP Code:
#include<String.au3>

$name='[Only registered and activated users can see links. Click Here To Register...]'
$passwort='123456'

#comments-start
  
IP Adresse des Host ermitteln
#comments-end
TCPStartup()
$ip TCPNameToIP("brokenspace.4players.de")
TCPShutdown()

$post='bs-login-mail='&Change($name)&'&bs-login-pass='&Change($passwort)&'&form_login_submit=Einloggen'
#comments-start
  
einloggen
#comments-end
$source=TCPRequest($ip,"brokenspace.4players.de"1'login/',$post"""http://brokenspace.4players.de/login/")
$cookies=GetCookies($source)
#comments-start
  
Fusionsreaktor bauen
#comments-end
$source=TCPRequest($ip,"brokenspace.4players.de"1'runde13/planet/gebaeude.php?bid=g_02',$cookies"http://brokenspace.4players.de/runde13/planet/gebaeude.php/","" )



Func GetCookies($sQuellcode)
    
Local $sCookies$i$aCookies
    $sCookies 
''
    
$aCookies _StringBetween($sQuellcode'Set-Cookie: '';'1)
    For 
$i 0 To UBound($aCookies) - 1
        $sCookies 
&= $aCookies[$i] & ';'
    
Next
    
Return $sCookies
EndFunc   
;==>GetCookies 

Func TCPRequest
($sIp$sHost$msg=1$sSeite ""$sPost ''$sCookies ''$sReferer ''$iMaxTime 10000)
    
Local $sPacket$iSocket$iTimer

    
If $sPost '' Then
        $sPacket 
'POST /' $sSeite ' HTTP/1.1' & @CRLF
    
Else
        
$sPacket 'POST /' $sSeite ' HTTP/1.1' & @CRLF
    
EndIf
    
$sPacket &= 'Host: ' $sHost & @CRLF _
            
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14' & @CRLF _
            
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' & @CRLF _
            
'Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3' & @CRLF _
            
'Accept-Encoding: gzip,deflate' & @CRLF _
            
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' & @CRLF _
            
'Keep-Alive: 115' & @CRLF _
            
'Content-Type: application/x-www-form-urlencoded' & @CRLF _
            
'Connection: keep-alive' & @CRLF 
    
If $sReferer <> '' Then
        $sPacket 
&= 'Referer: ' $sReferer & @CRLF
    
EndIf
    If 
$sCookies <> '' Then
        $sCookies
=StringStripCR($sCookies)
        
$sCookies=StringStripWS($sCookies,8)
        
$sPacket &= 'Cookie: ' $sCookies & @CRLF
    
EndIf
    If 
$sPost <> '' Then
        $sPacket 
&= 'Content-Length: ' StringLen($sPost) & @CRLF
    
EndIf
    
$sPacket &= @CRLF
    
If $sPost <> '' Then
        $sPacket 
&= $sPost
    
EndIf
    If 
$msg=1 Then
    MsgBox
(0,"hallo welt",$sPacket)
    EndIf
    
TCPStartup()
    If @
error Then Return SetError(10"")
    
$iSocket TCPConnect($sIp80)
    If @
error Then Return SetError(20"")
    
TCPSend($iSocket$sPacket)
    If @
error Then Return SetError(30"")
    
$iTimer TimerInit()
    Do
        
$sRecv TCPRecv($iSocket1024)
        If 
TimerDiff($iTimer) > $iMaxTime Then Return SetError(40"")
    
Until $sRecv <> ""
    
Do
        
$sRecv &= TCPRecv($iSocket1024)
    
Until @error Or StringInStr($sRecv'</html>')
    
TCPCloseSocket($iSocket)
    
TCPShutdown()
    Return 
$sRecv
EndFunc   
;==>TCPRequest

Func Change
($string)
    
$string StringReplace($string"%""%25")
        
$string StringReplace($string"†""%E2%80%A0")
    
$string StringReplace($string"ä""%C3%A4")
    
$string StringReplace($string"ö""%C3%B6")
    
$string StringReplace($string"ü""%C3%BC")
    
$string StringReplace($string"!""%21")
    
$string StringReplace($string'"'"%22")
    
$string StringReplace($string"§""%C2%A7")
    
$string StringReplace($string"$""%24")
    
$string StringReplace($string"&""%26")
    
$string StringReplace($string"/""%2F")
    
$string StringReplace($string"+""%2B")
    
$string StringReplace($string" ""+")
    
$string StringReplace($string"(""%28")
    
$string StringReplace($string")""%29")
    
$string StringReplace($string"=""%3D")
    
$string StringReplace($string"?""%3F")
    
$string StringReplace($string"[""%5B")
    
$string StringReplace($string"]""%5D")
    
$string StringReplace($string"{""%7B")
    
$string StringReplace($string"}""%7D")
    
$string StringReplace($string"ß""%C3%9F")
    
$string StringReplace($string",""%2C")
    
$string StringReplace($string":""%3A")
    
$string StringReplace($string";""%3B")
    
$string StringReplace($string"#""%23")
    
$string StringReplace($string"~""%7E")
    
$string StringReplace($string"²""%C2%B2")
    
$string StringReplace($string"³""%C2%B3")
    
$string StringReplace($string"<""%3C")
    
$string StringReplace($string">""%3E")
    
$string StringReplace($string"|""%7C")
    
$string StringReplace($string"^""%5E")
    
$string StringReplace($string"°""%C2%B0")
    
$string StringReplace($string"´""%C2%B4")
    
$string StringReplace($string"@""%40")
    
$string StringReplace($string"€""%E2%82%AC")
    Return 
$string
EndFunc   
;==>Change 
03/05/2011 15:58 Shadow992#177
Quote:
Originally Posted by testaccount34 View Post
Zugegeben, so geht es natürlich auf keinen Fall. Hatte die Cookies aber vorher drin. Warum ich sie wieder rausgenommen hab, kann ich dir jetzt auch nicht mehr sagen.

aber leider geht es auch mit cookies nicht :(

hast du sonst noch ne idee, wodran es liegen könnte?
zwischenfrage - wenn ich nur das loginpacket schicke und dann den browser öffne und das spiel starte - müsste ich dann eingeloggt sein? weil das packet doch genau das vortäuscht: ich logge mich mit firefox ins spiel ein. denn selbst das funktioniert schon nicht richtig...

PHP Code:
#include<String.au3>

$name='[Only registered and activated users can see links. Click Here To Register...]'
$passwort='123456'

#comments-start
  
IP Adresse des Host ermitteln
#comments-end
TCPStartup()
$ip TCPNameToIP("brokenspace.4players.de")
TCPShutdown()

$post='bs-login-mail='&Change($name)&'&bs-login-pass='&Change($passwort)&'&form_login_submit=Einloggen'
#comments-start
  
einloggen
#comments-end
$source=TCPRequest($ip,"brokenspace.4players.de"1'login/',$post"""http://brokenspace.4players.de/login/")
$cookies=GetCookies($source)
#comments-start
  
Fusionsreaktor bauen
#comments-end
$source=TCPRequest($ip,"brokenspace.4players.de"1'runde13/planet/gebaeude.php?bid=g_02',$cookies"http://brokenspace.4players.de/runde13/planet/gebaeude.php/","" )



Func GetCookies($sQuellcode)
    
Local $sCookies$i$aCookies
    $sCookies 
''
    
$aCookies _StringBetween($sQuellcode'Set-Cookie: '';'1)
    For 
$i 0 To UBound($aCookies) - 1
        $sCookies 
&= $aCookies[$i] & ';'
    
Next
    
Return $sCookies
EndFunc   
;==>GetCookies 

Func TCPRequest
($sIp$sHost$msg=1$sSeite ""$sPost ''$sCookies ''$sReferer ''$iMaxTime 10000)
    
Local $sPacket$iSocket$iTimer

    
If $sPost '' Then
        $sPacket 
'POST /' $sSeite ' HTTP/1.1' & @CRLF
    
Else
        
$sPacket 'POST /' $sSeite ' HTTP/1.1' & @CRLF
    
EndIf
    
$sPacket &= 'Host: ' $sHost & @CRLF _
            
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14' & @CRLF _
            
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' & @CRLF _
            
'Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3' & @CRLF _
            
'Accept-Encoding: gzip,deflate' & @CRLF _
            
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' & @CRLF _
            
'Keep-Alive: 115' & @CRLF _
            
'Content-Type: application/x-www-form-urlencoded' & @CRLF _
            
'Connection: keep-alive' & @CRLF 
    
If $sReferer <> '' Then
        $sPacket 
&= 'Referer: ' $sReferer & @CRLF
    
EndIf
    If 
$sCookies <> '' Then
        $sCookies
=StringStripCR($sCookies)
        
$sCookies=StringStripWS($sCookies,8)
        
$sPacket &= 'Cookie: ' $sCookies & @CRLF
    
EndIf
    If 
$sPost <> '' Then
        $sPacket 
&= 'Content-Length: ' StringLen($sPost) & @CRLF
    
EndIf
    
$sPacket &= @CRLF
    
If $sPost <> '' Then
        $sPacket 
&= $sPost
    
EndIf
    If 
$msg=1 Then
    MsgBox
(0,"hallo welt",$sPacket)
    EndIf
    
TCPStartup()
    If @
error Then Return SetError(10"")
    
$iSocket TCPConnect($sIp80)
    If @
error Then Return SetError(20"")
    
TCPSend($iSocket$sPacket)
    If @
error Then Return SetError(30"")
    
$iTimer TimerInit()
    Do
        
$sRecv TCPRecv($iSocket1024)
        If 
TimerDiff($iTimer) > $iMaxTime Then Return SetError(40"")
    
Until $sRecv <> ""
    
Do
        
$sRecv &= TCPRecv($iSocket1024)
    
Until @error Or StringInStr($sRecv'</html>')
    
TCPCloseSocket($iSocket)
    
TCPShutdown()
    Return 
$sRecv
EndFunc   
;==>TCPRequest

Func Change
($string)
    
$string StringReplace($string"%""%25")
        
$string StringReplace($string"†""%E2%80%A0")
    
$string StringReplace($string"ä""%C3%A4")
    
$string StringReplace($string"ö""%C3%B6")
    
$string StringReplace($string"ü""%C3%BC")
    
$string StringReplace($string"!""%21")
    
$string StringReplace($string'"'"%22")
    
$string StringReplace($string"§""%C2%A7")
    
$string StringReplace($string"$""%24")
    
$string StringReplace($string"&""%26")
    
$string StringReplace($string"/""%2F")
    
$string StringReplace($string"+""%2B")
    
$string StringReplace($string" ""+")
    
$string StringReplace($string"(""%28")
    
$string StringReplace($string")""%29")
    
$string StringReplace($string"=""%3D")
    
$string StringReplace($string"?""%3F")
    
$string StringReplace($string"[""%5B")
    
$string StringReplace($string"]""%5D")
    
$string StringReplace($string"{""%7B")
    
$string StringReplace($string"}""%7D")
    
$string StringReplace($string"ß""%C3%9F")
    
$string StringReplace($string",""%2C")
    
$string StringReplace($string":""%3A")
    
$string StringReplace($string";""%3B")
    
$string StringReplace($string"#""%23")
    
$string StringReplace($string"~""%7E")
    
$string StringReplace($string"²""%C2%B2")
    
$string StringReplace($string"³""%C2%B3")
    
$string StringReplace($string"<""%3C")
    
$string StringReplace($string">""%3E")
    
$string StringReplace($string"|""%7C")
    
$string StringReplace($string"^""%5E")
    
$string StringReplace($string"°""%C2%B0")
    
$string StringReplace($string"´""%C2%B4")
    
$string StringReplace($string"@""%40")
    
$string StringReplace($string"€""%E2%82%AC")
    Return 
$string
EndFunc   
;==>Change 
@LogIn
Nein müsstest du nicht sehen, man merkt als normaler User gar nichts davon, deswegen ist es auch recht schwer da Fehler zu finden.

Für dein Spiel musst du erst einmal die "Hauptseite":
Quote:
[Only registered and activated users can see links. Click Here To Register...]
aufrufen und dann schon beim 1. mal die Cookies auslesen lassen und beim LogIn mitschicken.
Dem Server fehlt nämlich der Cookie beim Einloggen:
Quote:
Cookie: bsc-sid=9035eea626c209db56039999d4de2725
03/05/2011 18:32 AlphaZerο#178
Super ausführlich. Vielen, vielen Dank!
03/05/2011 22:12 testaccount34#179
Quote:
Originally Posted by Shadow992 View Post
Für dein Spiel musst du erst einmal die "Hauptseite":

aufrufen und dann schon beim 1. mal die Cookies auslesen lassen und beim LogIn mitschicken.
Dem Server fehlt nämlich der Cookie beim Einloggen:
gut, habe ich verstanden und auch gemacht:


PHP Code:
#include<String.au3>

$name='[Only registered and activated users can see links. Click Here To Register...]'
$passwort='123456'

#comments-start
  
IP Adresse des Host ermitteln
#comments-end
TCPStartup()
  
$ip TCPNameToIP("brokenspace.4players.de")
TCPShutdown()

$source=TCPRequest1($ip,"brokenspace.4players.de"1'community/',"","","")
$cookies=GetCookies($source)
msgbox(0,"",$source)
#comments-start
$post='bs-login-mail='&Change($name)&'&bs-login-pass='&Change($passwort)&'&form_login_submit=Einloggen'
#comments-start
  
einloggen
#comments-end
$source=TCPRequest($ip,"brokenspace.4players.de"1'login/',$post"""http://brokenspace.4players.de/login/")
$cookies=GetCookies($source)
#comments-start
  
Fusionsreaktor bauen
#comments-end
$source=TCPRequest($ip,"brokenspace.4players.de"1'runde13/planet/gebaeude.php?bid=g_02',$cookies"http://brokenspace.4players.de/runde13/planet/gebaeude.php/","" )

#comments-end

Func GetCookies($sQuellcode)
    
Local $sCookies$i$aCookies
    $sCookies 
''
    
$aCookies _StringBetween($sQuellcode'Set-Cookie: '';',1)
    For 
$i 0 To UBound($aCookies) - 1
        $sCookies 
&= $aCookies[$i] & ';'
    
Next
    
Return $sCookies
EndFunc   
;==>GetCookies 

Func TCPRequest1
($sIp$sHost$msg=1$sSeite ""$sPost ''$sCookies ''$sReferer ''$iMaxTime 10000)
    
Local $sPacket$iSocket$iTimer

    
If $sPost '' Then
        $sPacket 
'GET /' $sSeite ' HTTP/1.1' & @CRLF
    
Else
        
$sPacket 'POST /' $sSeite ' HTTP/1.1' & @CRLF
    
EndIf
    
$sPacket &= 'Host: ' $sHost & @CRLF _
            
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14' & @CRLF _
            
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' & @CRLF _
            
'Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3' & @CRLF _
            
'Accept-Encoding: gzip,deflate' & @CRLF _
            
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' & @CRLF _
            
'Keep-Alive: 115' & @CRLF _
            
'Connection: keep-alive' & @CRLF 
    
If $sReferer <> '' Then
        $sPacket 
&= 'Referer: ' $sReferer & @CRLF
    
EndIf
    If 
$sCookies <> '' Then
        $sCookies
=StringStripCR($sCookies)
        
$sCookies=StringStripWS($sCookies,8)
        
$sPacket &= 'Cookie: ' $sCookies & @CRLF
    
EndIf
    If 
$sPost <> '' Then
        $sPacket 
&= 'Content-Length: ' StringLen($sPost) & @CRLF
    
EndIf
    
$sPacket &= @CRLF
    
If $sPost <> '' Then
        $sPacket 
&= $sPost
    
EndIf
    If 
$msg=1 Then
    MsgBox
(0,"hallo welt",$sPacket)
    EndIf
    
TCPStartup()
    If @
error Then Return SetError(10"")
    
$iSocket TCPConnect($sIp80)
    If @
error Then Return SetError(20"")
    
TCPSend($iSocket$sPacket)
    If @
error Then Return SetError(30"")
    
$iTimer TimerInit()
    Do
        
$sRecv TCPRecv($iSocket1024)
        If 
TimerDiff($iTimer) > $iMaxTime Then Return SetError(40"")
    
Until $sRecv <> ""
    
Do
        
$sRecv &= TCPRecv($iSocket1024)
    
Until @error Or StringInStr($sRecv'</html>')
    
TCPCloseSocket($iSocket)
    
TCPShutdown()
    Return 
$sRecv
EndFunc   
;==>TCPRequest1

Func TCPRequest2
($sIp$sHost$msg=1$sSeite ""$sPost ''$sCookies ''$sReferer ''$iMaxTime 10000)
    
Local $sPacket$iSocket$iTimer

    
If $sPost '' Then
        $sPacket 
'GET /' $sSeite ' HTTP/1.1' & @CRLF
    
Else
        
$sPacket 'POST /' $sSeite ' HTTP/1.1' & @CRLF
    
EndIf
    
$sPacket &= 'Host: ' $sHost & @CRLF _
            
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14' & @CRLF _
            
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' & @CRLF _
            
'Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3' & @CRLF _
            
'Accept-Encoding: gzip,deflate' & @CRLF _
            
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' & @CRLF _
            
'Keep-Alive: 115' & @CRLF _
            
'Content-Type: application/x-www-form-urlencoded' & @CRLF 
            
'Connection: keep-alive' & @CRLF 
    
If $sReferer <> '' Then
        $sPacket 
&= 'Referer: ' $sReferer & @CRLF
    
EndIf
    If 
$sCookies <> '' Then
        $sCookies
=StringStripCR($sCookies)
        
$sCookies=StringStripWS($sCookies,8)
        
$sPacket &= 'Cookie: ' $sCookies & @CRLF
    
EndIf
    If 
$sPost <> '' Then
        $sPacket 
&= 'Content-Length: ' StringLen($sPost) & @CRLF
    
EndIf
    
$sPacket &= @CRLF
    
If $sPost <> '' Then
        $sPacket 
&= $sPost
    
EndIf
    If 
$msg=1 Then
    MsgBox
(0,"hallo welt",$sPacket)
    EndIf
    
TCPStartup()
    If @
error Then Return SetError(10"")
    
$iSocket TCPConnect($sIp80)
    If @
error Then Return SetError(20"")
    
TCPSend($iSocket$sPacket)
    If @
error Then Return SetError(30"")
    
$iTimer TimerInit()
    Do
        
$sRecv TCPRecv($iSocket1024)
        If 
TimerDiff($iTimer) > $iMaxTime Then Return SetError(40"")
    
Until $sRecv <> ""
    
Do
        
$sRecv &= TCPRecv($iSocket1024)
    
Until @error Or StringInStr($sRecv'</html>')
    
TCPCloseSocket($iSocket)
    
TCPShutdown()
    Return 
$sRecv
EndFunc   
;==>TCPRequest2

Func Change
($string)
    
$string StringReplace($string"%""%25")
        
$string StringReplace($string"†""%E2%80%A0")
    
$string StringReplace($string"ä""%C3%A4")
    
$string StringReplace($string"ö""%C3%B6")
    
$string StringReplace($string"ü""%C3%BC")
    
$string StringReplace($string"!""%21")
    
$string StringReplace($string'"'"%22")
    
$string StringReplace($string"§""%C2%A7")
    
$string StringReplace($string"$""%24")
    
$string StringReplace($string"&""%26")
    
$string StringReplace($string"/""%2F")
    
$string StringReplace($string"+""%2B")
    
$string StringReplace($string" ""+")
    
$string StringReplace($string"(""%28")
    
$string StringReplace($string")""%29")
    
$string StringReplace($string"=""%3D")
    
$string StringReplace($string"?""%3F")
    
$string StringReplace($string"[""%5B")
    
$string StringReplace($string"]""%5D")
    
$string StringReplace($string"{""%7B")
    
$string StringReplace($string"}""%7D")
    
$string StringReplace($string"ß""%C3%9F")
    
$string StringReplace($string",""%2C")
    
$string StringReplace($string":""%3A")
    
$string StringReplace($string";""%3B")
    
$string StringReplace($string"#""%23")
    
$string StringReplace($string"~""%7E")
    
$string StringReplace($string"²""%C2%B2")
    
$string StringReplace($string"³""%C2%B3")
    
$string StringReplace($string"<""%3C")
    
$string StringReplace($string">""%3E")
    
$string StringReplace($string"|""%7C")
    
$string StringReplace($string"^""%5E")
    
$string StringReplace($string"°""%C2%B0")
    
$string StringReplace($string"´""%C2%B4")
    
$string StringReplace($string"@""%40")
    
$string StringReplace($string"€""%E2%82%AC")
    Return 
$string
EndFunc   
;==>Change 
auf der startseite gibt es keinen 'Content-Type: application/x-www-form-urlencoded'
deshalb hab ich TCPRequest1 und 2 einmal mit und einmal ohne (ich weiß, das lässt sich auch schöner lösen, aber auf die schnelle sollte es so gehen).

und ich sende genau das GET packet, was ich auch im live header auslese.
es funktioniert aber leider immer noch nicht. habe mir dann die source mal als msgbox ausgeben lassen und dann kriege ich sowas:

[Only registered and activated users can see links. Click Here To Register...]
03/06/2011 22:26 testaccount34#180
ich hoffe ich bin nicht zu ungeduldig :D

ich find's ja schon super, dass ich es mit dem TUT überhaupt soweit geschafft habe, aber eigentlich bin ich davon ausgegangen, dass brokenspace einfacher zu automatisieren ist als z.b. ogame. weil brokenspace egtl schon ziemlich alt ist und nicht mehr wirklich überarbeitet wurde und ja auch nicht so gut besucht ist wie ogame oder ähnliches.

aber scheinbar scheint es ja doch etwas komplexer strukturiert zu sein. kommt man jetzt gar nicht durch den login? :confused:
ich denke, wenn man den einmal hat, dürfte es ja nicht mehr so schwer sein.