Ejemplo n.º 1
0
        public string ReadString(ICypherStrategy cypherStrategy)
        {
            uint length = ReadUInt32();

            byte[] bytes = ReadBytes((int)length);
            return(cypherStrategy.Decypher(bytes));
        }
Ejemplo n.º 2
0
        public GlacierLocrBinaryReader(FileStream fileStream, HitmanVersion version, LocrTextFile file)
            : base(fileStream)
        {
            switch (version)
            {
            case HitmanVersion.Version1:
            case HitmanVersion.Version1Epic:
            {
                int initialOffset = ReadInt32();
                NumberOfLanguages = initialOffset / 4;
                SetDefaultStrategy();
                fileStream.Seek(0, SeekOrigin.Begin);
            }
            break;

            case HitmanVersion.Version2:
            {
                file.HeaderValue = ReadByte();
                int initialOffset = ReadInt32();
                NumberOfLanguages = (initialOffset - 1) / 4;
                CypherStrategy    = new CypherStrategyTEA();
                fileStream.Seek(1, SeekOrigin.Begin);
            }
            break;
            }
        }
Ejemplo n.º 3
0
        public override string ReadString()
        {
            uint length = ReadUInt32();

            byte[] bytes      = ReadBytes((int)length);
            byte   zero       = ReadByte(); // remove trailing zero
            string decyphered = CypherStrategy.Decypher(bytes);

            if (IsUsingIncorrectStrategy(bytes, decyphered))
            {
                CypherStrategy = new CypherStrategyTEA();
                decyphered     = CypherStrategy.Decypher(bytes);
            }
            return(decyphered);
        }
Ejemplo n.º 4
0
        private void SetDefaultStrategy()
        {
            switch (NumberOfLanguages)
            {
            case 10:
                CypherStrategy = new CypherStrategyPermutation();
                break;

            case 12:
                CypherStrategy = new CypherStrategyTEA();
                break;

            default:
                throw new InvalidDataException("Unsupported number of languages");
            }
        }
 public GlacierDlgeBinaryWriter(FileStream fileStream, HitmanVersion version)
     : base(fileStream)
 {
     _version   = version;
     myStrategy = new CypherStrategyTEA();
 }
 public GlacierRtlvBinaryWriter(FileStream fileStream)
     : base(fileStream)
 {
     myStrategy = new CypherStrategyTEA();
 }
 public GlacierLocrBinaryWriter(FileStream fileStream, HitmanVersion version, ICypherStrategy cypherStrategy)
     : base(fileStream)
 {
     _version   = version;
     myStrategy = cypherStrategy;
 }