#include #include #include #include #include #include "src/Identity.h" #include "src/protocol/Connection.h" #include #include #include #include #include #include #include #define QLZ_COMPRESSION_LEVEL 3 #include "qlz/QuickLZ.h" using namespace std; using namespace ts; using namespace license::teamspeak; void hexout(std::ostream& os, unsigned char c) { unsigned char uc = static_cast(c); os << std::setw(2) << std::setfill('0') << (unsigned int)uc << ' '; } void hexdump(std::ostream& outs, const std::string& s, size_t line_len = 16) { std::ostringstream os; const std::string::size_type slen(s.size()); int i(0); std::string::size_type pos(0); const std::streamsize lines(slen / line_len); const std::streamsize chars(slen % line_len); std::ios::fmtflags f(os.flags()); os << "Length: " << s.length() << "/" << std::hex << "0x" << s.length() << endl; for(std::streamsize line = 0; line <= lines - (chars == 0 ? 1 : 0); ++line) { os << std::hex << setfill('0') << setw(3) << line * line_len << " | "; for(i = 0; i < line_len; ++i) { if(pos < s.length()) hexout(os, s[pos]); else os << " "; pos++; } os << " | "; if(pos - line_len < s.length()){ auto av = s.substr(pos - line_len); for(char c : av.substr(0, min(av.length(), line_len))){ if(isprint(c)) os << c << " "; else os << "." << " "; } } os << '\n'; } os.flags(f); outs << os.str() << endl; } //This RSA puzzel crashes the manager //545333494e49543100658803ffED1eBAACDe66bd212F3B91A0C1dbd65b374F1FCEe353A74C78eB99B5b8B2e0eC7DC9Ce7bCdfcFE97622AbD015B4EBCB3fecc7D23bBfaA2B15DBBBBC1d009DBcd924B06Eb2e0CBCD0AfBbadc2ecbb812C47d5dcAA4BcFdaF73ACe89A106c98f6c0DBeac8e8FeF9d6d836Bd1Cd791f376452Cff581400ed760acB2deAE1Be53E98152AbaBfaC823e3e4FACdaAf69E977C8dE328ECDA5FEE3c327FfCf9228caf8D761aeF7bAdbebe5eAcda87Eba61F09D7AEC9D4EeBa763cFE3c9cE718d37dd4F73CA10ffB4127d15Bee7cF9Edc644b4be06f0F9C4aEb2FBDd9549e215959FaFea57b5B7900000000 /* auto parent = import((char*) root); fe_neg(parent.X, parent.X); fe_neg(parent.T, parent.T); char buf[32]; ge_p3_tobytes((u_char*) buf, &parent); return string(buf, 32); */ using namespace std::chrono; inline std::string keyMul(const char* publicKey /* compressed */, char* privateKey /* uncompressed */, bool negate){ ge_p3 keyA{}; ge_p2 result{}; ge_frombytes_negate_vartime(&keyA, (u_char*) publicKey); if(negate) { fe_neg(keyA.X, keyA.X); /* undo negate */ fe_neg(keyA.T, keyA.T); /* undo negate */ } ge_scalarmult_vartime(&result, (u_char*) privateKey, &keyA); char buffer[32]; ge_tobytes((u_char*) buffer, &result); return string(buffer, 32); } #include "ed25519/sha512.h" static int consttime_equal(const unsigned char *x, const unsigned char *y) { unsigned char r = 0; r = x[0] ^ y[0]; #define F(i) r |= x[i] ^ y[i] F(1); F(2); F(3); F(4); F(5); F(6); F(7); F(8); F(9); F(10); F(11); F(12); F(13); F(14); F(15); F(16); F(17); F(18); F(19); F(20); F(21); F(22); F(23); F(24); F(25); F(26); F(27); F(28); F(29); F(30); F(31); #undef F return !r; } int ed25519_verify(bool do_hash, const unsigned char *signature, const unsigned char *message, size_t message_len, const unsigned char *public_key) { unsigned char h[64]; unsigned char checker[32]; sha512_context hash; ge_p3 A; ge_p2 R; if (signature[63] & 224) { return 0; } if (ge_frombytes_negate_vartime(&A, public_key) != 0) { return 0; } if(do_hash) { //sha512_init(&hash); //sha512_update(&hash, signature, 32); //sha512_update(&hash, public_key, 32); //sha512_update(&hash, message, message_len); //sha512_final(&hash, h); assert(false); } else { memcpy(h, message, 64); } sc_reduce(h); ge_double_scalarmult_vartime(&R, h, &A, signature + 32); ge_tobytes(checker, &R); if (!consttime_equal(checker, signature)) { return 0; } return 1; } /* char seed[64]; LicenseChain chain; //E813384CE058BA63F5792D16A093B0C503D2C51FD19A1DC36FD613EFB88E7334 u_char publicKey[32]; u_char privateKey[32] = {0xE8, 0x13, 0x38, 0x4C, 0xE0, 0x58, 0xBA, 0x63, 0xF5, 0x79, 0x2D, 0x16, 0xA0, 0x93, 0xB0, 0xC5, 0x03, 0xD2, 0xC5, 0x1F, 0xD1, 0x9A, 0x1D, 0xC3, 0x6F, 0xD6, 0x13, 0xEF, 0xB8, 0x8E, 0x73, 0x34}; //privateKey[0] &= 248; //privateKey[31] &= 63; //privateKey[31] |= 64; ge_p3 A; ge_scalarmult_base(&A, privateKey); ge_p3_tobytes(publicKey, &A); hexDump((char*) publicKey, 32, 32, 32); cout << "A: " << base64::encode(keyMul((char*) chain.generatePublicKey(public_tea_root).data(), (char*) chain.generatePrivateKey((u_char*) privateKey).data(), true)) << endl; cout << "A: " << base64::encode(keyMul((char*) chain.generatePublicKey((u_char*) publicKey).data(), (char*) chain.generatePrivateKey((u_char*) private_tea_root).data(), true)) << endl; /* for(char& c : seed) c = rand(); ed25519_create_keypair((u_char*) publicKey, (u_char*) privateKey, (u_char*) seed); cout << "A: " << base64::encode(keyMul((char*) public_tea_root, privateKey, true)) << endl; cout << "B: " << base64::encode(keyMul(publicKey, (char*) private_tea_root, true)) << endl; chain.addServerEntry(7, "TeaSpeak"); chain.addEphemeralEntry(); / istringstream is(chain.exportChain()); auto c2 = LicenseChain::parse(is, error); chain.print(); c2->print(); cout << "A: " << base64::encode(keyMul((char*) c2->generatePublicKey(public_tea_root).data(), (char*) chain.generatePrivateKey((u_char*) privateKey).data(), true)) << endl; cout << "A: " << base64::encode(keyMul((char*) c2->generatePublicKey((u_char*) publicKey).data(), (char*) chain.generatePrivateKey((u_char*) private_tea_root).data(), true)) << endl; cout << "Chain: " << base64::encode(chain.exportChain()) << endl; */ inline std::string parseHex(const std::string& in) { char buffer[(in.length() + 1) / 2]; memset(buffer, 0, sizeof(buffer)); size_t nibble_index = 0; for(auto c : in) { if(c == '\n' || c == ' ') continue; uint8_t nibble = 0; if(c >= 'A' && c <= 'F') nibble = c - 'A' + 10; else if(c >= 'a' && c <= 'f') nibble = c - 'a' + 10; else if(c >= '0' && c <= '9') nibble = c - '0'; if(nibble_index % 2 == 0) nibble <<= 4; else nibble &= 0xF; buffer[nibble_index / 2] |= nibble; nibble_index++; } return string(buffer, (nibble_index + 1) / 2); } bool read_crypted_string(std::string& result, const char* buffer, int length) { char tmp[264]; char current; int index = 0; do { //cout << "Read: " << ((index & 0x1F) - length) << " | " << index << endl; tmp[index] = length ^ buffer[index] ^ buffer[(index & 0x1F) - length]; } while(tmp[index++]); result = string(tmp, index - 1); return true; } void print_dec_teamspeak() { auto bin = parseHex("3EF0E405913439B81A2D60D467C04D11\n" "8E7D6C6CC8DC2B8B8F62FD30F7027393\n" "29B7A64DC47E7BAD0E6A788E7E881805\n" "9D373E29D0FC5FAFBC57C8757C8E4CA7\n" "B44ED70A35E78019D531CBC8299A2E34\n" "F107D5C124B35F47C62A1F52EA43FF68\n" "29B14B0F13EDE81BB7AD43C900CD7D41\n" "AD02A125F7E306917D65E40B3F70CC61\n" "C35F019E616A71CFC6369FCE3FFA26E5\n" "1C739028E2FC58812827CBF0051EFC66\n" "CA8257EE96943F9935D6F23B22C352F0\n" "F432D2E6A915ED1E889B48BEABAF1613\n" "E50143BD39F929C1B657F53627DB429E\n" "874E42B42D8D8D48B999DB24C369EDA4\n" "7ECBD3C97668FBAA7368C21ABABD3A93\n" "B9E213EE48DED608F6E7E4585EA86C8D\n" "66789F00B8AF2982F2D645FE50C08310\n" "F6FAFC5923638A8264E1532C71A8B319\n" "4D948F08FE727FF4536325F45E9D8609\n" "F17176F1587229F848A7B210F97E6EE6\n" "4B6178A0369B1047C520543DD4DC3AFA\n" "2F009C270F4FFA5EAB4A33A6534954E6\n" "971EF2F10D86342CB0142221F96FC249\n" "1E9C790D04EBB03D8C2328A21D3C1408\n" "E1ED1B822222E7293B7CCE76CC576EF0\n" "1105FF7FD79676F6D6862D893BABF16F\n" "D2AF8A2436CA7765EDD62C39C457EFF9\n" "6BD6E0E929AB0889EB57B1A4AE413DED\n" "5152A23AFE7EFBA855E13029C94A9D9E\n" "5D58A5329E8212F58EC678CD61F1BB61\n" "C6DAD36233822B35C356FFBC75798F16\n" "B6B6739DAFE85AE258C3DA11EFF7E203\n" "51AF150AED16549F8166F9415ADA3C5F\n" "09F241E66B37A85B506A50938E7AAB0E\n" "038220175AEE5DFA772BB4474C7663AA\n" "AB59CB7379F114672F8E2CCE431F8073\n" "784219DCC22EBD115B9E391B47B605A2\n" "2F73EC1F142E05C7CA73B10B1D9A391A\n" "5AF154E46D22AA58003A39FBF64F8832\n" "3CA603672A9E2D8A075BC4373C0603E1\n" "EF178B6A29A910737DC577D0560C8423\n" "667D96C336969E69ED3AE0126ACD33EB\n" "E80D8A3867A702277BD839D34603846A\n" "627ED38234818579EE3EFD0F21CD33E6\n" "EF0F9B2329A1443771DD779E400A8275\n" "7760B6B44C42A4628B8308AC90C06294\n" "64FFB17DDBCFDB7A7B9D3C7CD357C350\n" "B9C560814A54B32C948305AEDEC062C6\n" "65FBB05D769D8364FB43589C576D6454\n" "879B63EC5E52B77C899270EA460EDB62\n" "1A14AC1EB93F65ED4A0F14FFAA5FFFF7\n" "008453897B03A45A828164E3512E66A1\n" "AF55CB2A68EA403332833A9B1D5CD56F\n" "723699957BD9DE3DA767A75B6DC365B9\n" "FA57C66962E857765E6AA4E609816F6D\n" "EC732AE3FF1B86226BA6073E76CF7BD5\n" "1F0F956C7B70C9CB78F9D8130DEA75CD\n" "D612F9D4CA3FCD26A2FC65949FC62E3F\n" "C2646B9B12BAF43F21C659E1FA3ED5F8\n" "E61BAF108ADB41BFEBCAC22B37D34EEA\n" "A36ECFF6BE07B31DD7CF51A1B7A31E12\n" "B15D5CBB22E43EDDE94FED263B9E2BA7\n" "4E52B62B8FC600A09CDA79D96BFBA036\n" "82C7DB656C837431CA439608B1C52F84\n" "4148BF6FEB4D9C9374E150509D6C4D17\n" "A707B7687DEF784094D360F34D40C663\n" "5D57A61CA43F71F10F091EF3EB4FF4ED\n" "019E4E8E7244E046909D33866BBFF85D\n" "D87869ED4570288D3FDC18439232313D\n" "91C07ED9C02AA062A85B638F71A4AD4D\n" "D9616BE30675339F35DD7121F4E04E97\n" "3E3CAA513062CD78DE471696737571C6\n" "C533C0967CF835F5077FD475E8E71B8E\n" "2B3BBD16666FD07BC5077AD10410BE67\n" "CECC5AA1C597208828F6E27A95839237\n" "6B90637C8C12DF05F78F28C10408F02B\n" "AF8A5F4EAA3F829659BE9ED37AD42DAC\n" "A327C9D9D960738D6A2ACC4B9F17C38D\n" "4658BF20988347AB9DCB2BCE7EFEA735\n" "82CAD6632FD42738C8569B41B3CB6C85\n" "404CB46FEB579C8265FA42599D7A5015\n" "B810A02C38AB0B011CB9AD47E0ED479C\n" "5A856957967AB9B345D57565BD4C7C24\n" "8336800C188B2B213C998D67C0CD67BC\n" "7AA54977B615DAD560A7051D8F2B0D41\n" "BD02F66021BF4C4047EAB90AA1BD4999\n" "752CF4F712952778B0086C63D967C247\n" "1C866F7968CD916A998676E825FF0D75\n" "D23BFEF20AD155D01915E37ADADA1FF1\n" "C384368E34AFB6629F92C76F28C4797C\n" "9113D917A5907BCE194282F9342CCF56\n" "BFF370D2E9BE11B80288DD05A4A2B70C\n" "05F45304A838BB3DC5AA5DF43F368E48\n" "EAFC7DD8E8AC5FA50595CE44B8A4A24F\n" "57E94E57BD37F53FCCF84FFC37238E49\n" "F7E767D5E9BC11CCB1696FDD1AB8A032\n" "96B0FC0CEB57DAC91BE4FAED1050BA1E\n" "12E925A161DAEA4BA56D6E8908A5AF60\n" "96BCF549BF48D09B1FEAF0B8104DBD00\n" "03FB6BAB6ADAFC02AA643C8E01B9B524\n" "8DA2F62C1CD5C92DB0145D88314956F5\n" "44ED7A21AF4B0844E3FB0EA3EB47DA17\n" "DC3359A313DAC761A6150F8A370A4190\n" "22EFF7148D6428AB093265CA63D95306\n" "DE7E796ECEC5389EDF7FE433EA137780\n" "2680CA031FFB66C28B5EE79F87369133\n" "ABE63C83919D3B2299787E9300D70BE4\n" "886FCB4205F271D0C249EDBFC6293ED8\n" "58E4F124EAF8BF0DB50F94AD9E534BA8\n" "31D8811DBB848C71D82CEEBB24C2C5D4\n" "24729E6766DB59DC1EBBD271F2BF726A\n" "8910F9A03C9AA5AD56EC4BD39917B0E8\n" "F20545A90942E371AF7D8AB25EA0757C\n" "9C08B0BA32D7A4E24EE40CA04E859B7C\n" "E34B408463490CA109B93521B2121805\n" "A0B45EF9F45E85439C704E8F6EA5BB5C\n" "C36B60A443692C812999020DDB2F5019\n" "D0DE38AD5A762DD4C03CB54218862517\n" "53A246E47233B1455D1AF0EF0AFDB55D\n" "C803CF2740E50ECFDE36EB421C86390F\n" "42EB5FF13B23B75C541B9EF0091DE168\n" "9FC55BF8CA8E7F9E2EA7FE6C9880E741\n" "7373657274696F6E20226D5F74696D65\n" "725265736F6C7574696F6E20213D2030\n" "22206661696C6564206174202E2E2F2E\n" "2E2F2E2E2F2E2E2F732F646570732F74\n" "65616D737065616B5F7365727665725F\n" "6C69622F7372632F74735F7365727665\n" "722F616E7469666C6F6F642E6370703A\n" "00416E7469466C6F6F64004173736572\n" "74696F6E20226D5F706F696E74735469\n" "636B5261746520213D20302220666169\n" "6C6564206174202E2E2F2E2E2F2E2E2F\n" "2E2E2F732F646570732F7465616D7370\n" "65616B5F7365727665725F6C69622F73\n" "72632F74735F7365727665722F616E74\n" "69666C6F6F642E6370703A0052656765\n" "7870206572726F7220666F7220495020\n" "65787072657373696F6E202200222C20\n" "6572726F723A200042616E4D616E6167\n" "657200526567657870206572726F7220\n" "666F72204E616D652065787072657373\n" "696F6E20220054686973206E616D6520\n" "69732000596F7520617265200062616E\n" "6E6564207065726D616E656E746C792E\n" "0062616E6E65642074656D706F726172\n" "696C792E0020526561736F6E3A202200\n" "0A54727920616761696E20696E20006E\n" "6F7469667962616E6C697374006C6173\n" "746E69636B6E616D6500696E766F6B65\n" "72636C6462696400656E666F7263656D\n" "656E74730062616E5F696E736572742E\n" "73716C0062616E5F69700062616E5F6E\n" "616D650062616E5F7569640062616E5F\n" "74696D657374616D700062616E5F6C65\n" "6E6774680062616E5F696E766F6B6572\n" "5F636C69656E745F69640062616E5F69\n" "6E766F6B65725F7569640062616E5F69\n" "6E766F6B65725F6E616D650062616E5F\n" "726561736F6E0062616E5F6861736800\n" "62616E5F64656C6574652E73716C0062\n" "616E5F696400417373657274696F6E20\n" "226572726F72203D3D204552524F525F\n" "6F6B22206661696C6564206174202E2E\n" "2F2E2E2F2E2E2F2E2E2F732F64657073\n" "2F7465616D737065616B5F7365727665\n" "725F6C69622F7372632F74735F736572\n" "7665722F62616E6D616E616765722E63\n" "70703A0062616E2064656C6574656420\n" "28657870697265642920726561736F6E\n" "3D0062616E5F6C6973742E73716C0069\n" "6E76616C69642062616E206974656D20\n" "776974682069643A2000000000000000\n" "4E5374335F5F3132315F5F656D707479\n" "5F6E6F6E5F6F776E5F73746174654963\n" "45450000000000000000000000000000\n" "4E5374335F5F3131355F5F6861735F6F\n" "6E655F73746174654963454500000000\n" "4E5374335F5F31365F5F6E6F64654963\n" "45450000000000000000000000000000\n" "4E5374335F5F3131315F5F616C746572\n" "6E617465496345450000000000000000\n" "4E5374335F5F3131375F5F6F776E735F\n" "74776F5F737461746573496345450000\n" "4E5374335F5F3131365F5F6F776E735F\n" "6F6E655F737461746549634545000000\n" "4E5374335F5F3131375F5F7265706561\n" "745F6F6E655F6C6F6F70496345450000\n" "4E5374335F5F31365F5F6C6F6F704963\n" "45450000000000000000000000000000\n" "4E5374335F5F3132365F5F656E645F6D\n" "61726B65645F73756265787072657373\n" "696F6E49634545000000000000000000\n" "4E5374335F5F3132385F5F626567696E\n" "5F6D61726B65645F7375626578707265\n" "7373696F6E4963454500000000000000\n" "4E5374335F5F3131305F5F725F616E63\n" "686F7249634545000000000000000000\n" "4E5374335F5F3131305F5F6C5F616E63\n" "686F7249634545000000000000000000\n" "4E5374335F5F3131325F5F6D61746368\n" "5F636861724963454500000000000000\n" "4E5374335F5F3132305F5F6D61746368\n" "5F636861725F636F6C6C61746549634E\n" "535F313272656765785F747261697473\n" "49634545454500000000000000000000\n" "4E5374335F5F3131385F5F6D61746368\n" "5F636861725F696361736549634E535F\n" "313272656765785F7472616974734963\n" "45454545000000000000000000000000\n" "4E5374335F5F3132305F5F627261636B\n" "65745F65787072657373696F6E49634E\n" "535F313272656765785F747261697473\n" "49634545454500000000000000000000\n" "4E5374335F5F3131315F5F6D61746368\n" "5F616E79496345450000000000000000\n" "4E5374335F5F3131305F5F6261636B5F\n" "72656649634545000000000000000000\n" "4E5374335F5F3131385F5F6261636B5F\n" "7265665F636F6C6C61746549634E535F\n" "313272656765785F7472616974734963\n" "45454545000000000000000000000000\n" "4E5374335F5F3131365F5F6261636B5F\n" "7265665F696361736549634E535F3132\n" "72656765785F74726169747349634545\n" "45450000000000000000000000000000\n" "4E5374335F5F3132335F5F6D61746368\n" "5F616E795F6275745F6E65776C696E65\n" "49634545000000000000000000000000\n" "4E5374335F5F3131315F5F6C6F6F6B61\n" "6865616449634E535F31327265676578\n" "5F747261697473496345454545000000\n" "4E5374335F5F3131355F5F776F72645F\n" "626F756E6461727949634E535F313272\n" "656765785F7472616974734963454545\n" "45000000000000000000000000000000\n" "4E5374335F5F3131335F5F656D707479\n" "5F737461746549634545000000000000\n" "4E5374335F5F3132305F5F7368617265\n" "645F7074725F706F696E74657249504E\n" "535F31335F5F656D7074795F73746174\n" "65496345454E535F313464656661756C\n" "745F64656C6574654953325F45454E53\n" "5F39616C6C6F6361746F724953325F45\n" "45454500000000000000000000000000\n" "4E5374335F5F31313464656661756C74\n" "5F64656C657465494E535F31335F5F65\n" "6D7074795F7374617465496345454545\n" "00000000000000000000000000000000\n" "4E5374335F5F3131315F5F656E645F73\n" "74617465496345450041737365727469\n" "6F6E20226D5F705669727475616C5365\n" "7276657220213D205F5F6E756C6C2220\n" "6661696C6564206174202E2E2F2E2E2F\n" "2E2E2F2E2E2F732F646570732F746561\n" "6D737065616B5F7365727665725F6C69\n" "622F7372632F74735F7365727665722F\n" "6368616E636C69656E74736361636865\n" "2E6370703A004368616E436C69656E43\n" "6163686500417373657274696F6E2022\n" "6D5F5468726561644944203D3D207374\n" "643A3A746869735F7468726561643A3A\n" "6765745F6964282922206661696C6564\n" "206174202E2E2F2E2E2F2E2E2F2E2E2F\n" "732F646570732F7465616D737065616B\n" "5F7365727665725F6C69622F7372632F\n" "74735F7365727665722F6368616E636C\n" "69656E747363616368652E6370703A00\n" "636F6D706C61696E5F696E736572742E\n" "73716C00636F6D706C61696E5F66726F\n" "6D5F636C69656E745F696400636F6D70\n" "6C61696E5F746F5F636C69656E745F69\n" "6400636F6D706C61696E5F6D65737361\n" "676500636F6D706C61696E5F74696D65\n" "7374616D7000636F6D706C61696E5F68\n" "61736800636F6D706C61696E5F64656C\n" "6574652E73716C00636F6D706C61696E\n" "5F64656C6574655F616C6C2E73716C00\n" "636F6D706C61696E5F64656C6574655F\n" "7072756E652E73716C00636F6D706C61\n" "696E5F6765745F62795F736572766572\n" "69642E73716C00536F6D6520636F6D70\n" "6C61696E7420656E7472696573206672\n" "6F6D2074686520646174616261736520\n" "77657265206E6F74206C6F6164656420\n" "62656361757365207468657920776572\n" "65206475706C696361746573206F6620\n" "616C7265616479206C6F61646564206F\n" "6E657300436F6D706C61696E4D677200\n" "6368616E6E656C5F696E736572745F62\n" "756C6B2E73716C006F72675F6368616E\n" "6E656C5F6964006368616E6E656C5F69\n" "6E736572745F62756C6B5F6669787570\n" "2E73716C006368616E6E656C5F696E73\n" "6572745F62756C6B5F6D617070696E67\n" "2E73716C006368616E6E656C5F70726F\n" "706572746965735F62756C6B5F696E73\n" "6572742E73716C006368616E6E656C5F\n" "64656C6574652E73716C006368616E6E\n" "656C5F696E736572742E73716C006368\n" "616E6E656C5F7570646174655F706172\n" "656E7469642E73716C00536572766572\n" "517565727920477565737400636C6965\n" "6E745F696E736572742E73716C00636C\n" "69656E745F696E736572745F62756C6B\n" "2E73716C006F72675F636C69656E745F\n" "696400636C69656E745F696E73657274\n" "5F62756C6B5F6D617070696E672E7371\n" "6C00636C69656E745F70726F70657274\n" "6965735F62756C6B5F696E736572742E\n" "73716C00636C69656E745F6765745F62\n" "795F7569642E73716C00636C69656E74\n" "5F6D6F6E74685F75706C6F616400636C\n" "69656E745F746F74616C5F75706C6F61\n" "6400636C69656E745F6D6F6E74685F64\n" "6F776E6C6F616400636C69656E745F74\n" "6F74616C5F646F776E6C6F616400636C\n" "69656E745F64656C6574652E73716C00\n" "636C69656E745F7570646174655F6C6F\n" "67696E5F696E666F2E73716C00636C69\n" "656E745F7570646174655F6E616D652E\n" "73716C00636C69656E745F7570646174\n" "655F73746174732E73716C00636C6965\n" "6E745F7570646174655F747261666669\n" "635F73746174732E73716C006D657373\n" "6167655F6765745F756E726561645F62\n" "795F636C69656E7469642E73716C0075\n" "6E72656164002E736F006C6962007761\n" "6974696E6720666F7220636F6E6E6563\n" "74696F6E20617661696C61626C650064\n" "6174616261736520636F6E6E65637469\n" "6F6E206E6F7420666F756E6400417373\n" "657274696F6E20226572726F72203D3D\n" "204552524F525F6F6B22206661696C65\n" "64206174202E2E2F2E2E2F2E2E2F2E2E\n" "2F732F646570732F7465616D73706561\n" "6B5F7365727665725F6C69622F737263\n" "2F74735F7365727665722F6461746162\n" "6173652F64625F64617461626173652E\n" "6370703A00506C65617365206D616B65\n" "207375726520796F7520757365207468\n" "6520737570706C696564207473337365\n" "727665725F6D696E696D616C5F72756E\n" "7363726970742E736820746F2072756E\n" "20746865207365727665722C206F7220\n" "736574204C445F4C4942524152595F50\n" "41544820796F757273656C6600756E61\n" "626C6520746F206C6F61642064617461\n" "6261736520706C7567696E206C696272\n" "617279202200222C2068616C74696E67\n" "21007473336462706C7567696E5F696E\n" "6974007473336462706C7567696E5F73\n" "687574646F776E007473336462706C75\n" "67696E5F636F6E6E6563740074733364\n" "62706C7567696E5F646973636F6E6E65\n" "6374007473336462706C7567696E5F65\n" "786563007473336462706C7567696E5F\n" "6F70656E007473336462706C7567696E\n" "5F62756C6B5F696E7365727400747333\n" "6462706C7567696E5F6765746C617374\n" "696E736572746964007473336462706C\n" "7567696E5F6765746D6F646966696564\n" "726F77636F756E74007473336462706C\n" "7567696E5F7461626C65657869737473\n" "007473336462706C7567696E5F766572\n" "73696F6E007473336462706C7567696E\n" "5F6E616D65007473336462706C756769\n" "6E5F73686F72746E616D650074733364\n" "62706C7567696E5F6170697665727369\n" "6F6E007473336462706C7567696E5F67\n" "65746C6173746572726F72004661696C\n" "656420746F20696D706F727420220022\n" "2066726F6D202200436F756C64206E6F\n" "74206C6F616420646174616261736520\n" "706C7567696E006462506C7567696E20\n" "6E616D653A20202020006462506C7567\n" "696E2076657273696F6E3A2000506C75\n" "67696E206170692076657273696F6E20\n" "69732000207768696C65200020697320\n" "72657175697265640064625F65786563\n" "2829200064625F62756C6B5F696E7365\n" "72742829200064625F6F70656E282920\n" "00646174616261736520627573792C20\n" "77616974696E6720666F722066696E69\n" "7368696E6720696E646578207461736B\n" "732C206D61792074616B6520736F6D65\n" "2074696D65210073657453514C66726F\n" "6D46696C65282066696C653A00726570\n" "206669656C6473202F20696E73657274\n" "20706F696E742073697A65206E6F7420\n" "73616D6520666F722073716C20616E64\n" "20726570656174207061727400417373\n" "657274696F6E2022737472696E675F66\n" "69656C645F636F756E74203D3D207374\n" "72696E675F6669656C645F6E616D6573\n" "2E73697A65282922206661696C656420\n" "6174202E2E2F2E2E2F2E2E2F2E2E2F73\n" "2F646570732F7465616D737065616B5F\n" "7365727665725F6C69622F7372632F74\n" "735F7365727665722F64617461626173\n" "652F64625F64617461626173652E6370\n" "703A00696E76616C696420706172616D\n" "6574657220666F756E6420005C5B5C5B\n" "5C5B282E2A3F295C5D5C5D5C5D005C3A\n" "285B5E5C3A5D2A3F5C2A295C3A003A24\n" "3031303A003A24303100417373657274\n" "696F6E2022216D5F73746F726167652E\n" "656F66282922206661696C6564206174\n" "202E2E2F2E2E2F2E2E2F2E2E2F732F64\n" "6570732F7465616D737065616B5F7365\n" "727665725F6C69622F7372632F74735F\n" "7365727665722F64617461626173652F\n" "64625F64617461626173652E6370703A\n" "00756E6B6E6F776E207461626C652066\n" "69656C64207265717565737465643A20\n" "00417373657274696F6E2022636F756E\n" "74203C3D20363422206661696C656420\n" "6174202E2E2F2E2E2F2E2E2F2E2E2F73\n" "2F646570732F7465616D737065616B5F\n" "7365727665725F6C69622F7372632F74\n" "735F7365727665722F64617461626173\n" "652F64625F64617461626173652E6370\n" "703A00417373657274696F6E20227369\n" "7A65735B695D203C3D207374643A3A6E\n" "756D657269635F6C696D6974733C756E\n" "7369676E656420696E743E3A3A6D6178\n" "282922206661696C6564206174202E2E\n" "2F2E2E2F2E2E2F2E2E2F732F64657073\n" "2F7465616D737065616B5F7365727665\n" "725F6C69622F7372632F74735F736572\n" "7665722F64617461626173652F64625F\n" "64617461626173652E6370703A005C3A\n" "285B612D7A412D5A302D395F2D5D2A3F\n" "295C3A005C3A285B612D7A412D5A302D\n" "395F2D5D2A3F295C2A303F5C3A000000\n" "3134437573746F6D4461746162617365\n" "00000000000000000000000000000000\n" "3134506C7567696E4461746162617365\n" "0064625F4372656174655461626C6573\n" "282920756E61626C6520746F206C6F61\n" "6420696E7374616E6365206465666175\n" "6C742076616C7565730053514C006372\n" "656174655F7461626C65732E73716C00\n" "64625F4372656174655461626C657328\n" "2920756E61626C6520746F2063726561\n" "7465207461626C65730064625F437265\n" "6174655461626C65732829207461626C\n" "65732063726561746564006465666175\n" "6C74732E73716C0064625F4372656174\n" "655461626C6573282920756E61626C65\n" "20746F20696E73657274206465666175\n" "6C742076616C7565730064625F437265\n" "6174655461626C6573282920666F756E\n" "6420696E76616C696420646174616261\n" "73652076657273696F6E0064625F4372\n" "656174655461626C6573282920756E61\n" "626C6520746F207361766520696E7374\n" "616E63652064656661756C742076616C\n" "7565730064625F437265617465546162\n" "6C6573282920756E61626C6520746F20\n" "696E7365727420646174616261736520\n" "76657273696F6E0064726F705F746162\n" "6C65732E73716C0064625F4372656174\n" "655461626C65732829207461626C6573\n" "2064726F7065640064625F4372656174\n" "655461626C6573282920756E61626C65\n" "20746F2064726F70207461626C657300\n" "7570646174655F64617461626173655F\n" "76657273696F6E2E73716C0043524954\n" "4943414C206572726F72207768696C65\n" "207570646174696E6720646174616261\n" "73652076657273696F6E007570646174\n" "655F0064617461626173652075706461\n" "746564207375636365737366756C6C79\n" "20746F207265766973696F6E3A200075\n" "70646174655461626C6573282920756E\n" "61626C6520746F207570646174652064\n" "617461626173652076657273696F6E00\n" "64617461626173652075706461746520\n" "746F207265766973696F6E3A20006375\n" "73746F6D5F696E736572742E73716C00\n" "637573746F6D5F64656C6574655F6279\n" "5F636C69656E7469642E73716C00636C\n" "69656E745F64656C6574655F7072756E\n" "652E73716C0067726F7570735F736572\n" "7665720067726F7570735F6368616E6E\n" "656C007065726D5F696E736572742E73\n" "716C007065726D5F6964007065726D5F\n" "76616C7565007065726D5F6E65676174\n" "6564007065726D5F736B697000706572\n" "6D5F64656C6574655F62795F67726F75\n" "7069642E73716C007065726D5F64656C\n" "6574655F62795F7065726D69642E7371\n" "6C007065726D5F696E736572745F6275\n" "6C6B2E73716C0067726F75705F6D656D\n" "6265725F696E736572745F62756C6B2E\n" "73716C0067726F75705F696E73657274\n" "2E73716C0067726F75705F696E736572\n" "745F62756C6B5F736E617073686F742E\n" "73716C006F72675F67726F75705F6964\n" "0067726F75705F696E736572745F6275\n" "6C6B5F736E617073686F745F6765745F\n" "6D617070696E672E73716C0067726F75\n" "705F64656C6574652E73716C00746162\n" "6C6567726F7570007461626C65706572\n" "6D73007461626C656D656D6265727300\n" "67726F75705F72656E616D652E73716C\n" "0067726F7570735F6765745F62795F73\n" "657276657269645F747970652E73716C\n" "0067726F75705F69645F6765745F6279\n" "5F6E616D652E73716C007065726D5F75\n" "70646174655F6765745F67726F757073\n" "2E73716C006661696C656420746F2075\n" "7064617465207065726D697373696F6E\n" "732C2068616C74656421007065726D5F\n" "72656E616D652E73716C006F6C645F70\n" "65726D5F6E616D65006E65775F706572\n" "6D5F6E616D6500756E61626C6520746F\n" "2072656E616D65207065726D69737369\n" "6F6E2C2068616C74656421007065726D\n" "5F636F70795F64656661756C745F7065\n" "726D697373696F6E732E73716C00756E\n" "61626C6520746F20636F707920646566\n" "61756C74207065726D697373696F6E73\n" "2C2068616C74656421006661696C6564\n" "20746F20726574726965766520766972\n" "7475616C736572766572732C2068616C\n" "74656421007065726D5F736572766572\n" "5F67726F757000695F636C69656E745F\n" "6D6F646966795F706F77657200695F6E\n" "65656465645F6D6F646966795F706F77\n" "65725F636C69656E745F6D6F64696679\n" "5F706F77657200695F636C69656E745F\n" "6E65656465645F6D6F646966795F706F\n" "77657200695F6E65656465645F6D6F64\n" "6966795F706F7765725F636C69656E74\n" "5F6E65656465645F6D6F646966795F70\n" "6F776572007570646174656420706572\n" "6D697373696F6E7320746F2076657273\n" "696F6E2031007065726D5F6368616E6E\n" "656C5F67726F75707300757064617465\n" "64207065726D697373696F6E7320746F\n" "2076657273696F6E2032007570646174\n" "6564207065726D697373696F6E732074\n" "6F2076657273696F6E20330075706461\n" "746564207065726D697373696F6E7320\n" "746F2076657273696F6E203400757064\n" "61746564207065726D697373696F6E73\n" "20746F2076657273696F6E2035007570\n" "6461746564207065726D697373696F6E\n" "7320746F2076657273696F6E20360075\n" "706461746564207065726D697373696F\n" "6E7320746F2076657273696F6E203700\n" "695F6368616E6E656C5F6D6F64696679\n" "5F6D616B655F636F6465635F656E6372\n" "79707465640075706461746564207065\n" "726D697373696F6E7320746F20766572\n" "73696F6E203800757064617465642070\n" "65726D697373696F6E7320746F207665\n" "7273696F6E2039007570646174656420\n" "7065726D697373696F6E7320746F2076\n" "657273696F6E20313000695F636C6965\n" "6E745F6D61785F636C6F6E657300695F\n" "6E65656465645F6D6F646966795F706F\n" "7765725F636C69656E745F6D61785F63\n" "6C6F6E65730075706461746564207065\n" "726D697373696F6E7320746F20766572\n" "73696F6E203131007570646174655F70\n" "65726D697373696F6E735F31322E7371\n" "6C006661696C656420746F2075706772\n" "616465207065726D697373696F6E732C\n" "2068616C746564210075706461746564\n" "207065726D697373696F6E7320746F20\n" "76657273696F6E203132007570646174\n" "6564207065726D697373696F6E732074\n" "6F2076657273696F6E20313300757064\n" "61746564207065726D697373696F6E73\n" "20746F2076657273696F6E2031340075\n" "706461746564207065726D697373696F\n" "6E7320746F2076657273696F6E203135\n" "0075706461746564207065726D697373\n" "696F6E7320746F2076657273696F6E20\n" "31360075706461746564207065726D69\n" "7373696F6E7320746F2076657273696F\n" "6E20313700625F7669727475616C7365\n" "727665725F6D6F646966795F64656661\n" "756C745F74656D705F6368616E6E656C\n" "5F64656C6574655F64656C617900695F\n" "6E65656465645F6D6F646966795F706F\n" "7765725F7669727475616C7365727665\n" "725F6D6F646966795F64656661756C74\n" "5F74656D705F6368616E6E656C5F6465\n" "6C6574655F64656C617900695F636861\n" "6E6E656C5F6372656174655F6D6F6469\n" "66795F74656D705F64656C6574655F64\n" "656C617900695F6E65656465645F6D6F\n" "646966795F706F7765725F6368616E6E\n" "656C5F6372656174655F6D6F64696679\n" "5F74656D705F64656C6574655F64656C\n" "61790075706461746564207065726D69\n" "7373696F6E7320746F2076657273696F\n" "6E203138007570646174656420706572\n" "6D697373696F6E7320746F2076657273\n" "696F6E20313900757064617465506572\n" "6D697373696F6E73282920756E61626C\n" "6520746F20696E736572742064617461\n" "626173652076657273696F6E00736572\n" "7665725F696E736572742E73716C0073\n" "65727665725F64656C6574652E73716C\n" "0062696E64696E67735F6C6973742E73\n" "716C007365727665725F757064617465\n" "5F747261666669635F73746174732E73\n" "716C007365727665725F757064617465\n" "5F706F72742E73716C00736572766572\n" "5F7570646174655F6175746F73746172\n" "742E73716C007365727665725F676574\n" "5F6279706F72742E73716C0073657276\n" "65725F7570646174655F6D616368696E\n" "655F69642E73716C007265766F636174\n" "696F6E735F696E736572745F62756C6B\n" "2E73716C007265766F636174696F6E5F\n" "74797065007265766F636174696F6E5F\n" "65787069726174696F6E007265766F63\n" "6174696F6E5F6B6579007265766F6361\n" "74696F6E735F6765746C6973742E7371\n" "6C00496E76616C6964207265766F6361\n" "74696F6E206B657920007265766F6361\n" "74696F6E735F64656C6574652E73716C\n" "003B20726561736F6E3A200046696C65\n" "4D616E6167657200436F756C64206E6F\n" "742062696E642066696C657472616E73\n" "666572206C697374656E20706F727420\n" "6F6E2064656661756C74206164647265\n" "737365730066696C657472616E736665\n" "722062696E64206661696C6564206F6E\n" "20004572726F72207768696C65206765\n" "7474696E67206C697374656E696E6720\n" "6164647265737365732E200041737365\n" "7274696F6E20226D5F62616E64776964\n" "74685F6C696D69745F73657276657273\n" "2E66696E64287365727665725F696429\n" "203D3D206D5F62616E6477696474685F\n" "6C696D69745F736572766572732E656E\n" "64282922206661696C6564206174202E\n" "2E2F2E2E2F2E2E2F2E2E2F732F646570\n" "732F7465616D737065616B5F73657276\n" "65725F6C69622F7372632F74735F7365\n" "727665722F66696C657472616E736665\n" "722F73657276657266696C656D616E61\n" "6765722E6370703A0041737365727469\n" "6F6E2022697420213D206D5F62616E64\n" "77696474685F6C696D69745F73657276\n" "6572732E656E64282922206661696C65\n" "64206174202E2E2F2E2E2F2E2E2F2E2E\n" "2F732F646570732F7465616D73706561\n" "6B5F7365727665725F6C69622F737263\n" "2F74735F7365727665722F66696C6574\n" "72616E736665722F7365727665726669\n" "6C656D616E616765722E6370703A0045\n" "72726F7220616363657074696E672066\n" "696C657472616E736665722000417373\n" "657274696F6E202262775F7365727665\n" "7220213D206D5F62616E647769647468\n" "5F6C696D69745F736572766572732E65\n" "6E64282922206661696C656420617420\n" "2E2E2F2E2E2F2E2E2F2E2E2F732F6465\n" "70732F7465616D737065616B5F736572\n" "7665725F6C69622F7372632F74735F73\n" "65727665722F66696C657472616E7366\n" "65722F73657276657266696C656D616E\n" "616765722E6370703A00417373657274\n" "696F6E202262775F636C69656E742021\n" "3D2062775F7365727665722D3E736563\n" "6F6E642E6D5F636C69656E745F62616E\n" "647769647468732E656E642829222066\n" "61696C6564206174202E2E2F2E2E2F2E\n" "2E2F2E2E2F732F646570732F7465616D\n" "737065616B5F7365727665725F6C6962\n" "2F7372632F74735F7365727665722F66\n" "696C657472616E736665722F73657276\n" "657266696C656D616E616765722E6370\n" "703A0046696C654D616E616765722054\n" "696D657220657870697265735F66726F\n" "6D5F6E6F772072657475726E65642065\n" "72726F723A2000747269656420746F20\n" "72656D6F766520697020746861742077\n" "6173206E6F7420696E206C6973742120\n" "00636C6F7365006C6F63616C5F656E64\n" "706F696E740000000000000000000000\n" "1E000000000000001E00000000000000\n" "0A00000000000000C800000000000000\n" "F4010000000000000000000000000000\n" "25000000000000000000000000000000\n" "00000000000000000000000000000000\n" "0000000000000080FFFFFFFFFFFFFF7F\n" "0100000000000080FDFFFFFFFFFFFF7F"); cout << "Bin length: " << bin.length() << endl; //0x33E 0x43C //cout << "Str: " << read_crypted_string(bin.data() + 0x3BA, 0x3BA) << endl; //cout << "Str: " << read_crypted_string(bin.data() + 0x3DF, 0x3DF) << endl; //cout << "Str: " << read_crypted_string(bin.data() + 0x405, 0x405) << endl; => virtual server id //cout << "Str: " << read_crypted_string(bin.data() + 0x43C, 0x43C) << endl; => is duplicated in same instance, shutting down! for(int index = 0x3E; index < bin.length() + 1; ) { string str; read_crypted_string(str, bin.data() + index, index); cout << "Hex: 0x" << hex << setfill('0') << setw(3) << index << " => " << str << endl; index += str.length() + 1; } } int main(int argc, char** argv){ threads::timer t(""); srand(system_clock::now().time_since_epoch().count()); init_LTM(); if(register_prng(&sprng_desc) == -1) { cerr << "could not setup prng" << endl; return EXIT_FAILURE; } if (register_cipher(&rijndael_desc) == -1) { cerr << "could not setup rijndael" << endl; return EXIT_FAILURE; } string error; if(false) { auto base64_tvd = base64::decode("AQCvbHFTQDY/terPeilrp/ECU9xCH5U3xC92lYTNaY/0KQAJFueAazbsgAAAACVUZWFtU3BlYWsgU3lzdGVtcyBHbWJIAADmqdzhKVTai5ZX3LMCOmhH4wOWa7Jrb27PTN6XJSvOaAAKcspvMINAZwAAACRUZWFtU3BlYWsgc3lzdGVtcyBHbWJIAADRNBxg9GPfGFpwf0akzRQs4B/VhIvD+cKAC7vzRAys/AIKfC4AC27CAAYAAAAAW09EQU5JIEHDhyBUQUtJTF0gVHMzLkFtYWNpT2xtYXlhblRheWZhLkNPTSB8IFdFQkRpeW8uQ09NAA=="); istringstream s(base64_tvd); auto result = LicenseChain::parse(s, error); if(!result) { cerr << error << endl; return 0; } result->print(); return 0; } cout << base64::encode(license::teamspeak::Anonymous::chain->exportChain()) << endl; cout << base64::encode(reinterpret_cast(license::teamspeak::Anonymous::root_key), 32) << endl; if(false) { auto key_plk = license::teamspeak::Anonymous::chain->generatePublicKey(); auto key_prv = license::teamspeak::Anonymous::chain->generatePrivateKey((u_char*) license::teamspeak::Anonymous::root_key, license::teamspeak::Anonymous::root_index); u_char sign[64]; string message = "Hello World"; ed25519_sign(sign, (u_char*) message.data(), message.length(), (u_char*) key_plk.data(), (u_char*) key_prv.data()); assert(ed25519_verify(sign, (const u_char*) message.data(), message.length(), (u_char*) key_plk.data())); } #if false auto base64_license = "Co4CCsQBAQCvbHFTQDY/terPeilrp/ECU9xCH5U3xC92lYTNaY/0KQAJFueAazbsgAAAACVUZWFtU3BlYWsgU3lzdGVtcyBHbWJIAABVa/g1Aa+EhqDv4a+FKZ+nhnzgNNoG5LZZDMbWP1rUJwAJjrHNL59A2wAAACRUZWFtU3BlYWsgc3lzdGVtcyBHbWJIAAAY8GKBKoLJ2NJT15WG1E3GQ0vl0Ju29Oq3KqYAeEH9GQIJmBqACpU6gAQAAAIAVG9tIFdlYmVyABIgwLAWtDC3hSt8KzSBEksYyaYXxrIybtV207ImV+ugSWkYgAQgCioeVGVhbVNwZWFrIDMgTm9uLVByb2ZpdCBMaWNlbnNlErUBAQCvbHFTQDY/terPeilrp/ECU9xCH5U3xC92lYTNaY/0KQAJFueAazbsgAAAACVUZWFtU3BlYWsgU3lzdGVtcyBHbWJIAABVa/g1Aa+EhqDv4a+FKZ+nhnzgNNoG5LZZDMbWP1rUJwAJjrHNL59A2wAAACRUZWFtU3BlYWsgc3lzdGVtcyBHbWJIAACWjeLEq44YFFAhN9aie2W8g7q3LO2UN/FiHtoGxOoiKAUJjrHNL59A2xpARpdAlulkIKm793JIeJcyxYvvc/tdj4Bx45qcLMISR8qdAOjtgTAV2fWbkdjx0roelL6EAubc3HPij+5Xny1UDw=="; ts::proto::license::teamspeak::License license; license.ParseFromString(base64::decode(base64_license)); auto chain_sign = LicenseChain::parse(license.sign_chain(), error); auto chain_license = LicenseChain::parse(license.license().chain(), error); { auto key = chain_sign->generatePublicKey(); auto signature = license.license_sign(); auto message = license.license().SerializeAsString(); assert(ed25519_verify((const u_char*) signature.data(), (const u_char*) message.data(), message.length(), (u_char*) key.data())); } { auto key_plk = chain_license->generatePublicKey(); auto key_prv = chain_license->generatePrivateKey((u_char*) license.license().root().data(), 3); u_char sign[64]; string message = "Hello World"; ed25519_sign(sign, (u_char*) message.data(), message.length(), (u_char*) key_plk.data(), (u_char*) key_prv.data()); assert(ed25519_verify(sign, (const u_char*) message.data(), message.length(), (u_char*) key_plk.data())); } chain_sign->print(); chain_license->print(); cout << "version:0" << endl; cout << "chain:" << base64::encode(chain_license->exportChain()) << endl; cout << "root_key_prv:" << base64::encode(license.license().root()) << endl; cout << "root_key_pbl:" << base64::encode((const char*) public_root, 32) << endl; cout << "root_prv_index:" << to_string(3) << endl; #endif //return 0; /** * DONT DELET! */ //Last checked offset was 1591824411998 //Level 39 //ts::Identity* id = new ts::Identity("4161411998Vginro7hE2a4haFhxRR5+Q1aknrR8Nn1iYAAUZldWVn8XZFVVUnUOVBFeMQJ9HHZaOVh3fEhLShwdXHkie2lza1gDWQltMwhROBNeVTQ2GS5EeFNbA2dBE3QvXU9jJ0VKMXd4YkpxU0tFQUlnYVZaeVVTTTYzSldSLzBRT3Nqd3hSelJBYmRpZ2xsaFhsVTF5L3hVYWgxWT0="); //Last checked offset was 1330241596003 //Level 48 535525596003 //ts::Identity* id = new ts::Identity("535525596003VMXsJbBqTW70w6dnQUt/X/CiIeth9DEVcVEVUUxBjXUY9RGxSeVN+OhYDHjJSFRoCJHIDd3FjXCgSdH0Gf3RhBlJ0SGYbIEBCVzNcAAITKD9yY30aAgBqOnQIQmVdVQB5L3NVWnZkQUNJUUR2dG5ScnNYdHVWZkFhem9OYVNxTGhjZ2ZwVXhVelFpcGMrSDFSbkIrL3dRPT0="); /* for(int i = 0; ltc_ecc_sets[i].size != 0; i++){ cout << " -> " << ltc_ecc_sets[i].name << endl; } int targetLevel = 20; if(argc > 1){ targetLevel = atoi(argv[1]); } cout << "Try to find security level " << targetLevel << endl; ts::Identity* id = new ts::Identity("30895417VvPSPlSzA2mTBpjn7RrJYEq/PmZcNAmhDCXkVdStbXUU2bVxBQ0IHNVAGNTR/CXplN2Z/AwRASSFTQn0GV3NTGX18dXENB2laLQJHKVFUKgl/VHRgD21LUlAHVk18FQcEMGpAXTBxUUNJSEtnTCtOcXJhZDRUSTlKNk04clZXMHkxQjcwWnNsanNsbldOOWo5cjBObA=="); id->improveSecurityLevelMultithreaded(targetLevel, 16, 1000000, 10 * 1000 * 1000U, true); cout << "New string: " << id->exportIdentity() << endl; if(true) return false; */ /* string error; //auto stream = stringstream(base64::decode("AQCvbHFTQDY/terPeilrp/ECU9xCH5U3xC92lYTNaY/0KQAJFueAazbsgAAAACVUZWFtU3BlYWsgU3lzdGVtcyBHbWJIAABhl9gwla/UJp2Eszst9TRVXO/PeE6a6d+CTI6Pg7OEVgAJc5CrL4Nh8gAAACRUZWFtU3BlYWsgc3lzdGVtcyBHbWJIAACvTQIgpv6zmLZq3znh7ygmOSokGFkFjz4bTigrOnetrgIJdIIACdS/gAYAAAAAU29zc2VuU3lzdGVtcy5iaWQAADY7+uV1CQ1niOvYSdGzsu83kPTNWijovr3B78eHGeePIAm98vQJvpu0")); auto stream = stringstream(base64::decode("AQA1hUFJiiSs0wFXkYuPUJVcDa6XCrZTcsvkB0Ffzz4CmwIITRXgCqeTYAcAAAAgQW5vbnltb3VzAAC4R+5mos+UQ/KCbkpQLMI5WRp4wkQu8e5PZY4zU+/FlyAJwaE8CcJJ/A==")); auto chain = LicenseChain::parse(stream, error); if(!chain) { cerr << "Could not parse: " << error << endl; return 0; } chain->print(); cout << chain->exportChain() << endl; auto key = chain->generateKey(); cout << " -> " << base64::encode(key) << endl; cout << hex; for(const auto& c : key) cout << " " << (uint32_t) (uint8_t) c << endl; if(true) return 0; */ ts::Identity* identity; //identity = new ts::Identity("30895417VvPSPlSzA2mTBpjn7RrJYEq/PmZcNAmhDCXkVdStbXUU2bVxBQ0IHNVAGNTR/CXplN2Z/AwRASSFTQn0GV3NTGX18dXENB2laLQJHKVFUKgl/VHRgD21LUlAHVk18FQcEMGpAXTBxUUNJSEtnTCtOcXJhZDRUSTlKNk04clZXMHkxQjcwWnNsanNsbldOOWo5cjBObA=="); identity = new ts::Identity("4161411998Vginro7hE2a4haFhxRR5+Q1aknrR8Nn1iYAAUZldWVn8XZFVVUnUOVBFeMQJ9HHZaOVh3fEhLShwdXHkie2lza1gDWQltMwhROBNeVTQ2GS5EeFNbA2dBE3QvXU9jJ0VKMXd4YkpxU0tFQUlnYVZaeVVTTTYzSldSLzBRT3Nqd3hSelJBYmRpZ2xsaFhsVTF5L3hVYWgxWT0="); cout << "Private key: " << identity->privateKey() << endl; cout << "Public key: " << identity->publicKey() << endl; { auto hash = digest::sha256("Hello World"); auto sign_rfc = base64::decode("kjEYFcZ4iDxosbhi7bV04nRu0c0JzEIKAACSpLo9G1cJX60Ta46QpoPXTpMg9E8z5pHeZXPVUx75zmWE/LQTuQ=="); int state; auto result = ecc_verify_hash_rfc7518((u_char*) sign_rfc.data(), sign_rfc.length(), (u_char*) hash.data(), hash.length(), &state, identity->getKeyPair()); __asm__("nop"); } //identity = ts::Identity::createNew(); //identity->improveSecurityLevel(9); /* identity = ts::Identity::createNew(); cout << "Improve" << endl; identity->improveSecurityLevelMultithreaded(24, 12); cout << "Got level: " << identity->getSecurityLevel() << " at " << identity->lastValidKeyOffset() << " - " << identity->privateKey() << " - " << identity->publicKey() << endl; return 0; */ auto lastConnect = time_point(); for(int i = 0; i < 1; i++){ //identity = ts::Identity::createNew(); //identity->improveSecurityLevel(9); //identity = new ts::Identity("4161411998Vginro7hE2a4haFhxRR5+Q1aknrR8Nn1iYAAUZldWVn8XZFVVUnUOVBFeMQJ9HHZaOVh3fEhLShwdXHkie2lza1gDWQltMwhROBNeVTQ2GS5EeFNbA2dBE3QvXU9jJ0VKMXd4YkpxU0tFQUlnYVZaeVVTTTYzSldSLzBRT3Nqd3hSelJBYmRpZ2xsaFhsVTF5L3hVYWgxWT0="); //identity = new ts::Identity("8008VgvLYFzLLe4lE6oTKyMBPViPHzJVdCGVqAGc7VQQJXkcIRUZcCkFzMDJmHCYBMF1kWmdzRwlQBy4PT3Eie2lzVmUCd39bD3RnNC9gAyRQFh14Z0YGEHJHDg4nGkceNgdWBH9RAE1ZTjlqUUlnV1hUck5vZVdUQ21sNkVYeDNMUm80M0pMU0ZDdkRzWUorR0VkeDE3ZDJLST0="); //identity = identity->createNew(); //cout << "Improve" << endl; //identity->improveSecurityLevelMultithreaded(10, 12); //cout << "Using identity: " << identity->exportIdentity() << endl; auto connection = new ts::connection::ServerConnection(); while(system_clock::now() - lastConnect < milliseconds(250)) usleep(1000); lastConnect = system_clock::now(); string host = "127.0.0.1" //"51.255.133.2" //"79.133.54.198" //"51.255.133.6" //"79.133.54.207" //GommeHD.net //"79.133.54.202" //Rewi //"79.133.54.210" //minesucht.net:9988 //"91.134.112.225" //The Beast (NOT 3.1!) //"79.133.54.198" //Grifer games:9180 //"52.63.60.28" //"87.106.252.164" //"5.1.80.215" //Twerion //"212.114.60.36" //Domies ts //"54.36.90.72" //"87.106.252.164" //"84.200.62.248" //"79.133.54.198" //Durchrasten.de:9122 "" ; string port = "9987"; if(argc > 2) { host = argv[1]; port = argv[2]; } threads::Thread([connection, host, port, identity]() { string error; cout << host << ":" << port << endl; if(!connection->connect(host, port, identity)){ cerr << "Cant connect!" << endl; goto sleep; } if(!connection->handshake(error)){ cerr << "Cant handschake: " << error << endl; goto sleep; } threads::self::sleep_for(seconds(10 + rand() % 10)); sleep:; //connection->disconnect(); //delete connection; }).detach(); //connection->disconnect(); usleep(1000 * 1000); } cout << "Done!" << endl; while(true) usleep(1000 * 2000); }