From 572d5905866e2d54a9c847ed04d99f518a52ecda Mon Sep 17 00:00:00 2001 From: zeruth Date: Tue, 25 Jun 2019 00:32:15 -0400 Subject: [PATCH] fix rsps stuff --- params.txt | 24 +++ .../net/runelite/client/rs/ClientLoader.java | 2 +- .../net/runelite/client/rs/RSAppletStub.java | 147 +++++++++++++----- .../net/runelite/mixins/RSBufferMixin.java | 53 +++++++ .../net/runelite/mixins/RSGameShellMixin.java | 8 + 5 files changed, 191 insertions(+), 43 deletions(-) create mode 100644 params.txt create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSBufferMixin.java diff --git a/params.txt b/params.txt new file mode 100644 index 0000000000..5de07bea64 --- /dev/null +++ b/params.txt @@ -0,0 +1,24 @@ +Created at Thu Jun 20 05:35:31 CDT 2019 + +codebase=http://oldschool6b.runescape.com/ +mainclass=client.class + +param=1=1 +param=2=https://payments.jagex.com/operator/v1/ +param=3=true +param=4=761 +param=5=1 +param=6=0 +param=7=0 +param=8=true +param=9=ElZAIrq5NpKN6D3mDdihco3oPeYN2KFy2DCquj7JMmECPmLrDP3Bnw +param=10=5 +param=11=https://auth.jagex.com/ +param=12=306 +param=13=.runescape.com +param=14=0 +param=15=0 +param=16=false +param=17=http://www.runescape.com/g=oldscape/slr.ws?order=LPWM +param=18= +param=19=196515767263-1oo20deqm6edn7ujlihl6rpadk9drhva.apps.googleusercontent.com diff --git a/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java b/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java index 058336e738..175b5e9a5b 100644 --- a/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java +++ b/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java @@ -108,7 +108,7 @@ public class ClientLoader private static Applet loadFromClass(final RSConfig config, final Class clientClass) throws IllegalAccessException, InstantiationException { final Applet rs = (Applet) clientClass.newInstance(); - rs.setStub(new RSAppletStub(config)); + rs.setStub(new RSAppletStub()); return rs; } } diff --git a/runelite-client/src/main/java/net/runelite/client/rs/RSAppletStub.java b/runelite-client/src/main/java/net/runelite/client/rs/RSAppletStub.java index a3a2a0f14a..df3fce8e0e 100644 --- a/runelite-client/src/main/java/net/runelite/client/rs/RSAppletStub.java +++ b/runelite-client/src/main/java/net/runelite/client/rs/RSAppletStub.java @@ -1,70 +1,133 @@ -/* - * Copyright (c) 2016-2017, Adam - * Copyright (c) 2018, Tomas Slusny - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.client.rs; import java.applet.AppletContext; import java.applet.AppletStub; -import java.net.MalformedURLException; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.net.URL; -import lombok.RequiredArgsConstructor; +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Logger; -@RequiredArgsConstructor -class RSAppletStub implements AppletStub +public class RSAppletStub implements AppletStub { - private final RSConfig config; + + public static final Logger logger = Logger.getLogger(RSAppletStub.class.getSimpleName()); + + private static final HashMap params = new HashMap(); + private static final HashMap cfg = new HashMap(); + private static URL codebase; + + static + { + cfg.put("privacyurl", "http://www.jagex.com/g=oldscape/privacy/privacy.ws"); + cfg.put("window_preferredheight", "600"); + cfg.put("msg", "new_version_link=http://oldschool.runescape.com/"); + cfg.put("applet_minwidth", "765"); + cfg.put("adverturl", "http://www.runescape.com/g=oldscape/bare_advert.ws"); + cfg.put("cachedir", "oldschool"); + cfg.put("window_preferredwidth", "800"); + cfg.put("applet_maxheight", "2160"); + cfg.put("win_sub_version", "1"); + cfg.put("browsercontrol_win_x86_jar", "browsercontrol_0_-1928975093.jar"); + cfg.put("other_sub_version", "2"); + cfg.put("initial_jar", "gamepack_4840368.jar"); + cfg.put("advert_height", "96"); + cfg.put("title", "Old School RuneScape"); + cfg.put("storebase", "0"); + cfg.put("initial_class", "client.class"); + cfg.put("applet_maxwidth", "5760"); + cfg.put("download", "1230228"); + cfg.put("termsurl", "http://www.jagex.com/g=oldscape/terms/terms.ws"); + cfg.put("codebase", "http://oldschool1.runescape.com/"); + cfg.put("mac_sub_version", "2"); + cfg.put("browsercontrol_win_amd64_jar", "browsercontrol_1_1674545273.jar"); + cfg.put("applet_minheight", "503"); + cfg.put("viewerversion", "124"); + } + + public RSAppletStub() + { + try + { + parseParams(new FileInputStream(new File("./params.txt"))); + String worldListKey = null; + for (Map.Entry paramEntry : params.entrySet()) + { + String key = paramEntry.getKey(); + String value = paramEntry.getValue(); + if (value.contains("slr.ws")) + { + worldListKey = key; + break; + } + } + codebase = new URL("http://runeliteplus-ps.ddns.net"); //host + params.put(worldListKey, "http://" + codebase.getHost()); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + + private static void parseParams(InputStream stream) throws IOException + { + BufferedReader br = new BufferedReader(new InputStreamReader(stream)); + String line; + while ((line = br.readLine()) != null) + { + int idx = line.indexOf('='); + if (idx != -1) + { + String key = line.substring(0, idx); + String val = line.substring(idx + 1); + if (key.equals("param")) + { + idx = val.indexOf('='); + key = val.substring(0, idx); + val = val.substring(idx + 1); + params.put(key, val); + } + else + { + cfg.put(key, val); + } + } + } + } + + public static void log(String format, Object... params) + { + System.out.printf(format + "\n", params); + } @Override public boolean isActive() { - return true; + return false; } @Override public URL getDocumentBase() { - return getCodeBase(); + return codebase; } @Override public URL getCodeBase() { - try - { - return new URL(config.getCodeBase()); - } - catch (MalformedURLException ex) - { - return null; - } + return codebase; } @Override public String getParameter(String name) { - return config.getAppletProperties().get(name); + return params.get(name); } @Override @@ -77,4 +140,4 @@ class RSAppletStub implements AppletStub public void appletResize(int width, int height) { } -} \ No newline at end of file +} diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSBufferMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSBufferMixin.java new file mode 100644 index 0000000000..e37dadc241 --- /dev/null +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSBufferMixin.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2019, Null (zeruth) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.mixins; + +import java.math.BigInteger; +import net.runelite.api.mixins.Copy; +import net.runelite.api.mixins.Inject; +import net.runelite.api.mixins.Mixin; +import net.runelite.api.mixins.Replace; +import net.runelite.rs.api.RSBuffer; + +@Mixin(RSBuffer.class) +public abstract class RSBufferMixin implements RSBuffer +{ + @Inject + private static BigInteger modulus = new BigInteger("10001", 16); + + @Inject + private static BigInteger exponent = new BigInteger("bb5d826b249905895f4e463422dd339f8375ed5b212ac8890a97e4ab7dba0c5fe8188f44c00f8106e5721f615a8bcee2da7316ff1572cad5fbfd33f30985f0ae855cfd498483ecc0c3a01c8630f90cff1f54e75a44d58482c371e203e6eb7ba879fd65949aeef827a5e550429bd857d712f64351bc1162e1615ca6622a3bc9b8e31a96000fb0a01a12a51ca3e89918c06759d1db65c33dc6a074abec02f94466886d1a52e7d084aa88338aab1f25d58f9e03ed0a308c6c4eed139c1c1c818cd2370d8cd28ec34bce18360d1756e202eb733f998200242d71ce19548f23b03c1eac4d6e9892616ade1c66d2ce3ab69744e27d7099f3574bcd3d3e95e7a52180d9", 16); + + @Copy("encryptRsa") + public void rs$encryptRsa(BigInteger var1, BigInteger var2) + { + } + + @Replace("encryptRsa") + public void rl$encryptRsa(BigInteger var1, BigInteger var2) + { + rs$encryptRsa(modulus, exponent); + } +} diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSGameShellMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSGameShellMixin.java index e45d2612e7..93f389345a 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSGameShellMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSGameShellMixin.java @@ -31,6 +31,7 @@ import net.runelite.api.mixins.FieldHook; import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.MethodHook; import net.runelite.api.mixins.Mixin; +import net.runelite.api.mixins.Replace; import net.runelite.api.mixins.Shadow; import net.runelite.rs.api.RSClient; import net.runelite.rs.api.RSGameShell; @@ -97,4 +98,11 @@ public abstract class RSGameShellMixin implements RSGameShell setResizeCanvasNextFrame(true); } } + + @Replace("checkHost") + protected final boolean checkHost() + { + //Always allow host. + return true; + } }