mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-07-05 20:42:08 -07:00
Golang PSN auth script (#64)
This commit is contained in:
parent
6cfeec48e8
commit
bbf744824b
1 changed files with 103 additions and 0 deletions
103
scripts/psn-account-id.go
Normal file
103
scripts/psn-account-id.go
Normal file
|
@ -0,0 +1,103 @@
|
|||
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"`
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue