forked from katboi01/JapariBypass
fixes
This commit is contained in:
parent
222c73f667
commit
358657c3d8
|
@ -0,0 +1,2 @@
|
||||||
|
*.cfg
|
||||||
|
*__pycache__*
|
20
dmmBypass.py
20
dmmBypass.py
|
@ -3,9 +3,9 @@ import sys
|
||||||
import wmi
|
import wmi
|
||||||
import hashlib
|
import hashlib
|
||||||
import requests
|
import requests
|
||||||
|
import dmmUpdater
|
||||||
import subprocess
|
import subprocess
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
import dmmUpdater
|
|
||||||
from uuid import getnode
|
from uuid import getnode
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
from pypasser import reCaptchaV3
|
from pypasser import reCaptchaV3
|
||||||
|
@ -28,12 +28,12 @@ def retrieve_login_token(session : requests.Session):
|
||||||
print("Retrieving login form")
|
print("Retrieving login form")
|
||||||
url = "https://accounts.dmm.com/service/login/password"
|
url = "https://accounts.dmm.com/service/login/password"
|
||||||
result = session.get(url)
|
result = session.get(url)
|
||||||
|
result.raise_for_status()
|
||||||
page = BeautifulSoup(result.content, 'html.parser')
|
page = BeautifulSoup(result.content, 'html.parser')
|
||||||
token = page.find('input', attrs={"name":"token"}).get("value")
|
token = page.find('input', attrs={"name":"token"}).get("value")
|
||||||
return token
|
return token
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Failed to retrieve login form:", e)
|
print("Failed to retrieve login form:", e)
|
||||||
return None
|
|
||||||
|
|
||||||
def retrieve_captcha_token():
|
def retrieve_captcha_token():
|
||||||
try:
|
try:
|
||||||
|
@ -41,7 +41,6 @@ def retrieve_captcha_token():
|
||||||
return captcha
|
return captcha
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Failed to solve captcha:", e)
|
print("Failed to solve captcha:", e)
|
||||||
return None
|
|
||||||
|
|
||||||
def retrieve_auth_keys(login, password, token, captcha, session : requests.Session):
|
def retrieve_auth_keys(login, password, token, captcha, session : requests.Session):
|
||||||
try:
|
try:
|
||||||
|
@ -50,11 +49,11 @@ def retrieve_auth_keys(login, password, token, captcha, session : requests.Sessi
|
||||||
data = f"token={token}&login_id={login}&password={password}&prompt=&device=games-player&recaptchaToken={captcha}"
|
data = f"token={token}&login_id={login}&password={password}&prompt=&device=games-player&recaptchaToken={captcha}"
|
||||||
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
||||||
result = session.post(url, data, headers=headers)
|
result = session.post(url, data, headers=headers)
|
||||||
|
result.raise_for_status()
|
||||||
cookies = result.cookies.get_dict()
|
cookies = result.cookies.get_dict()
|
||||||
return cookies["login_secure_id"], cookies["login_session_id"]
|
return cookies["login_secure_id"], cookies["login_session_id"]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Failed to log in:", e)
|
print("Failed to log in:", e)
|
||||||
return None, None
|
|
||||||
|
|
||||||
def retrieve_update_params(game_id, login_secure, login_session, use_proxy):
|
def retrieve_update_params(game_id, login_secure, login_session, use_proxy):
|
||||||
try:
|
try:
|
||||||
|
@ -64,7 +63,7 @@ def retrieve_update_params(game_id, login_secure, login_session, use_proxy):
|
||||||
cookies = {"login_secure_id":login_secure, "login_session_id":login_session}
|
cookies = {"login_secure_id":login_secure, "login_session_id":login_session}
|
||||||
url = "https://katworks.sytes.net/KF/Api/DMM/filelist" if use_proxy else "https://apidgp-gameplayer.games.dmm.com/v5/r2/filelist/cl"
|
url = "https://katworks.sytes.net/KF/Api/DMM/filelist" if use_proxy else "https://apidgp-gameplayer.games.dmm.com/v5/r2/filelist/cl"
|
||||||
result = requests.post(url, cookies=cookies, headers=headers, json=data)
|
result = requests.post(url, cookies=cookies, headers=headers, json=data)
|
||||||
|
result.raise_for_status()
|
||||||
data = result.json()["data"]
|
data = result.json()["data"]
|
||||||
game_version = data["latest_version"]
|
game_version = data["latest_version"]
|
||||||
print("Latest version:", game_version)
|
print("Latest version:", game_version)
|
||||||
|
@ -74,7 +73,6 @@ def retrieve_update_params(game_id, login_secure, login_session, use_proxy):
|
||||||
return file_list_url, file_list_params
|
return file_list_url, file_list_params
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Failed to retrieve update file list:", e)
|
print("Failed to retrieve update file list:", e)
|
||||||
return
|
|
||||||
|
|
||||||
def retrieve_launch_params(game_id, mac_addr, hdd_serial, motherboard, login_secure, login_session, use_proxy):
|
def retrieve_launch_params(game_id, mac_addr, hdd_serial, motherboard, login_secure, login_session, use_proxy):
|
||||||
try:
|
try:
|
||||||
|
@ -84,12 +82,11 @@ def retrieve_launch_params(game_id, mac_addr, hdd_serial, motherboard, login_sec
|
||||||
cookies = {"login_secure_id":login_secure, "login_session_id":login_session}
|
cookies = {"login_secure_id":login_secure, "login_session_id":login_session}
|
||||||
url = "https://katworks.sytes.net/KF/Api/DMM/launch" if use_proxy else "https://apidgp-gameplayer.games.dmm.com/v5/r2/launch/cl"
|
url = "https://katworks.sytes.net/KF/Api/DMM/launch" if use_proxy else "https://apidgp-gameplayer.games.dmm.com/v5/r2/launch/cl"
|
||||||
result = requests.post(url, cookies=cookies, headers=headers, json=data)
|
result = requests.post(url, cookies=cookies, headers=headers, json=data)
|
||||||
|
result.raise_for_status()
|
||||||
data = result.json()["data"]
|
data = result.json()["data"]
|
||||||
return data["execute_args"]
|
return data["execute_args"]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Failed to retrieve launch arguments:", e)
|
print("Failed to retrieve launch arguments:", e)
|
||||||
return None
|
|
||||||
|
|
||||||
def main(args):
|
def main(args):
|
||||||
if len(args) != 7:
|
if len(args) != 7:
|
||||||
|
@ -120,7 +117,6 @@ def main(args):
|
||||||
if token == None or captcha == None:
|
if token == None or captcha == None:
|
||||||
return
|
return
|
||||||
|
|
||||||
#auth keys are also saved as cookies in session
|
|
||||||
login_secure, login_session = retrieve_auth_keys(login, password, token, captcha, session)
|
login_secure, login_session = retrieve_auth_keys(login, password, token, captcha, session)
|
||||||
|
|
||||||
if not use_proxy: input("Enable VPN now and press Enter")
|
if not use_proxy: input("Enable VPN now and press Enter")
|
||||||
|
@ -129,12 +125,16 @@ def main(args):
|
||||||
file_list_url, file_access_params = retrieve_update_params(game_id, login_secure, login_session, use_proxy)
|
file_list_url, file_access_params = retrieve_update_params(game_id, login_secure, login_session, use_proxy)
|
||||||
if file_list_url == None or file_access_params == None:
|
if file_list_url == None or file_access_params == None:
|
||||||
return
|
return
|
||||||
dmmUpdater.update_game(os.path.dirname(exe_location), file_list_url, file_access_params)
|
|
||||||
|
|
||||||
execute_args = retrieve_launch_params(game_id, mac_addr, hdd_serial, motherboard, login_secure, login_session, use_proxy)
|
execute_args = retrieve_launch_params(game_id, mac_addr, hdd_serial, motherboard, login_secure, login_session, use_proxy)
|
||||||
|
if execute_args == None:
|
||||||
|
return
|
||||||
|
|
||||||
if not use_proxy: input("Disable VPN now and press Enter")
|
if not use_proxy: input("Disable VPN now and press Enter")
|
||||||
|
|
||||||
|
if update_game:
|
||||||
|
dmmUpdater.update_game(os.path.dirname(exe_location), file_list_url, file_access_params)
|
||||||
|
|
||||||
print("Starting game")
|
print("Starting game")
|
||||||
args = [exe_location] + execute_args.split()
|
args = [exe_location] + execute_args.split()
|
||||||
print(args)
|
print(args)
|
||||||
|
|
|
@ -22,7 +22,9 @@ def progressbar(it, prefix="", size=60, out=sys.stdout): # Python3.3+
|
||||||
def get_file_list(url):
|
def get_file_list(url):
|
||||||
url = "https://apidgp-gameplayer.games.dmm.com" + url
|
url = "https://apidgp-gameplayer.games.dmm.com" + url
|
||||||
print("Retrieving file list from " + url)
|
print("Retrieving file list from " + url)
|
||||||
data = requests.get(url).json()["data"]
|
result = requests.get(url)
|
||||||
|
result.raise_for_status()
|
||||||
|
data = result.json()["data"]
|
||||||
return data["domain"], data["file_list"]
|
return data["domain"], data["file_list"]
|
||||||
|
|
||||||
def get_file_hash(file_path):
|
def get_file_hash(file_path):
|
||||||
|
@ -37,11 +39,12 @@ def get_file_hash(file_path):
|
||||||
return file_hash.hexdigest()
|
return file_hash.hexdigest()
|
||||||
|
|
||||||
def update_game(game_path, files_url, files_param):
|
def update_game(game_path, files_url, files_param):
|
||||||
|
print("Updating game")
|
||||||
server_url, server_files = get_file_list(files_url)
|
server_url, server_files = get_file_list(files_url)
|
||||||
server_file_dict = {file["local_path"]: file for file in server_files}
|
server_file_dict = {file["local_path"]: file for file in server_files}
|
||||||
|
|
||||||
local_files = [os.path.join(dp, f).replace("\\", "/") for dp, dn, filenames in os.walk(game_path) for f in filenames]
|
local_files = [os.path.join(dp, f).replace("\\", "/") for dp, dn, filenames in os.walk(game_path) for f in filenames]
|
||||||
local_file_dict = {"/" + os.path.relpath(r, game_path).replace("\\", "/"): {"abs_path":r, "hash":""} for r in local_files if not "BepInEx" in r}
|
local_file_dict = {"/" + os.path.relpath(r, game_path).replace("\\", "/"): {"abs_path":r, "hash":""} for r in local_files}
|
||||||
|
|
||||||
files_to_download = []
|
files_to_download = []
|
||||||
files_to_delete = []
|
files_to_delete = []
|
||||||
|
|
|
@ -11,7 +11,6 @@ IF NOT EXIST %file_name% (
|
||||||
set /p dmm_login=DMM Login:
|
set /p dmm_login=DMM Login:
|
||||||
set /p dmm_password=DMM Password:
|
set /p dmm_password=DMM Password:
|
||||||
set /p confirm="Your login tokens will be sent through Katboi's VPN machine, is that ok? Personal VPN is required if not (yes/no):"
|
set /p confirm="Your login tokens will be sent through Katboi's VPN machine, is that ok? Personal VPN is required if not (yes/no):"
|
||||||
echo !confirm!
|
|
||||||
if /i "!confirm!"=="yes" (
|
if /i "!confirm!"=="yes" (
|
||||||
set use_proxy=true
|
set use_proxy=true
|
||||||
) else (
|
) else (
|
||||||
|
|
|
@ -11,7 +11,6 @@ IF NOT EXIST %file_name% (
|
||||||
set /p dmm_login=DMM Login:
|
set /p dmm_login=DMM Login:
|
||||||
set /p dmm_password=DMM Password:
|
set /p dmm_password=DMM Password:
|
||||||
set /p confirm="Your login tokens will be sent through Katboi's VPN machine, is that ok? Personal VPN is required if not (yes/no):"
|
set /p confirm="Your login tokens will be sent through Katboi's VPN machine, is that ok? Personal VPN is required if not (yes/no):"
|
||||||
echo !confirm!
|
|
||||||
if /i "!confirm!"=="yes" (
|
if /i "!confirm!"=="yes" (
|
||||||
set use_proxy=true
|
set use_proxy=true
|
||||||
) else (
|
) else (
|
||||||
|
|
Loading…
Reference in New Issue