コード例 #1
0
        public void SendHandle(ByteArray data)
        {
            try
            {
                var header = new Header(data);

                if (YoponSetting.I.IsDebugMode &&
                    header.Type == Header.TYPE_COMMAND)
                {
                    var commandId = header.CommandId;
                    var fieldName = Methods.GetFieldName(commandId);
                    var logPath   = YoponSetting.DebugLogFile;
                    var message   = $"[INFO METHOD] {fieldName}";
                    if (DESCipher.IsEncryptData(header.Body, Key))
                    {
                        message += " (ENCRYPTED)";
                    }
                    Logger.OutputAtBackground(logPath, message);
                }
            }
            catch (Exception ex)
            {
                Logger.OutputAtBackground(
                    YoponSetting.DebugLogFile,
                    $"[ERROR] {ex.ToString()}");
            }

            WebSocketProxy.Send(data);
        }
コード例 #2
0
        public async Task <string> GetSCSCipherPasswordAsync(String userId, String password)
        {
            var semilla = await GetSeedAsync();

            User      user = new User(userId, password);
            DESCipher des  = new DESCipher("HGFEDCBA");

            DESCipher desCipher = new DESCipher(des.decryptString(_configuration["GenerateSeed:KEY"]));

            String decryptedKey = desCipher.decryptString(semilla.Key);
            var    sKey         = new AuthenticationSeed(decryptedKey, semilla.Id);

            SCSDESCipher dCipher       = new SCSDESCipher(sKey.Id, sKey.Key);
            Scrambler    scram         = new Scrambler();
            String       scramblerUser = scram.scrambler(user);
            String       toReturn      = dCipher.encrypt(scramblerUser);

            return(toReturn);
        }
コード例 #3
0
ファイル: SCSDESCipher.cs プロジェクト: alexrv11/test
 public SCSDESCipher(String id, String key)
 {
     this.id        = id;
     this.key       = key;
     this.desCipher = new DESCipher(key);
 }
コード例 #4
0
        public void SendHandle(ByteArray data)
        {
            try
            {
                var header = new Header(data);
                var input  = new ByteArray(header.Body);

                if (YoponSetting.I.IsDebugMode &&
                    header.Type == Header.TYPE_COMMAND)
                {
                    var commandId = header.CommandId;
                    var fieldName = Methods.GetFieldName(commandId);
                    var logPath   = YoponSetting.DebugLogFile;
                    var message   = $"[CHAT METHOD] {fieldName}";
                    if (DESCipher.IsEncryptData(header.Body, Key))
                    {
                        message += " (ENCRYPTED)";
                    }
                    Logger.OutputAtBackground(logPath, message);
                }

                if (header.CommandId == ChatMethod.TALK)
                {
                    input.Decrypt(Key);

                    var message = input.ReadUTF().ToLower();

                    var color = ActiveUser.TalkBGColor;

                    if (ActiveUser.TalkBGColor !=
                        System.Drawing.Color.White)
                    {
                        var colorToUint = (uint)(color.R << 16 | color.G << 8 | color.B);
                        var talk        = new ByteArray();

                        talk.WriteUTF(message);
                        talk.WriteUnsignedInt(colorToUint);
                        talk.WriteUnsignedInt(colorToUint);
                        talk.Encrypt(Key);

                        header.Body = talk.Bytes;
                        header.Write(data);
                    }

                    if (message == "/log")
                    {
                        var log = ActiveUser.ChatLogFileDir;
                        Directory.CreateDirectory(log);
                        Process.Start("explorer.exe", log);
                        var head = new Header();
                        head.CommandId = ChatMethod.CANCEL_TYPING;
                        head.Write(data);
                    }
                    else if (message == "/debug")
                    {
                        var packet = new Header();
                        var bytes  = new ByteArray();

                        if (YoponSetting.I.IsDebugMode)
                        {
                            YoponSetting.I.HasDownloadModule = false;
                            YoponSetting.I.IsDebugMode       = false;
                            bytes.WriteUTF("デバッグモードが無効になりました");
                        }
                        else
                        {
                            YoponSetting.I.HasDownloadModule = true;
                            YoponSetting.I.IsDebugMode       = true;
                            bytes.WriteUTF("デバッグモードが有効になりました");
                        }

                        packet.CommandId = ChatMethod.ALERT_RESULT;
                        packet.Body      = bytes.Bytes;
                        WebSocketProxy.Recv(packet.ToArray());

                        var head = new Header();
                        head.CommandId = ChatMethod.CANCEL_TYPING;
                        head.Write(data);
                    }
                }
                else if (header.CommandId == ChatMethod.MOVE)
                {
                    if (ActiveUser.IsOneClickTeleport)
                    {
                        var head = new Header()
                        {
                            CommandId = ChatMethod.MOVE_END
                        };

                        input.Decrypt(Key);
                        input.Position = input.Length;
                        input.WriteShort(0); // dir
                        input.Encrypt(Key);
                        head.Body = input.Bytes;
                        head.Write(data);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.OutputAtBackground(
                    YoponSetting.DebugLogFile,
                    $"[ERROR] {ex.ToString()}");
            }

            WebSocketProxy.Send(data);
        }
コード例 #5
0
 public void Encrypt(byte[] key)
 {
     buffer   = DESCipher.Encrypt(buffer, key);
     position = 0;
 }