mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-03-12 05:25:23 -07:00
104 lines
3.6 KiB
Go
104 lines
3.6 KiB
Go
package main
|
|
|
|
import (
|
|
"github.com/atotto/clipboard"
|
|
"github.com/pkg/browser"
|
|
"encoding/base64"
|
|
"encoding/binary"
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/url"
|
|
"strings"
|
|
"strconv"
|
|
"bytes"
|
|
"bufio"
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
func main(){
|
|
headless := flag.Bool("headless", false, "Operates in Headless mode")
|
|
flag.Parse()
|
|
fmt.Println(
|
|
`== PSN ID Scraper for Remote Play ==
|
|
In order to get your Account code for Remote Play, You'll need to Login via a special Remote Play login webpage.
|
|
After logging in, you will see a webpage that displays "redirect" in the top-left.
|
|
When you see this page, Copy the entire URL from your browser, paste it below and then press *Enter*
|
|
`)
|
|
reader := bufio.NewReader(os.Stdin)
|
|
if *headless {
|
|
fmt.Println(
|
|
`[Headless] You'll need to open this page in a web browser that supports Javascript/ReCaptcha
|
|
[Headless] https://auth.api.sonyentertainmentnetwork.com/2.0/oauth/authorize?service_entity=urn:service-entity:psn&response_type=code&client_id=ba495a24-818c-472b-b12d-ff231c1b5745&redirect_uri=https://remoteplay.dl.playstation.net/remoteplay/redirect&scope=psn:clientapp&request_locale=en_US&ui=pr&service_logo=ps&layout_type=popup&smcid=remoteplay&prompt=always&PlatformPrivacyWs1=minimal&`)
|
|
} else {
|
|
fmt.Println("Press Enter to open the PSN Remote Play login webpage in your browser")
|
|
reader.ReadString('\n')
|
|
browser.OpenURL("https://auth.api.sonyentertainmentnetwork.com/2.0/oauth/authorize?service_entity=urn:service-entity:psn&response_type=code&client_id=ba495a24-818c-472b-b12d-ff231c1b5745&redirect_uri=https://remoteplay.dl.playstation.net/remoteplay/redirect&scope=psn:clientapp&request_locale=en_US&ui=pr&service_logo=ps&layout_type=popup&smcid=remoteplay&prompt=always&PlatformPrivacyWs1=minimal&")
|
|
}
|
|
|
|
fmt.Print("Awaiting Input >")
|
|
response, _ := reader.ReadString('\n')
|
|
response = strings.TrimSpace(response)
|
|
URL, err := url.Parse(response)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
query := URL.Query()
|
|
if query.Get("code") == ""{
|
|
log.Fatal("Invalid URL has been submitted")
|
|
}
|
|
|
|
client := &http.Client{}
|
|
data :=url.Values{}
|
|
data.Set("grant_type","authorization_code")
|
|
data.Set("code", query.Get("code"))
|
|
data.Set("redirect_uri","https://remoteplay.dl.playstation.net/remoteplay/redirect")
|
|
req, err := http.NewRequest("POST", "https://auth.api.sonyentertainmentnetwork.com/2.0/oauth/token", strings.NewReader(data.Encode()))
|
|
req.SetBasicAuth("ba495a24-818c-472b-b12d-ff231c1b5745", "mvaiZkRsAsI1IBkY")
|
|
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
|
|
req.Header.Add("Content-Length", strconv.Itoa(len(data.Encode())))
|
|
res, err := client.Do(req)
|
|
|
|
defer res.Body.Close()
|
|
access := AccessKeys{}
|
|
err = json.NewDecoder(res.Body).Decode(&access)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
req, err = http.NewRequest("GET", fmt.Sprintf("https://auth.api.sonyentertainmentnetwork.com/2.0/oauth/token/%v", access.AccessToken), nil)
|
|
req.SetBasicAuth("ba495a24-818c-472b-b12d-ff231c1b5745", "mvaiZkRsAsI1IBkY")
|
|
res, err = client.Do(req)
|
|
|
|
info := ClientInfo{}
|
|
err = json.NewDecoder(res.Body).Decode(&info)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
uid, _ := strconv.ParseInt(info.UserID, 10, 0)
|
|
|
|
buf := new(bytes.Buffer)
|
|
err = binary.Write(buf, binary.LittleEndian, uid)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
uidBytes := buf.Bytes()
|
|
fmt.Printf("Your AccountID is: %v (Copied to Clipboard)\n", base64.StdEncoding.EncodeToString(uidBytes))
|
|
clipboard.WriteAll(base64.StdEncoding.EncodeToString(uidBytes))
|
|
|
|
fmt.Println("Press Enter to quit")
|
|
reader.ReadString('\n')
|
|
}
|
|
|
|
type AccessKeys struct {
|
|
AccessToken string `json:"access_token"`
|
|
}
|
|
|
|
type ClientInfo struct {
|
|
UserID string `json:"user_id"`
|
|
}
|