Since the server is overloaded apparently and people can't see what this is without connecting:
Connection to clearsky.dev (155.133.22.147) 29438 port [tcp/*] succeeded!
AXR2KPxr2000.leo.spacenet:send a single 0 byte followed by 'XR2K' for documentation.
which results in:
SPACE TERMINAL INTERFACE PROTOCOL
=================================
The XR-2000 space terminal is a communications satellite that is used to communicate with spacecraft.
This protocol allows a user to remotely use the XR-2000 space terminal to send messages to and receive messages from spcecraft using the global space communication network.
PACKET STRUCTURE
----------------
Packets are sent over a TCP connection that is established by the client to the terminal on port 29438.
packet header:
* 2 bits length field length (LFL).
- 0: packet has no payload.
- 1: 1 byte length field
- 2: 2 byte length field
- 3: 4 byte length field
\* 1 bit: request id field present
\* 5 bits packet type.
\* 1 byte request id (if present)
\* 4 bytes magic
\* 0, 1, 2 or 4 bytes payload length
\* 0..n bytes payload
all integers are little endian and unsigned unless indicated otherwise.
The request id field can be used by the client to correlate requests with their responses. The value may be chosen by the client. If the field is present in a request packet, it will be copied into the response by the terminal.
The magic bytes contain the ascii text: XR2K
PACKET TYPES
------------
The following packet types are defined:
\* 0x00 help client -> terminal
\* 0x01 hello terminal -> client
\* 0x02 documentation terminal -> client
\* 0x03 register client -> terminal
\* 0x04 registered terminal -> client
\* 0x05 login client -> terminal
\* 0x07 getstatus client -> terminal
\* 0x08 status terminal -> client
\* 0x09 getmail client -> terminal
\* 0x0a mail terminal -> client
\* 0x0b sendmail client -> terminal
\* 0x12 configure client -> terminal
\* 0x14 route both
\* 0x15 translate client -> terminal
\* 0x16 translation terminal -> client
\* 0x1f result terminal -> client
0x00 HELP PACKET
-------------------------
This packet is used by the client to request the protocol documentation. The terminal will respond with a DOCUMENTATION (0x02) packet.
This packet has no contents, which means the Length-Field-Length is 0. The request id field can also be disabled. So the client only needs to send a single 0-byte to obtain the documentation.
0x01 HELLO PACKET
-----------------
This packet is sent by the terminal inmediately after a new TCP connection has been established.
Packet payload:
\* 1 byte: protocol version. The only defined version is 1
\* 1 byte: terminal hostname length
\* 0..255 bytes: terminal hostname
\* 1 byte: documentation instruction length
\* 0..255 bytes: documentation instructions
0x02 DOCUMENTATION PACKET
-------------------------
This packet is sent by the terminal to provide the this document, the protocol spec, to the client.
The contents of this packet is the protocol spec.
0x03 REGISTER PACKET
--------------------
This packet is sent by the client to create a new user account. This packet is only valid if the user is not yet authenticated.
This packet has no payload.
If registration succeeds, the terminal will respond with an REGISTERED (0x04) packet, which contains the username and password of the created user. The client should then save these values so that it can LOGIN later.
If registration fails, the terminal will respond with an RESULT (0x1f) packet.
Possible errors:
\* 0x11 registration rate limiting: too many accounts were registered from this IP.
\* 0x1 already authenticated
0x04 REGISTERED
---------------
This packet is sent by the terminal to the client to provide the credenti...
It was the 2006 edition of the ICFP conference programming contest and it makes you write a small VM which given the provided binary blog leads you to multiple challenges/games.
Thanks a lot! I love programming games. I'm just writing a simple client in python, and when sending a HELP packet, I'm receiving a packet with byte 0x82 as the header, which if I'm not mistaken is packet type 0x10 (0x82 >> 3 = 0x10), rather than 2. Am I missing something?
After sending what I think is the right daily packet, it stopped responding. Restarting the session I no longer get authorized for transceiver usage after logging in.
14 comments
[ 7.0 ms ] story [ 37.2 ms ] threadhttp://www.boundvariable.org/task.shtml
It was the 2006 edition of the ICFP conference programming contest and it makes you write a small VM which given the provided binary blog leads you to multiple challenges/games.
Sounds exhausting.
Pretty sure I don't understand the crypto instructions - this is all I can get out of the spacecraft.
1. Sending GETSTATUS always causes the connection to drop.
2. Sending the first "correct" ROUTE packet causes the server to go down for a while.
3. Sending GETMAIL for the email after the hint email (4th one in my case) causes the connection to drop.
@richmans Happy to be playtesting your game, but I would be glad if you can reply to this comment so that I know this is being read.
db issue?