Exemple #1
0
    public void ParseTest()
    {
        var files = Directory.GetFiles(@"D:\Code\SDB\SBD.Test\Test Files", "*.sdb");

        var f = @"C:\Temp\sdb\CVE-2013-3893.sdb";

        var ss1 = Sdb.LoadFile(f);

        foreach (var file in files)
        {
            Debug.WriteLine($"File: {file}");
            var ss = Sdb.LoadFile(file);

            //    File.WriteAllText($@"C:\temp\sdb\{Path.GetFileName(file)}.json", ss.Children.ToJson());

            Debug.WriteLine("METRICS");
            foreach (var metricsKey in SdbFile.Metrics.Keys)
            {
                Debug.WriteLine($"{metricsKey} (0x{metricsKey:X}): {SdbFile.Metrics[metricsKey]}");
            }

//                foreach (var chunk in ss.Children)
//                {
//                    Debug.WriteLine($"Chunk: {chunk.TypeId} Child count: {chunk.Children.Count:N0}");
//
//                    var exe = chunk.Children.Where(t => t.TypeId == SdbFile.TagValue.TAG_LAYER).ToList();
//
//                    Debug.WriteLine($"Exe count: {exe.Count:N0}, string count: {SdbFile.StringTableEntries.Count:N0}");
//
//                    foreach (var sdbEntry in exe)
//                    {
//                        Debug.WriteLine(sdbEntry.Children.Single(t => t.TypeId == SdbFile.TagValue.TAG_NAME));
//                    }
//
////                foreach (var chunkChild in chunk.Children)
////                {
////                    DumpChildren(chunkChild, 1);
////                }
//
//                    //     Debug.WriteLine($"ID: {chunk.TypeId} ({chunk.TypeId:X}) bytes len: 0x{chunk.Bytes.Length:X}");
//
//                    //      ProcessBytes(chunk);
//
//                    //  var fname = $"{Path.GetFileName(sourceFile)}_{chunk.TypeId}_{chunk.Bytes.Length:X}.bin";
//
//                    //    File.WriteAllBytes(Path.Combine(@"C:\temp",fname),chunk.Bytes);
//                }
        }
    }