Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 12:10

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



WebSocket Data decoding

Discussion on WebSocket Data decoding within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
FacePalmMan's Avatar
 
elite*gold: 0
Join Date: Jan 2013
Posts: 426
Received Thanks: 129
WebSocket Data decoding

Da ich ein Clientless-bot für agar.io schreiben will, habe ich mich mit WebSocket beschäftigt, womit ich bis zur Connection-aufrechtererhaltung zumindest Erfolg hatte.
Ich habe (wie gesagt) es schon geschafft die Verbindung zum Server zu öffnen und aufrecht zu erhalten.
Nur habe ich ein Problem die empfangenen Nachrichten zu entschlüsseln/decoden.
Die Funktionen die ich benutze geben keine gültigen/auswertbare Zeichenketten zurück.
Ich hoffe ihr habt da irgendwelche Lösungsvorschläge.

Einige Funktionen/Teile des Scripts wurden aus anderen Foren kopiert und verändert um einen Client statt einem Server zu bilden.

Hier die Funktionen die euch sicherlich interessieren werden:

Code:
Func _EncodeWebSocketPacket($sPacket)
   Local $aFrame[4], $sEncoded, $iData_Length, $iFrameSize, $iIndex

   $sEncoded = ""
   $aFrame[0] = 129
   $iData_Length = StringLen($sPacket)

   If $iData_Length <= 125 Then
	  $aFrame[1] = $iData_Length
	  $iFrameSize = 1
   Else
	  $aFrame[1] = 126
	  $aFrame[2] = BitShift($iData_Length, 8) ;Bit verschiebung um n (z.B. 8) Bits nach rechts.
	  $aFrame[3] = BitAND($iData_Length, 255) ;Addiert die Bit von $iData_Length mit 11111111.
	  $iFrameSize = 3
   EndIf

   For $iIndex = 0 To $iFrameSize
	  $sEncoded &= Chr($aFrame[$iIndex])
   Next

   $sEncoded &= $sPacket

   Return $sEncoded
EndFunc
Func _DecodeWebSocketPacket($sPacket)
   Local $sBytes, $iData_Length, $sMask, $sEncoded, $sDecoded

   $sBytes = $sPacket
   $iData_Length = BitAND(Asc(_SubString($sBytes, 1, 1)), 127) ;Lösche das erste Bit
   $sDecoded = ""

   If $iData_Length = 126 Then
	  $sMask = _SubString($sBytes, 4, 8)
	  $sEncoded = _SubString($sBytes, 8)
   ElseIf $iData_Length = 127 Then
	  $sMask = _SubString($sBytes, 10, 14)
	  $sEncoded = _SubString($sBytes, 14)
   Else
	  $sMask = _SubString($sBytes, 2, 6)
	  $sEncoded = _SubString($sBytes, 6)
   EndIf

   $iIndex = 0
   Do
	  $sDecoded &= Chr(BitXOR(Asc(_SubString($sEncoded, $iIndex, 1)), Asc(_SubString($sMask, Mod($iIndex, 4), 1)))) ;Verwende das Byte $iIndex von $sEncoded und das Byte $iIndex welches beim Mod 4 ermittelt wird von $sMask
	  ;Mache daraus einen Ascii-Code und errechne den XOR wert der beiden Bytes. Dann wandle das ganze wieder in einen Lesbaren Character um.

	  $iIndex += 1
   Until $iIndex > StringLen($sEncoded)-1

   Return $sDecoded
EndFunc

Func _SubString($sString, $iBeginn, $iCount = 0);Ja ich weiss das es eine ähnliche Funktion in AutoIt gibt, fiel mir aber zuspät ein.
   If $iBeginn < 0 Then
	  Return StringRight($sString, ($iBeginn*-1))
   EndIf

   If $iBeginn > 0 Then
	  $sString = StringTrimLeft ($sString, $iBeginn)
   EndIf

   If $iCount = 0 Then
	  $iCount = StringLen($sString)
   EndIf

   Return StringLeft($sString, $iCount)
EndFunc
Attached Files
File Type: txt Agar.io Bot.au3.txt (10.0 KB, 6 views)
FacePalmMan is offline  
Reply


Similar Threads Similar Threads
Websocket Frage
08/15/2014 - Web Development - 3 Replies
Hi, um mich kurz zu fassen: socket.on('joinRoom',function(roomName){ });
Objective C WebSocket <-----
01/27/2014 - C/C++ - 2 Replies
Hi suche jemanden der mir zeigen kann wie man WebSockets in Objective C einbaut und sich so infos von anderen Seiten oder Datenbanken holt zB Spielstand von einem Bundesliga Spiel oder sonst i.was wenn ihr es gut macht gibt es auch ein kleines Taschengeld. MfG :)
[Problem] HTML5 Websocket
06/01/2013 - Web Development - 0 Replies
Guten Tag Community, Ich habe ein Problem bei der Konversation zeischen der HTML Websocket-Schnittstelle und meinem eigenem PHP-Websocket-Server. Um genau zu sein funktioniert der Verbindungsaufbau und der WS-Handschake schon tadellos, nur wenn ich im Code //ws ist eine websocketinstantz von der HTML5-API ws.send("test"); schreibe, kommt beim Server jedesmal ein komplett anderer String an (z.B. "..!h F*." oder "/.!d.."). Ich habe dann mit Wireshark denn Traffic beobachtet, und...
Need Help in Decoding!!
12/24/2011 - Facebook - 0 Replies
Please Help me In Decoding those Files.. Thanks, jslvdr



All times are GMT +1. The time now is 12:10.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.