Skip to content

Latest commit

 

History

History
20 lines (15 loc) · 3.08 KB

PackageAssemblyToCsv.md

File metadata and controls

20 lines (15 loc) · 3.08 KB

PackageAssemblyToCsv

This driver performs detailed analysis of .NET assemblies contained in NuGet packages. The whole NuGet package is downloaded in the process so any details available in an .NET assembly (or even native binary) could be discovered by this driver.

CatalogScanDriverType enum value PackageAssemblyToCsv
Driver implementation PackageAssemblyToCsvDriver
Processing mode process latest catalog leaf per package ID and version
Cursor dependencies LoadPackageArchive: needs ZIP file listed to check for known extensions
Components using driver output Kusto ingestion via KustoIngestionMessageProcessor, since this driver produces CSV data
Temporary storage config Table Storage:
CsvRecordTableName (name prefix): holds CSV records before they are added to a CSV blob
TaskStateTableName (name prefix): tracks completion of CSV blob aggregation
Persistent storage config Blob Storage:
PackageAssemblyContainerName: contains CSVs for the PackageAssemblies table
Output CSV tables PackageAssemblies

Algorithm

Any ZIP that contains a known assembly extension (e.g. .dll, .exe) is fully downloaded. This cached ZIP metadata is used to determine whether the full ZIP should be downloaded for further analysis. Any ZIP file entry with an assembly extension is analyzed using .NET's System.Reflection.Metadata API. Most of the analysis is focus on .NET assemblies, instead of native (unmanaged) code.

For each file with a known assembly extension, a CSV record is produced containing all assembly information that could be gathered.