-
02.02.2012, 19:06 #1
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.937 Times in 1.180 PostsBananachat / Knuddels Encoding und Decoding
Hallo,
kann vielleicht jemand die 2 Funktionen aus der Bananachat(von Flav) Protocol Datei nach Vb.net umschreiben?
Code ist so :
PHP-Code:package knuddels;
import java.io.InputStream;
import java.io.IOException;
public class Protocol {
public static byte[] decode(InputStream in) throws IOException {
byte first = (byte) in.read();
if (first == -1) {
throw new IOException("End of stream");
}
int length;
if (first >= 0) {
length = first + 1;
} else {
length = (first & 0x1F) + 1;
int count = (first & 0x60) >>> 5;
for (int i = 0; i < count; i++) {
length += in.read() << (i << 3) + 5;
}
}
byte[] buffer = new byte[length];
in.read(buffer, 0, length);
return buffer;
}
public static byte[] encode(byte[] message) {
int length = message.length - 1;
byte[] len;
if (length < 128) {
len = new byte[] { (byte) length };
} else {
int count = 0;
while (32 << (count + 1 << 3) <= length) {
count++;
}
count++;
len = new byte[count + 1];
len[0] = (byte) (count << 5 | 0x80 | length & 0x1F);
for (int i = 1; i < len.length; i++) {
len[i] = (byte) (length >>> 8 * (i - 1) + 5);
}
}
byte[] buffer = new byte[len.length + message.length];
System.arraycopy(len, 0, buffer, 0, len.length);
System.arraycopy(message, 0, buffer, len.length, message.length);
return buffer;
}
}
Wäre sehr nett, Danke im Vorraus.Geändert von DeKaDeNz (08.02.2012 um 00:42 Uhr) Grund: Code-Tag mit PHP-Tag für Syntaxhighlight ausgetauscht.
-
02.02.2012, 19:12 #2
- Registriert seit
- 19.12.2011
- Beiträge
- 356
Thanked 164 Times in 101 PostsAW: Bananachat Protocol
Die sind bereits in C# umgeschrieben. Finden sich in der KNLib.
Gibt diverse Converter im Netz die das ohne Probleme umwandeln.
Hier der C# Code aus meinem Projekt
PHP-Code:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace KNDeKaDeNz.IO
{
public class Encoder
{
public byte[] decodeKey;
public Encoder(byte[] dec)
{
decodeKey = dec;
}
public byte[] Encode(byte[] message)
{
int length = message.Length - 1;
byte[] len;
if (length < 128)
{
len = new byte[] { (byte)length };
}
else
{
int count = 0;
while (32 << (count + 1 << 3) <= length)
{
count++;
}
count++;
len = new byte[count + 1];
len[0] = (byte)(count << 5 | 0x80 | length & 0x1F);
for (int i = 1; i < len.Length; i++)
{
len[i] = (byte)(length >> 8 * (i - 1) + 5);
}
}
byte[] buffer = new byte[len.Length + message.Length];
len.CopyTo(buffer, 0);
message.CopyTo(buffer, len.Length);
return buffer;
}
public byte[] Decode(Stream stream)
{
sbyte first = (sbyte)stream.ReadByte();
if (first == -1)
{
throw new IOException("End of stream");
}
int length;
if (first >= 0)
{
length = first + 1;
}
else
{
length = (first & 0x1F) + 1;
int count = ((first & 0x60) >> 5);
for (int i = 0; i < count; i++)
{
length += (stream.ReadByte() << (i << 3) + 5);
}
}
byte[] buffer = new byte[length];
for (int i = 0; i < length; i++)
{
buffer[i] = (byte)((byte)stream.ReadByte() ^ (decodeKey != null && i < decodeKey.Length ? decodeKey[i] : 0));
}
return buffer;
}
}
}
Dort ist die Klasse bereits kompiliert drinne.
Ich schließe dann auch direkt mal hier, sollte sich noch einer finden, der das in VB umschreiben will, kann er mir oder einem Mod eine PN schicken. Dann machen wir den Thread nochmal dafür auf.Geändert von DeKaDeNz (02.02.2012 um 19:29 Uhr)
-
The Following User Says Thank You to DeKaDeNz For This Useful Post:
Ähnliche Themen
-
[how to]Android APP/.apk decoding-decryption
Von Chrissy im Forum TutorialsAntworten: 8Letzter Beitrag: 22.08.2013, 23:16 -
Installierter Bananachat - Tokens auslesen
Von !lkay im Forum Reverse EngineeringAntworten: 1Letzter Beitrag: 29.01.2013, 16:45 -
BananaChat Registrierungstoken
Von !lkay im Forum JavaAntworten: 3Letzter Beitrag: 06.07.2012, 13:07 -
Bananachat CommandParser Fehler
Von getsha im Forum JavaAntworten: 19Letzter Beitrag: 14.03.2012, 00:41 -
[C#] Knuddels Decoding
Von Festplatte im Forum SourcecodeAntworten: 2Letzter Beitrag: 08.01.2012, 06:38
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.