Skip to content

Instantly share code, notes, and snippets.

@Hans5958
Last active January 30, 2023 10:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Hans5958/f9870ae89f80b5d972d95031e24584bb to your computer and use it in GitHub Desktop.
Save Hans5958/f9870ae89f80b5d972d95031e24584bb to your computer and use it in GitHub Desktop.
Roblox Cache Buster: Simple script to convert Roblox cache files on `%temp%/Roblox/http` folder to normal, openable files (if valid). Run the script inside `%temp%/Roblox/http`.
from genericpath import isfile
import puremagic, io, os
os.makedirs('cachebuster', exist_ok=True)
for file_name in os.listdir('.'):
if not os.path.isfile(file_name):
continue
# print(file_name)
new_file_headers = b""
new_file_content = None
with open(file_name, mode='rb') as file:
if file.read(4) != b"RBXH":
continue
# Seeking to HTTP request
start = b""
while start != b"\x03\x00\x00\x00":
start = start[-3:] + file.read(1)
# print("READ HEADER")
last_tell = 0
header = b""
separator_exists = False
while (len(header) < 64 or separator_exists) and file.peek(1):
header += file.read(1)
if header[-2:] == b": ":
separator_exists = True
if header[-2:] == b"\r\n" and separator_exists:
last_tell = file.tell()
new_file_headers += header
# print(header)
header = b""
separator_exists = False
if new_file_headers == b"":
# print("NO HEADER")
print(file_name + ": No header")
continue
# print("READ CONTENT")
file.seek(last_tell)
new_file_content = io.BytesIO(file.read())
# print(puremagic.magic_stream(file))
# print(new_file.read(16))
new_file_name = None
puremagic_result = None
try:
puremagic_result = puremagic.magic_stream(new_file_content)
# print(puremagic_result[0].extension)
new_file_name = "cachebuster/" + file_name + puremagic_result[0].extension
except:
new_file_name = "cachebuster/" + file_name
new_file_content.seek(0)
# if len(new_file_content) == 0:
# continue
if not new_file_content.read(1):
print(file_name + ": No content")
continue
if not puremagic_result:
print(file_name + ": OK, unknown")
continue
new_file_content.seek(0)
with open(new_file_name, 'wb') as new_file:
new_file.write(new_file_content.read())
print(file_name + ": OK, " + puremagic_result[0].name)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment