private ArchiveEntryType GetArchiveEntryType(byte[] fileHeader)
        {
            if (ElfFile.IsElfFile(fileHeader))
            {
                ElfHeader elfHeader = ElfFile.ReadHeader(fileHeader);

                if (elfHeader.@class == ElfClass.Elf32)
                {
                    return(ArchiveEntryType.Executable32);
                }
                else
                {
                    return(ArchiveEntryType.Executable64);
                }
            }

            return(ArchiveEntryType.None);
        }
Пример #2
0
        private static void Main(string[] args)
        {
            var(sourceFolder, targetFolder) = ParseCommandLine(args);
            if (string.IsNullOrEmpty(sourceFolder) || string.IsNullOrEmpty(targetFolder))
            {
                Usage();
                return;
            }

            var model = new FileListModel();

            var allFiles = Directory.EnumerateFiles(sourceFolder, "*.*", SearchOption.AllDirectories)
                           .ToList();

            Console.WriteLine("Исполнимые файлы:");
            foreach (var sourceFileName in allFiles.Where(fileName => PeFile.IsPeFile(fileName) || ElfFile.IsElfFile(fileName)))
            {
                var relativeFileName = Path.GetRelativePath(sourceFolder, sourceFileName);
                Console.WriteLine("  " + relativeFileName);
                var targetFileName = Path.Combine(targetFolder, relativeFileName);
                Directory.CreateDirectory(Path.GetDirectoryName(targetFileName));
                File.Copy(sourceFileName, targetFileName);

                model.AddFile(targetFileName, relativeFileName);
            }

            Console.WriteLine("Файлы скопированы");

            File.WriteAllText("FileListReport.html", new FileListTemplate(model).TransformText());

            Console.WriteLine("Отчёт создан");
        }