Git Product home page Git Product logo

pipboyrelay's Introduction

pipboyrelay

npm version

Relay for the pip boy app for Fallout 4

It's Close to Metal!

Read the blog post for more details

The entire protocol has been decoded and there are now full node bindings at pipboylib!

Requirements

  • Fallout 4 for the PC or PS4. (XBONE has not been diagnosed)
  • pip boy app for Android or iOS
  • pip boy app enabled in-game on Fallout 4
  • nodejs >= 4.x, npm

Installation

npm install -g pipboyrelay

Usage

Run the pipboy relay at the command line:

$ pipboyrelay
Discovered:  { IsBusy: false,
  MachineType: 'PS4',
  info: { address: '192.168.1.71', family: 'IPv4', port: 28000, size: 50 } }

It will autodiscover any games running with an active server on your local network and create its own endpoints that the Android/iOS app will recognize.

Open up the mobile app, navigate to the connection settings screen and connect to the other address listed than you saw discovered above. You should start seeing data fly by.

UDP and TCP Relay created for:  { address: '192.168.1.71', family: 'IPv4', port: 28000, size: 50 }
listening
[TCP Relay] 192.168.1.71:27000 -> ::ffff:192.168.1.67:55232
00000000: 2300 0000 017b 226c 616e 6722 3a22 656e  #....{"lang":"en
00000010: 222c 2276 6572 7369 6f6e 223a 2231 2e31  ","version":"1.1
00000020: 2e32 312e 3022 7d0a                      .21.0"}.

[TCP Relay] 192.168.1.71:27000 -> ::ffff:192.168.1.67:55232
00000000: 754e 0600 0306 5290 0f00 2447 656e 6572  uN....R...$Gener
00000010: 616c 0003 6290 0f00 1e00 0000 0661 900f  al..b........a..
00000020: 004c 6f63 6174 696f 6e73 2044 6973 636f  .Locations.Disco
...
[TCP Relay] 192.168.1.71:27000 -> ::ffff:192.168.1.67:55232
00000000: 7565 002d 910f 0074 6578 7400 2f91 0f00  ue.-...text./...
00000010: 7368 6f77 4966 5a65 726f 0000 0003 3291  showIfZero....2.
00000020: 0f00 0000 0000 0631 910f 0046 6974 7320  .......1...Fits.
...

Interesting bit above - look at byte 0x18 (0x1e), occurring right before "Locations Discovered". That's the current number of locations discovered with my current character. It's a binary format but it's in plaintext. Should be able to decode this and hopefully send instructions to the running server.

pipboyrelay's People

Contributors

alexanderdzhoganov avatar rgbkrk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

pipboyrelay's Issues

Throwing Error on Invalid Listen Type

I'm getting an error when I run the pipboyrelay module on node v0.10.38

Discovered:  { IsBusy: true,
  MachineType: 'PC',
  info: { address: '192.168.1.85', family: 'IPv4', port: 28000, size: 48 } }
[Error: Invalid listen argument: [object Object]]

Steps to recreate:

  • $ npm i -g pipboyrelay
  • $ pipboyrelay with the game running of different PC.

Fun ideas

  • Google maps with map data, share your location and loot log with with other people
  • Send location data to a server and insert it into other peoples pipboy apps via proxy
  • Add extra items or way points to the pipboy app
  • Inject high res map images
  • Fix the bug (in fallout) where map_update sends broken images
  • Make a web version of the mobile app
  • See if there are any RPC commands not in the mobile app, or try to add some to the game using F4SE
  • Automation
  • Twitch helps $whoever waste stimpax and get drunk

A place for research?

Any thoughts on a place to log findings?

You've probably seen this yourself, but I noticed the console is sending a "ping" of 5 bytes of zeros. As long as the client responds back with the same, the server keeps the connection open (I confirmed it with a toy client).

Just thought I'd share this small tidbit. Fantastic blog post!

Console commands

More of a question than an issue,

Is there any currently documented discoveries of issueing console commands through the pipboy API?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.