-
Notifications
You must be signed in to change notification settings - Fork 0
/
notes.txt
74 lines (45 loc) · 1.49 KB
/
notes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
notes.txt
The fallout executable listens on:
TCP port 27000
UDP port 28000
----
android app broadcasts:
UDP 28000
{"cmd":"autodiscover"}
PC app gets broadcast,
replies directly with:
UDP 28000
{
"IsBusy" : false,
"MachineType" : "PC"
}
android app displays list of responses
user selects a listed device
---
app connects:
TCP 27000 : <deviceIP>
PC immediately sends a gestalt of pipboy state:
connecting to 192.168.42.101 port 27000
sending "'\x00\x00\x00\x00\x00'"
received "'#\x00\x00\x00\x01'"
received "'{"lang":"en","version":"1.1.30.0"}\n'"
received "'\x90\x95\x05\x00\x03'"
app presumably verifies version & lang, then replies with a 5-null heartbeat:
'\x00\x00\x00\x00\x00'
server MUST respond with same 5 nulls or app will disconnect after 5 failed sends.
--
app & server now trade '\x00\x00\x00\x00\x00' back & forth to keep the connection open.
--
Changing tabs on the pipboy app results in messages like:
'{"type":14,"args":[],"id":6}'
where "id" appears to represent the page being viewed.
--
also note, app shows 'view mode' at top of screen, like when game is paused. need to gather more data on how to change that.
---
Wire Protocol appears to be:
: Length (uint) : Command Type (byte) : Payload (LengthByte) :
Known Command Types:
0 ) heartbeat
1 ) json version string
3 ) serialized game info - this can be any length, and is simply a binary stream of changed data, encoded as below.
5 ) json-encoded events from the app