private void DumpFile()

in src/BinSkim.Driver/DumpCommand.cs [48:131]


        private void DumpFile(string target, bool verbose)
        {
            PE pe;
            var sb = new StringBuilder();
            try
            {
                pe = new PE(target);
            }
            catch (UnauthorizedAccessException)
            {
                Console.WriteLine(Path.GetFileName(target) + ": Unauthorized access exception");
                return;
            }

            sb.AppendLine(Path.GetFileName(pe.FileName) + ":");

            if (verbose)
            {
                sb.AppendLine(Indent + "Path: " + pe.FileName);
            }

            sb.Append(Indent + "Attr: ");

            if (!pe.IsPEFile)
            {
                sb.AppendLine("Not a portable executable");
                sb.AppendLine();
                return;
            }

            string language = pe.IsManaged ? "Pure Managed" : "Native";
            if (pe.IsManaged && !pe.IsILOnly) { language = "Mixed Managed"; }
            sb.Append(language);

            string machine = pe.Machine.ToString();
            sb.Append(Delimiter + machine);

            string subsystem = pe.Subsystem.ToString();
            sb.Append(Delimiter + subsystem);

            if (pe.IsKernelMode)
            {
                sb.Append(Delimiter + "Kernel Mode");
            }

            if (pe.IsResourceOnly)
            {
                sb.Append(Delimiter + "Resource Only");
            }

            sb.Append(Delimiter + "Link " + pe.LinkerVersion.ToString());

            sb.AppendLine(); // Close comma-separated attributes line

            sb.Append(Indent + "Pdb : ");
            Pdb pdb = null;
            try
            {
                string extension = Path.GetExtension(pe.FileName);
                pdb = extension.Equals(".pdb", StringComparison.OrdinalIgnoreCase)
                    ? new Pdb(pe.FileName, false)
                    : new Pdb(pe.FileName, null, null, false);
            }
            catch (PdbException pdbParseException)
            {
                sb.AppendLine(pdbParseException.ExceptionDisplayMessage);
            }

            if (pdb != null)
            {
                if (verbose)
                {
                    sb.AppendLine(pdb.PdbLocation);
                }
                else
                {
                    sb.AppendLine(Path.GetFileName(pdb.PdbLocation));
                }
            }

            sb.AppendLine(Indent + "SHA1: " + pe.SHA1Hash);

            Console.Out.WriteLineAsync(sb.ToString());
        }