Ive mad some mistake at first now they should all be fixed, for example I fucked up the maps now its fixed
Untouched Client: https://mega.nz/#!7slVnAKI!EvkX6tv5o...N6AMV0sGdn5S_c
Cache: https://mega.nz/#!Og80VYKa!FcAloxwRs...eq_FlVwXCo9qCw
Refractored 0.1
Virtue Skeleton
If you have bought virtue and kyle confirms it ill help you convert
Cache Dir: desktop/data
The Skeleton only has ondemand complete you will have to do the login yourself because i just took a few seconds to do this and wont update it.
I shouldn't have even done this because ive released some before for 833 and 855 and all you need to do is change the information in the conatnts class and this will be the last time i can the information for you guys but it was requested so here.
How do I update/ what do i change?
When there is do update in to ondemand protocol witch there usually isnt you change
Ondemand Keys
Js5 RSA
Login RSA
Login Token
Revision number
Ondemand token in the constants class
Theres no errors with it so you shouldnt have any problems from my end, try updating your java see if that work.
If you have any questions feel free to shoot me a pm
Information is in the Renamed Client
Code:
Oct 25, 2015 2:42:28 PM org.virtue.openrs.Cache <init>
INFO: Loaded 49 Cache Indicies
Oct 25, 2015 2:42:34 PM org.virtue.network.Network bindNetwork
INFO: Bound Launcher to the network
Oct 25, 2015 2:42:34 PM org.virtue.network.event.GameEventRepository load
INFO: Registered 2 game read events.
Oct 25, 2015 2:42:34 PM org.virtue.network.event.GameEventRepository load
INFO: Registered 8 game write events.
Oct 25, 2015 2:42:34 PM org.virtue.Launcher main
INFO: Launcher Loaded in 6 seconds.
Oct 25, 2015 2:42:34 PM org.virtue.Launcher main
INFO: Launcher is currently running on Windows 8 on a(n) x86 architecture.
Oct 25, 2015 2:42:42 PM org.virtue.network.NetworkHandler channelRegistered
INFO: Channel is now registered from /127.0.0.1:64134
Code:
FRIEND_CHAT_MESSAGE = new IncomingPacket(32, -1);
SEND_VARBIT_LARGE = new IncomingPacket(44, 6);
NPC_ON_ICOMPONENT_PACKET = new IncomingPacket(65, 4);
STATIC_REGION = new IncomingPacket(103, -2);
SEND_CS2SCRIPT = new IncomingPacket(110, -2);
KEEP_ALIVE = new IncomingPacket(113, 0);
SEND_INTERFACE = new IncomingPacket(121, 23);
VARC_SMALL = new IncomingPacket(128, 3);
VARCACHE_RESET = new IncomingPacket(137, 0);
LOGOUT_PACKET = new IncomingPacket(139, 0);
WINDOW_PANE = new IncomingPacket(153, 19);
SEND_LARGE_VARP = new IncomingPacket(166, 6);
VARC_LARGE = new IncomingPacket(170, 6);
NPC_UPDATE = new IncomingPacket(171, -2);
PLAYER_UPDATE = new IncomingPacket(174, -2);
VARBIT_SMALL = new IncomingPacket(179, 3);
SEND_SMALL_VARP = new IncomingPacket(182, 3);
DYNAMIC_REGION = new IncomingPacket(188, -2);
Interface dumps
lobby
Code:
sendRootInterface(906);
sendInterface(907, 906, 160, true);
sendInterface(910, 906, 161, true);
sendInterface(909, 906, 162, true);
sendInterface(912, 906, 164, true);
sendInterface(589, 906, 163, true);
sendInterface(911, 906, 165, true);
sendInterface(914, 906, 89, true);
sendInterface(915, 906, 81, true);
sendInterface(913, 906, 73, true);
login
Code:
sendRootInterface(1477);
sendInterface(1482, 1477, 13, true);
sendInterface(1466, 1477, 245, true);
sendInterface(1220, 1477, 256, true);
sendInterface(1473, 1477, 83, true);
sendInterface(1464, 1477, 158, true);
sendInterface(1458, 1477, 180, true);
sendInterface(1461, 1477, 213, true);
sendInterface(1503, 1477, 191, true);
sendInterface(550, 1477, 278, true);
sendInterface(1427, 1477, 322, true);
sendInterface(1110, 1477, 289, true);
sendInterface(590, 1477, 72, true);
sendInterface(1416, 1477, 267, true);
sendInterface(1417, 1477, 311, true);
sendInterface(231, 1477, 333, true);
sendInterface(1519, 1477, 300, true);
sendInterface(1431, 1477, 35, true);
sendInterface(568, 1477, 457, true);
sendInterface(1465, 1477, 65, true);
sendInterface(1504, 1465, 10, true);
sendInterface(1506, 1465, 12, true);
sendInterface(1505, 1465, 11, true);
sendInterface(1430, 1477, 41, true);
sendInterface(1433, 1477, 562, true);
sendInterface(1483, 1477, 402, true);
sendInterface(745, 1477, 419, true);
sendInterface(1485, 1477, 398, true);
sendInterface(1213, 1477, 441, true);
sendInterface(1448, 1477, 479, true);
sendInterface(557, 1477, 390, true);
sendInterface(137, 1477, 94, true);
sendInterface(1467, 1477, 104, true);
sendInterface(1472, 1477, 113, true);
sendInterface(1471, 1477, 122, true);
sendInterface(1470, 1477, 131, true);
sendInterface(464, 1477, 140, true);
sendInterface(228, 1477, 344, true);
sendInterface(1529, 1477, 149, true);
sendInterface(182, 1477, 429, true);
sendInterface(1488, 1477, 551, true);
sendInterface(1215, 1477, 381, true);
sendInterface(635, 1477, 437, true);
Generate your own keys Private goes server side, public client side in client File is called RSAkeys
Code:
/**
* Copyright (c) 2015 Virtue 3
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package org.virtue3.utilities;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.math.BigInteger;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.RSAPrivateKeySpec;
import java.security.spec.RSAPublicKeySpec;
/**
* @author Im Frizzy <skype:kfriz1998>
* @since Jul 19, 2014
*/
public class RSAKeyGenerator {
/**
* The location of the file which will contain the private key.
*/
private static String privateFile = "./RSAPrivateKeys.txt";
/**
* The location of the file which will contain the public key.
*/
private static String publicFile = "./RSAPublicKeys.txt";
public static void main(String[] args) {
try {
KeyFactory ondemand_factory = KeyFactory.getInstance("RSA");
KeyPairGenerator ondemand_keygen = KeyPairGenerator.getInstance("RSA");
ondemand_keygen.initialize(1024);
KeyPair ondemand_keypair = ondemand_keygen.genKeyPair();
KeyFactory login_factory = KeyFactory.getInstance("RSA");
KeyPairGenerator login_keygen = KeyPairGenerator.getInstance("RSA");
login_keygen.initialize(1024);
KeyPair login_keypair = login_keygen.genKeyPair();
RSAPrivateKeySpec ondemand_privateSpec = ondemand_factory.getKeySpec(ondemand_keypair.getPrivate(), RSAPrivateKeySpec.class);
RSAPublicKeySpec ondemand_publicSpec = ondemand_factory.getKeySpec(ondemand_keypair.getPublic(), RSAPublicKeySpec.class);
RSAPrivateKeySpec login_privateSpec = login_factory.getKeySpec(login_keypair.getPrivate(), RSAPrivateKeySpec.class);
RSAPublicKeySpec login_publicSpec = login_factory.getKeySpec(login_keypair.getPublic(), RSAPublicKeySpec.class);
writeKey(privateFile, ondemand_privateSpec.getModulus(), ondemand_privateSpec.getPrivateExponent(), login_privateSpec.getModulus(), login_privateSpec.getPrivateExponent());
writeKey(publicFile, ondemand_publicSpec.getModulus(), ondemand_publicSpec.getPublicExponent(), login_publicSpec.getModulus(), login_publicSpec.getPublicExponent());
} catch (InvalidKeySpecException | NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
/**
* Writes the key (public/private) to the specified file.
*
* @param file
* The file.
* @param modulus
* The modulus of the key.
* @param exponent
* The exponent of the key.
*/
public static void writeKey(String file, BigInteger ondemand_modulus, BigInteger ondemand_exponent, BigInteger login_modulus, BigInteger login_exponent) {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write("public static final BigInteger ONDEMAND_MODULUS = new BigInteger(\"" + ondemand_modulus.toString() + "\");");
writer.newLine();
writer.newLine();
writer.write("public static final BigInteger ONDEMAND_EXPONENT = new BigInteger(\"" + ondemand_exponent.toString() + "\");");
writer.newLine();
writer.newLine();
writer.write("public static final BigInteger LOGIN_MODULUS = new BigInteger(\"" + login_modulus.toString() + "\");");
writer.newLine();
writer.newLine();
writer.write("public static final BigInteger LOGIN_EXPONENT = new BigInteger(\"" + login_exponent.toString() + "\");");
writer.newLine();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}