예제 #1
0
        public void method_31(bool bool_1)
        {
            Class202 @class = new Class202(this.byte_0);

            if (@class.method_6(1))
            {
                if ((this.ushort_1 & 255) < 45)
                {
                    throw new ZipException("Zip64 Extended information found but version is not valid");
                }
                this.bool_0 = true;
                if (@class.method_3() < 4)
                {
                    throw new ZipException("Extra data extended Zip64 information length is invalid");
                }
                if (bool_1 || this.ulong_0 == 4294967295uL)
                {
                    this.ulong_0 = (ulong)@class.method_14();
                }
                if (bool_1 || this.ulong_1 == 4294967295uL)
                {
                    this.ulong_1 = (ulong)@class.method_14();
                }
                if (!bool_1 && this.long_1 == 4294967295L)
                {
                    this.long_1 = @class.method_14();
                }
            }
            else if ((this.ushort_1 & 255) >= 45 && (this.ulong_0 == 4294967295uL || this.ulong_1 == 4294967295uL))
            {
                throw new ZipException("Zip64 Extended information required but is missing.");
            }
            if (@class.method_6(10))
            {
                if (@class.method_3() < 8)
                {
                    throw new ZipException("NTFS Extra data invalid");
                }
                @class.method_15();
                while (@class.method_5() >= 4)
                {
                    int num  = @class.method_16();
                    int num2 = @class.method_16();
                    if (num == 1)
                    {
                        if (num2 >= 24)
                        {
                            long fileTime = @class.method_14();
                            @class.method_14();
                            @class.method_14();
                            this.method_19(DateTime.FromFileTime(fileTime));
                            return;
                        }
                        return;
                    }
                    else
                    {
                        @class.method_18(num2);
                    }
                }
                return;
            }
            else if (@class.method_6(21589))
            {
                int num3 = @class.method_3();
                int num4 = @class.method_17();
                if ((num4 & 1) != 0 && num3 >= 5)
                {
                    int seconds = @class.method_15();
                    this.method_19((new DateTime(1970, 1, 1, 0, 0, 0).ToUniversalTime() + new TimeSpan(0, 0, 0, seconds, 0)).ToLocalTime());
                }
            }
        }
예제 #2
0
 public void method_31(bool bool_1)
 {
     Class202 @class = new Class202(this.byte_0);
     if (@class.method_6(1))
     {
         if ((this.ushort_1 & 255) < 45)
         {
             throw new ZipException("Zip64 Extended information found but version is not valid");
         }
         this.bool_0 = true;
         if (@class.method_3() < 4)
         {
             throw new ZipException("Extra data extended Zip64 information length is invalid");
         }
         if (bool_1 || this.ulong_0 == 4294967295uL)
         {
             this.ulong_0 = (ulong)@class.method_14();
         }
         if (bool_1 || this.ulong_1 == 4294967295uL)
         {
             this.ulong_1 = (ulong)@class.method_14();
         }
         if (!bool_1 && this.long_1 == 4294967295L)
         {
             this.long_1 = @class.method_14();
         }
     }
     else if ((this.ushort_1 & 255) >= 45 && (this.ulong_0 == 4294967295uL || this.ulong_1 == 4294967295uL))
     {
         throw new ZipException("Zip64 Extended information required but is missing.");
     }
     if (@class.method_6(10))
     {
         if (@class.method_3() < 8)
         {
             throw new ZipException("NTFS Extra data invalid");
         }
         @class.method_15();
         while (@class.method_5() >= 4)
         {
             int num = @class.method_16();
             int num2 = @class.method_16();
             if (num == 1)
             {
                 if (num2 >= 24)
                 {
                     long fileTime = @class.method_14();
                     @class.method_14();
                     @class.method_14();
                     this.method_19(DateTime.FromFileTime(fileTime));
                     return;
                 }
                 return;
             }
             else
             {
                 @class.method_18(num2);
             }
         }
         return;
     }
     else if (@class.method_6(21589))
     {
         int num3 = @class.method_3();
         int num4 = @class.method_17();
         if ((num4 & 1) != 0 && num3 >= 5)
         {
             int seconds = @class.method_15();
             this.method_19((new DateTime(1970, 1, 1, 0, 0, 0).ToUniversalTime() + new TimeSpan(0, 0, 0, seconds, 0)).ToLocalTime());
         }
     }
 }
예제 #3
0
 public void method_10(Class193 class193_1)
 {
     if (class193_1 == null)
     {
         throw new ArgumentNullException("entry");
     }
     if (this.arrayList_0 == null)
     {
         throw new InvalidOperationException("ZipOutputStream was finished");
     }
     if (this.class193_0 != null)
     {
         this.method_11();
     }
     if (this.arrayList_0.Count == 2147483647)
     {
         throw new ZipException("Too many entries for Zip file");
     }
     Enum31 @enum = class193_1.method_27();
     int int_ = this.int_0;
     class193_1.method_5(class193_1.method_4() & 2048);
     this.bool_2 = false;
     bool flag = true;
     if (@enum == Enum31.const_0)
     {
         class193_1.method_5(class193_1.method_4() & -9);
         if (class193_1.method_23() >= 0L)
         {
             if (class193_1.method_21() < 0L)
             {
                 class193_1.method_22(class193_1.method_23());
             }
             else if (class193_1.method_21() != class193_1.method_23())
             {
                 throw new ZipException("Method STORED, but compressed size != size");
             }
         }
         else if (class193_1.method_21() >= 0L)
         {
             class193_1.method_24(class193_1.method_21());
         }
         if (class193_1.method_21() < 0L || class193_1.method_25() < 0L)
         {
             if (base.method_0())
             {
                 flag = false;
             }
             else
             {
                 @enum = Enum31.const_1;
                 int_ = 0;
             }
         }
     }
     if (@enum == Enum31.const_1)
     {
         if (class193_1.method_21() == 0L)
         {
             class193_1.method_24(class193_1.method_21());
             class193_1.method_26(0L);
             @enum = Enum31.const_0;
         }
         else if (class193_1.method_23() < 0L || class193_1.method_21() < 0L || class193_1.method_25() < 0L)
         {
             flag = false;
         }
     }
     if (!flag)
     {
         if (!base.method_0())
         {
             class193_1.method_5(class193_1.method_4() | 8);
         }
         else
         {
             this.bool_2 = true;
         }
     }
     if (base.method_1() != null)
     {
         class193_1.method_1(true);
         if (class193_1.method_25() < 0L)
         {
             class193_1.method_5(class193_1.method_4() | 8);
         }
     }
     class193_1.method_7(this.long_1);
     class193_1.method_28(@enum);
     this.enum31_0 = @enum;
     this.long_3 = -1L;
     if (this.enum30_0 == Enum30.const_1 || (class193_1.method_21() < 0L && this.enum30_0 == Enum30.const_2))
     {
         class193_1.method_13();
     }
     this.method_8(67324752);
     this.method_7(class193_1.method_11());
     this.method_7(class193_1.method_4());
     this.method_7((int)((byte)@enum));
     this.method_8((int)class193_1.method_17());
     if (flag)
     {
         this.method_8((int)class193_1.method_25());
         if (class193_1.method_15())
         {
             this.method_8(-1);
             this.method_8(-1);
         }
         else
         {
             this.method_8(class193_1.method_0() ? ((int)class193_1.method_23() + 12) : ((int)class193_1.method_23()));
             this.method_8((int)class193_1.method_21());
         }
     }
     else
     {
         if (this.bool_2)
         {
             this.long_2 = this.stream_0.Position;
         }
         this.method_8(0);
         if (this.bool_2)
         {
             this.long_3 = this.stream_0.Position;
         }
         if (class193_1.method_15() && this.bool_2)
         {
             this.method_8(-1);
             this.method_8(-1);
         }
         else
         {
             this.method_8(0);
             this.method_8(0);
         }
     }
     byte[] array = Class186.smethod_4(class193_1.method_4(), class193_1.method_20());
     if (array.Length > 65535)
     {
         throw new ZipException("Entry name too long.");
     }
     Class202 @class = new Class202(class193_1.method_29());
     if (class193_1.method_15() && (flag || this.bool_2))
     {
         @class.method_8();
         if (flag)
         {
             @class.method_12(class193_1.method_21());
             @class.method_12(class193_1.method_23());
         }
         else
         {
             @class.method_12(-1L);
             @class.method_12(-1L);
         }
         @class.method_9(1);
         if ([email protected]_6(1))
         {
             throw new ZipException("Internal error cant find extra data");
         }
         if (this.bool_2)
         {
             this.long_3 = (long)@class.method_4();
         }
     }
     else
     {
         @class.method_13(1);
     }
     byte[] array2 = @class.method_0();
     this.method_7(array.Length);
     this.method_7(array2.Length);
     if (array.Length > 0)
     {
         this.stream_0.Write(array, 0, array.Length);
     }
     if (class193_1.method_15() && this.bool_2)
     {
         this.long_3 += this.stream_0.Position;
     }
     if (array2.Length > 0)
     {
         this.stream_0.Write(array2, 0, array2.Length);
     }
     this.long_1 += (long)(30 + array.Length + array2.Length);
     this.class193_0 = class193_1;
     this.class192_0.vmethod_1();
     if (@enum == Enum31.const_1)
     {
         this.class194_0.method_0();
         this.class194_0.method_7(int_);
     }
     this.long_0 = 0L;
     if (class193_1.method_0())
     {
         if (class193_1.method_25() < 0L)
         {
             this.method_12(class193_1.method_17() << 16);
             return;
         }
         this.method_12(class193_1.method_25());
     }
 }
예제 #4
0
 public override void vmethod_0()
 {
     if (this.arrayList_0 == null)
     {
         return;
     }
     if (this.class193_0 != null)
     {
         this.method_11();
     }
     long num = (long)this.arrayList_0.Count;
     long num2 = 0L;
     foreach (Class193 @class in this.arrayList_0)
     {
         this.method_8(33639248);
         this.method_7(45);
         this.method_7(@class.method_11());
         this.method_7(@class.method_4());
         this.method_7((int)((short)@class.method_27()));
         this.method_8((int)@class.method_17());
         this.method_8((int)@class.method_25());
         if ([email protected]_14() && @class.method_23() < 4294967295L)
         {
             this.method_8((int)@class.method_23());
         }
         else
         {
             this.method_8(-1);
         }
         if ([email protected]_14() && @class.method_21() < 4294967295L)
         {
             this.method_8((int)@class.method_21());
         }
         else
         {
             this.method_8(-1);
         }
         byte[] array = Class186.smethod_4(@class.method_4(), @class.method_20());
         if (array.Length > 65535)
         {
             throw new ZipException("Name too long.");
         }
         Class202 class2 = new Class202(@class.method_29());
         if (@class.method_16())
         {
             class2.method_8();
             if (@class.method_14() || @class.method_21() >= 4294967295L)
             {
                 class2.method_12(@class.method_21());
             }
             if (@class.method_14() || @class.method_23() >= 4294967295L)
             {
                 class2.method_12(@class.method_23());
             }
             if (@class.method_6() >= 4294967295L)
             {
                 class2.method_12(@class.method_6());
             }
             class2.method_9(1);
         }
         else
         {
             class2.method_13(1);
         }
         byte[] array2 = class2.method_0();
         byte[] array3 = (@class.method_32() != null) ? Class186.smethod_4(@class.method_4(), @class.method_32()) : new byte[0];
         if (array3.Length > 65535)
         {
             throw new ZipException("Comment too long.");
         }
         this.method_7(array.Length);
         this.method_7(array2.Length);
         this.method_7(array3.Length);
         this.method_7(0);
         this.method_7(0);
         if (@class.method_8() != -1)
         {
             this.method_8(@class.method_8());
         }
         else if (@class.method_33())
         {
             this.method_8(16);
         }
         else
         {
             this.method_8(0);
         }
         if (@class.method_6() >= 4294967295L)
         {
             this.method_8(-1);
         }
         else
         {
             this.method_8((int)@class.method_6());
         }
         if (array.Length > 0)
         {
             this.stream_0.Write(array, 0, array.Length);
         }
         if (array2.Length > 0)
         {
             this.stream_0.Write(array2, 0, array2.Length);
         }
         if (array3.Length > 0)
         {
             this.stream_0.Write(array3, 0, array3.Length);
         }
         num2 += (long)(46 + array.Length + array2.Length + array3.Length);
     }
     using (Stream25 stream = new Stream25(this.stream_0))
     {
         stream.method_1(num, num2, this.long_1, this.byte_1);
     }
     this.arrayList_0 = null;
 }
예제 #5
0
        public void method_10(Class193 class193_1)
        {
            if (class193_1 == null)
            {
                throw new ArgumentNullException("entry");
            }
            if (this.arrayList_0 == null)
            {
                throw new InvalidOperationException("ZipOutputStream was finished");
            }
            if (this.class193_0 != null)
            {
                this.method_11();
            }
            if (this.arrayList_0.Count == 2147483647)
            {
                throw new ZipException("Too many entries for Zip file");
            }
            Enum31 @enum = class193_1.method_27();
            int    int_  = this.int_0;

            class193_1.method_5(class193_1.method_4() & 2048);
            this.bool_2 = false;
            bool flag = true;

            if (@enum == Enum31.const_0)
            {
                class193_1.method_5(class193_1.method_4() & -9);
                if (class193_1.method_23() >= 0L)
                {
                    if (class193_1.method_21() < 0L)
                    {
                        class193_1.method_22(class193_1.method_23());
                    }
                    else if (class193_1.method_21() != class193_1.method_23())
                    {
                        throw new ZipException("Method STORED, but compressed size != size");
                    }
                }
                else if (class193_1.method_21() >= 0L)
                {
                    class193_1.method_24(class193_1.method_21());
                }
                if (class193_1.method_21() < 0L || class193_1.method_25() < 0L)
                {
                    if (base.method_0())
                    {
                        flag = false;
                    }
                    else
                    {
                        @enum = Enum31.const_1;
                        int_  = 0;
                    }
                }
            }
            if (@enum == Enum31.const_1)
            {
                if (class193_1.method_21() == 0L)
                {
                    class193_1.method_24(class193_1.method_21());
                    class193_1.method_26(0L);
                    @enum = Enum31.const_0;
                }
                else if (class193_1.method_23() < 0L || class193_1.method_21() < 0L || class193_1.method_25() < 0L)
                {
                    flag = false;
                }
            }
            if (!flag)
            {
                if (!base.method_0())
                {
                    class193_1.method_5(class193_1.method_4() | 8);
                }
                else
                {
                    this.bool_2 = true;
                }
            }
            if (base.method_1() != null)
            {
                class193_1.method_1(true);
                if (class193_1.method_25() < 0L)
                {
                    class193_1.method_5(class193_1.method_4() | 8);
                }
            }
            class193_1.method_7(this.long_1);
            class193_1.method_28(@enum);
            this.enum31_0 = @enum;
            this.long_3   = -1L;
            if (this.enum30_0 == Enum30.const_1 || (class193_1.method_21() < 0L && this.enum30_0 == Enum30.const_2))
            {
                class193_1.method_13();
            }
            this.method_8(67324752);
            this.method_7(class193_1.method_11());
            this.method_7(class193_1.method_4());
            this.method_7((int)((byte)@enum));
            this.method_8((int)class193_1.method_17());
            if (flag)
            {
                this.method_8((int)class193_1.method_25());
                if (class193_1.method_15())
                {
                    this.method_8(-1);
                    this.method_8(-1);
                }
                else
                {
                    this.method_8(class193_1.method_0() ? ((int)class193_1.method_23() + 12) : ((int)class193_1.method_23()));
                    this.method_8((int)class193_1.method_21());
                }
            }
            else
            {
                if (this.bool_2)
                {
                    this.long_2 = this.stream_0.Position;
                }
                this.method_8(0);
                if (this.bool_2)
                {
                    this.long_3 = this.stream_0.Position;
                }
                if (class193_1.method_15() && this.bool_2)
                {
                    this.method_8(-1);
                    this.method_8(-1);
                }
                else
                {
                    this.method_8(0);
                    this.method_8(0);
                }
            }
            byte[] array = Class186.smethod_4(class193_1.method_4(), class193_1.method_20());
            if (array.Length > 65535)
            {
                throw new ZipException("Entry name too long.");
            }
            Class202 @class = new Class202(class193_1.method_29());

            if (class193_1.method_15() && (flag || this.bool_2))
            {
                @class.method_8();
                if (flag)
                {
                    @class.method_12(class193_1.method_21());
                    @class.method_12(class193_1.method_23());
                }
                else
                {
                    @class.method_12(-1L);
                    @class.method_12(-1L);
                }
                @class.method_9(1);
                if ([email protected]_6(1))
                {
                    throw new ZipException("Internal error cant find extra data");
                }
                if (this.bool_2)
                {
                    this.long_3 = (long)@class.method_4();
                }
            }
            else
            {
                @class.method_13(1);
            }
            byte[] array2 = @class.method_0();
            this.method_7(array.Length);
            this.method_7(array2.Length);
            if (array.Length > 0)
            {
                this.stream_0.Write(array, 0, array.Length);
            }
            if (class193_1.method_15() && this.bool_2)
            {
                this.long_3 += this.stream_0.Position;
            }
            if (array2.Length > 0)
            {
                this.stream_0.Write(array2, 0, array2.Length);
            }
            this.long_1    += (long)(30 + array.Length + array2.Length);
            this.class193_0 = class193_1;
            this.class192_0.vmethod_1();
            if (@enum == Enum31.const_1)
            {
                this.class194_0.method_0();
                this.class194_0.method_7(int_);
            }
            this.long_0 = 0L;
            if (class193_1.method_0())
            {
                if (class193_1.method_25() < 0L)
                {
                    this.method_12(class193_1.method_17() << 16);
                    return;
                }
                this.method_12(class193_1.method_25());
            }
        }
예제 #6
0
        public override void vmethod_0()
        {
            if (this.arrayList_0 == null)
            {
                return;
            }
            if (this.class193_0 != null)
            {
                this.method_11();
            }
            long num  = (long)this.arrayList_0.Count;
            long num2 = 0L;

            foreach (Class193 @class in this.arrayList_0)
            {
                this.method_8(33639248);
                this.method_7(45);
                this.method_7(@class.method_11());
                this.method_7(@class.method_4());
                this.method_7((int)((short)@class.method_27()));
                this.method_8((int)@class.method_17());
                this.method_8((int)@class.method_25());
                if ([email protected]_14() && @class.method_23() < 4294967295L)
                {
                    this.method_8((int)@class.method_23());
                }
                else
                {
                    this.method_8(-1);
                }
                if ([email protected]_14() && @class.method_21() < 4294967295L)
                {
                    this.method_8((int)@class.method_21());
                }
                else
                {
                    this.method_8(-1);
                }
                byte[] array = Class186.smethod_4(@class.method_4(), @class.method_20());
                if (array.Length > 65535)
                {
                    throw new ZipException("Name too long.");
                }
                Class202 class2 = new Class202(@class.method_29());
                if (@class.method_16())
                {
                    class2.method_8();
                    if (@class.method_14() || @class.method_21() >= 4294967295L)
                    {
                        class2.method_12(@class.method_21());
                    }
                    if (@class.method_14() || @class.method_23() >= 4294967295L)
                    {
                        class2.method_12(@class.method_23());
                    }
                    if (@class.method_6() >= 4294967295L)
                    {
                        class2.method_12(@class.method_6());
                    }
                    class2.method_9(1);
                }
                else
                {
                    class2.method_13(1);
                }
                byte[] array2 = class2.method_0();
                byte[] array3 = (@class.method_32() != null) ? Class186.smethod_4(@class.method_4(), @class.method_32()) : new byte[0];
                if (array3.Length > 65535)
                {
                    throw new ZipException("Comment too long.");
                }
                this.method_7(array.Length);
                this.method_7(array2.Length);
                this.method_7(array3.Length);
                this.method_7(0);
                this.method_7(0);
                if (@class.method_8() != -1)
                {
                    this.method_8(@class.method_8());
                }
                else if (@class.method_33())
                {
                    this.method_8(16);
                }
                else
                {
                    this.method_8(0);
                }
                if (@class.method_6() >= 4294967295L)
                {
                    this.method_8(-1);
                }
                else
                {
                    this.method_8((int)@class.method_6());
                }
                if (array.Length > 0)
                {
                    this.stream_0.Write(array, 0, array.Length);
                }
                if (array2.Length > 0)
                {
                    this.stream_0.Write(array2, 0, array2.Length);
                }
                if (array3.Length > 0)
                {
                    this.stream_0.Write(array3, 0, array3.Length);
                }
                num2 += (long)(46 + array.Length + array2.Length + array3.Length);
            }
            using (Stream25 stream = new Stream25(this.stream_0))
            {
                stream.method_1(num, num2, this.long_1, this.byte_1);
            }
            this.arrayList_0 = null;
        }