Guest User

Untitled

a guest
Jul 18th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.19 KB | None | 0 0
  1. // client sends to proxy
  2. public ByteBuffer decryptClientGame(ByteBuffer packet, boolean first) {
  3. try {
  4.  
  5.  
  6. if(first) { // first packet, client sends to proxy.
  7. Cipher cii = Cipher.getInstance("Blowfish/CFB64/NoPadding");
  8. Key key = new SecretKeySpec(STATIC_KEY.getBytes("ASCII"), "Blowfish");
  9. cii.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(" ".getBytes()));
  10. ByteBuffer bb = ByteBuffer.wrap(cii.doFinal(packet.array())).order(ByteOrder.LITTLE_ENDIAN);
  11. int len = bb.getInt(7);
  12. int junkLen = bb.getInt(11);
  13. int index = 15 + junkLen;
  14. int strLen = bb.getInt(index);
  15. index+=4;
  16. String p = new String(bb.array(), index, strLen);
  17. exchange.clientPubKey= new BigInteger(p, 16);
  18. System.out.println("Client Key len: " + p.length());
  19.  
  20.  
  21. KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH");
  22.  
  23. DHParameterSpec dhSpec = new DHParameterSpec(exchange.p512, exchange.g512);
  24.  
  25. keyGen.initialize(dhSpec, new SecureRandom());
  26.  
  27. KeyAgreement serverKeyAgree = KeyAgreement.getInstance("DH");
  28. KeyAgreement clientKeyAgree = KeyAgreement.getInstance("DH");
  29.  
  30. keyGen = KeyPairGenerator.getInstance("DH"); // new instance, just incase.
  31.  
  32. exchange.serverKeyPair = keyGen.generateKeyPair();
  33. exchange.clientKeyPair = keyGen.generateKeyPair();
  34.  
  35.  
  36. KeyFactory k = KeyFactory.getInstance("DH");
  37. serverKeyAgree.init(exchange.serverKeyPair.getPrivate());
  38. clientKeyAgree.init(exchange.clientKeyPair.getPrivate());
  39.  
  40. serverKeyAgree.doPhase(new SecretKeySpec(exchange.serverPubKey.toByteArray(), "DH"), true);
  41. clientKeyAgree.doPhase(new SecretKeySpec(exchange.clientPubKey.toByteArray(), "DH"), true);
  42. exchange.serverSecretKey = serverKeyAgree.generateSecret("DH");
  43. exchange.clientSecretKey = clientKeyAgree.generateSecret("DH");
  44.  
  45. // replacing the key in the packet, with the new one.
  46. bb.put(exchange.serverKeyPair.getPublic().getEncoded(), index, exchange.serverKeyPair.getPublic().getEncoded().length);
  47.  
  48.  
  49.  
  50. cii.init(Cipher.ENCRYPT_MODE, key);
  51. return ByteBuffer.wrap(cii.doFinal(bb.array()));
  52.  
  53. } else {
  54.  
  55. }
  56.  
  57.  
  58. } catch(Exception e) {
  59. e.printStackTrace();
  60. }
  61. return packet;
  62. }
Add Comment
Please, Sign In to add comment