[HELP] Farmerama TCP Böt

08/14/2011 18:05 uragan#1
Hallo

So jetzt mal hier an die Intelligenten :)
Komme nicht weiter, mit dem coden, eines TCP Bots
Ich benutze dazu WebTCP, wenn ihr dies nicht besitzt, dann hier link zum download:
[Only registered and activated users can see links. Click Here To Register...]

Ich habe natürlich ein test account erstellt, damit jede/r von euch dort einloggen kann und die packete überprüfen kann.
Bei
Code:
MsgBox(0,"1",...)
ist der Recv noch perfekt, doch bei
Code:
MsgBox(0,"2",...)
ist aufeinmal
Quote:
{"noAuthUser":1}
Was ich genau machen möchte:

Auf dem feld sind 4 felder, ich möchte alle 4 felder ernten.
(zuerst reicht nur ernten) :)
Am schnellsten wird SALAT fertig, dauer 5min, daher ist es an dem am besten zu testen.

Hier der Code

Code:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_Fileversion=0.0.0.1
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <WebTcp.au3>
#Include <Array.au3>
#Include <Date.au3>


$file = "1.txt"
FileDelete($file)


_WebTcp_Startup()

Global $site1 = _WebTcp_Create(False,True)
$site1.Navigate("http://farmerama.bigpoint.com/","loginForm_default_username=epvptest&loginForm_default_password=testacc&loginForm_default_login_submit=Login","application/x-www-form-urlencoded"  & @CRLF & "Accept-Encoding: gzip, deflate")
$site1.Navigate($site1.Header.GetLocation)
$site1.Navigate("http://farmerama.bigpoint.com/?action=internalGame")
$rid = StringRegExp($site1.body,'flashvars.token = "(.*)"',3)
$site1.Navigate("http://farmerama.bigpoint.com/crossdomain.xml")
$site1.Navigate("http://farmerama.bigpoint.com/GameAPI.php?action=core.bpid&bpid=4cdf4dc1BhUmtQXGXI4Q9k4hz4TkwwjB")
if IsArray($rid) Then
 $site1.Navigate("http://farmerama.bigpoint.com/FarmAPI.php?uId=31249791&tok=" & $rid[0],"json=%7B%22config%2EgC%22%3A%7B%22js%22%3A1%7D%7D")
 $site1.Navigate("http://farmerama.bigpoint.com/FarmAPI.php?uId=31249791&tok=" & $rid[0],"json=%7B%22config%2EgI%22%3A%7B%7D%7D")
 $site1.Navigate("http://farmerama.bigpoint.com/FarmAPI.php?uId=31249791&tok=" & $rid[0],"json=%7B%22config%2EgU%22%3A%7B%22js%22%3A1%7D%7D")
 $fielddata = $site1.body
 $site1.Navigate("http://farmerama.bigpoint.com/FarmAPI.php?uId=31249791&tok=" & $rid[0],"json=%7B%22push%2EgST%22%3A%7B%22js%22%3A1%2C%22nr%22%3A1%7D%7D")
MsgBox(0,"1",$site1.body)
 $site1.Navigate("http://farmerama.bigpoint.com/FarmAPI.php?uId=31249791&tok=" & $rid[0],"json=%7B%22field%2EfIA%22%3A%7B%22q%22%3A%7B%223%22%3A%7B%22fx%22%3A10%2C%22angle%22%3A0%2C%22fia%22%3A%22harvest%22%2C%22fy%22%3A10%2C%22uid%22%3A18052345%2C%22inventID%22%3A%22%22%7D%7D%7D%7D&")

MsgBox(0,"2",$site1.body)
 Else
	MsgBox(0,"","error")
 	FileWrite("error.txt", _Now())
EndIf

FileWrite($file, $site1.body)

_WebTcp_Shutdown()
Was genau mache ich falsch?

PS: Logins sind im code

Vielen Dank
08/14/2011 21:33 Ludder231#2
Bist du sicher das das nach json= immer gleich ist?

UNd $site1.Navigate("http://farmerama.bigpoint.com/GameAPI.php?action=core.bpid&bpid=4cdf4dc1BhUmtQXGXI4Q9k4hz4TkwwjB")

Das Fette ist bestimmt auch nciht immer die selbe...

€: vllt musst du noch _autoitobject_startup() TCPStartup() <- am anfang und _autoitobject_shutdown() TCPShutdown() <- am ende Packen


P.S: Hier mal wie ich die Game.API für DarkOrbit auslesen lasse vllt. hilfts dir ja:
PHP Code:
$erg=_StringBetween($oWebTcp.body,'http://'&$server&'.darkorbit.bigpoint.com/GameAPI.php?req='')">')
$blub=StringTrimRight($erg[0],1)
$oWebTcp.Navigate("http://"&$server&".darkorbit.bigpoint.com/GameAPI.php?req="&$blub
08/14/2011 22:05 Freddy​#3
Quote:
Originally Posted by Ludder231 View Post
Bist du sicher das das nach json= immer gleich ist?

UNd $site1.Navigate("http://farmerama.bigpoint.com/GameAPI.php?action=core.bpid&bpid=4cdf4dc1BhUmtQXGXI4Q9k4hz4TkwwjB")

Das Fette ist bestimmt auch nciht immer die selbe...

€: vllt musst du noch _autoitobject_startup() TCPStartup() <- am anfang und _autoitobject_shutdown() TCPShutdown() <- am ende Packen


P.S: Hier mal wie ich die Game.API für DarkOrbit auslesen lasse vllt. hilfts dir ja:
PHP Code:
$erg=_StringBetween($oWebTcp.body,'http://'&$server&'.darkorbit.bigpoint.com/GameAPI.php?req='')">')
$blub=StringTrimRight($erg[0],1)
$oWebTcp.Navigate("http://"&$server&".darkorbit.bigpoint.com/GameAPI.php?req="&$blub
_AutoItObject_Startup() und _AutoItObject_Shutdown()
Braucht er sicherlich nicht, da es in den Funktionen
_WebTcp_Startup() und _WebTcp_Shutdown()
mit drin ist
08/14/2011 22:34 uragan#4
Quote:
Originally Posted by Ludder231 View Post
Bist du sicher das das nach json= immer gleich ist?

UNd $site1.Navigate("http://farmerama.bigpoint.com/GameAPI.php?action=core.bpid&bpid=4cdf4dc1BhUmtQXGXI4Q9k4hz4TkwwjB")

Das Fette ist bestimmt auch nciht immer die selbe...

€: vllt musst du noch _autoitobject_startup() TCPStartup() <- am anfang und _autoitobject_shutdown() TCPShutdown() <- am ende Packen


P.S: Hier mal wie ich die Game.API für DarkOrbit auslesen lasse vllt. hilfts dir ja:
PHP Code:
$erg=_StringBetween($oWebTcp.body,'http://'&$server&'.darkorbit.bigpoint.com/GameAPI.php?req='')">')
$blub=StringTrimRight($erg[0],1)
$oWebTcp.Navigate("http://"&$server&".darkorbit.bigpoint.com/GameAPI.php?req="&$blub
Für DarkOrbit habe ich auch ein bot dort ist es ein wenig leichter,
Aber die GameApi habe ich ja sowieso, hier ist es ähnlich

TCPStartup()... ist in WebTCP drine

Das Fette 4cdf4dc1BhUmtQXGXI4Q9k4hz4TkwwjB, wie du es sagst :) . ist immer das selbe, auch bei anderen Accounts

Und json muss immer gleich sein. Darunter verbingt sich die ID von dem feld und die position. hier normale form der 4 json

Code:
{"config.gC":{"js":1}}
{"config.gI":{}}
{"config.gU":{"js":1}}
{"push.gST":{"js":1,"nr":1}}
{"field.fIA":{"q":{"0":{"fx":10,"fy":8,"angle":0,"fia":"harvest","uid":18052345,"inventID":""}}}}
dabei sind die felder zusammen:

"fx":8 | "fy":8
"fx":10 | "fy":8
"fx":10 | "fy":10
"fx":8 | "fy":10

ich denk so war das
08/14/2011 22:45 Ludder231#5
Na dann weiß ich jz auch gerade nicht was falsch sein könnte.... :)
08/15/2011 23:08 uragan#6
niemand sonst ne ahnung wieso das ganze nicht klappt?
bin hier schon am verzweifeln :(
08/15/2011 23:49 skater1985#7
Bei Farmerama gibt es eine kleine Tücke.
Einmal fehlt bei deinem Post-Argument die Variable "s". Wie die berechnet wird, weiß ich leider auch nicht. Ändert sich aber ständig.
Dann gibt es einen Counter der bei jeder Aktion (bewässern, ernten etc.) erhöht wird.
Code:
{"field.fIA":{"q":{"[B][I][COLOR="Red"]0[/COLOR][/I][/B]":{"fx":10,"fy":8,"angle":0,"fia":"harvest","uid":18052345,"inventID":""}}}}
Kann aber auch nur an dem fehlendem "s" liegen.
Poste doch mal eben den Header der zurück kommt. Möchte dein Skript ungerne starten weil ich das Spiel im Moment an hab.
Edit:
Als Post-Argument
Code:
s = fbf0e1381826649a6fd8c4dd1352f86f
(md5hash)
08/16/2011 13:32 uragan#8
Quote:
fehlendem "s"
Das "s=..." habe ich überall weggelassen, weil bei den
Quote:
{"config.gC":{"js":1}}
{"config.gI":{}}
{"config.gU":{"js":1}}
Super ohne Funzt.

Diese Zähler hatte ich auch gesehen. Das Problem ist, dass es sofort bei ersten Packet den Fehler ausgibt, also bei "q : 0"
Da ist noch der Counter ein Schritt weiter.

Der Socket ist auch immer gleich, echt komisch
08/25/2011 09:03 mgierw#9
Hi all.
If you wish you can download SWF file from:
[Only registered and activated users can see links. Click Here To Register...]
and then decompile it. Try my decompiler from this site:
[Only registered and activated users can see links. Click Here To Register...]
You should find class named NetSend - it is a starting point to analyze how the "s" field is constructed.
I've already made such bot - visit [Only registered and activated users can see links. Click Here To Register...] - for now only in Polish and English.
08/25/2011 22:39 uragan#10
thx for the Extractor and the right swf file name.
All be try to get it
10/09/2011 05:15 uragan#11
so jetzt mal zur alten thema, ich bräuche bitte hilfe von den profis.

hier der code im spiel:


und hier mein autoit code

Ausgabe bis LINE 34 OK danach immer
Quote:
"{"noAuthUser":1}"
Was habe ich bei SIG zusammensetzung übersehen?



fals webtcp benötigt wird, dann hier
[Only registered and activated users can see links. Click Here To Register...]

Danke
10/10/2011 15:53 uragan#12
nicht so viele antworten hinter einander :)