In <[EMAIL PROTECTED]>, nephish wrote:

> tohex gave me
> '53 54 58
  
   S  T  X

> 00 00 00 34

Length!?  Decimal 57.

> 00 00 00 c8

Type!?  Decimal 200.

> 70 69 76 6f 74 72 61 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 74 72 61 63 31 70 69 76 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Payload!?

> 45 4e 58'

  E  N  X

> this is the login message (message type 200)

import struct

data = ('STX'
        '\x00\x00\x004'
        '\x00\x00\x00\xc8'
        'stateman\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
        '\x00\x00\x00state1man\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
        '\x00\x00\x00\x00ENX')

def split_message(message):
    if not (message.startswith('STX') or message.endswith('ENX')):
        raise ValueError('missing start or end sequence')
    length, message_type = struct.unpack('>II', message[3:11])
    return length, message_type, message[11:-3]

print 'length: %d\ntype: %d\n%r' % split_message(data)

The problem I see is the length.  The payload without STX, ENX and the two
numbers in front is 47 bytes so there's a 5 byte difference.  You have to
look at some more messages to get an idea how the length corresponds to
the actual payloads length.

Ciao,
        Marc 'BlackJack' Rintsch
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to