예제 #1
0
        public async Task <byte[]> Obfuscate(ObfuscateRequest request)
        {
            CreateDefaultDirectories();
            var obfuscationFolder = FileUtil.GetAssemblyPath("ObfuscationTemp");
            var guid    = Guid.NewGuid();
            var outPath = Path.Combine(obfuscationFolder, $"{guid}-obbed.jar");
            var jarPath = Path.Combine(obfuscationFolder, $"{guid}.jar");

            File.WriteAllBytes(jarPath, request.Bytes);
            var path = await ObfuscateJar(jarPath, outPath, BuildObfuscateConfig(jarPath, outPath, request.Config));

            var bytes = File.ReadAllBytes(path);

            File.Delete(path);
            return(bytes);
        }
        public async Task <byte[]> Handle(ObfuscateBotCommand request, CancellationToken cancellationToken)
        {
            var config = await _mediator.Send(new GetFileQuery { Name = "bot-obfuscate-config.xml" }, cancellationToken);

            if (string.IsNullOrEmpty(request.Path))
            {
                return(new byte[0]);
            }

            var bytes     = File.ReadAllBytes(request.Path);
            var obfuscate = new ObfuscateRequest
            {
                Bytes  = bytes,
                Config = Encoding.Default.GetString(config)
            };

            var result = await _client.PostAsync("/api/obfuscate/execute",
                                                 new StringContent(JsonSerializer.Serialize(obfuscate), Encoding.UTF8, "application/json"),
                                                 cancellationToken);

            var stream = await result.Content.ReadAsStreamAsync();

            return(stream.ToByteArray());
        }
        public async Task <IActionResult> Execute(ObfuscateRequest request)
        {
            var bytes = await _service.Obfuscate(request);

            return(File(bytes, "application/java-archive", "result.jar"));
        }