📜  资产查找器 - C# (1)

📅  最后修改于: 2023-12-03 14:57:47.198000             🧑  作者: Mango

资产查找器 - C#

资产查找器是一款基于C#编程语言开发的工具,旨在帮助用户快速查找目标系统中的所有资产信息,并将结果导出为Excel文件。本程序支持对多种资产类型进行查找,包括但不限于IP地址、MAC地址、域名、端口等。

特性
  • 支持多种资产类型的查找
  • 通过多种方式进行资产信息的查询,包括但不限于精确查找、批量查找、模糊查找等
  • 支持通过Excel表格进行导入与导出
  • 支持对结果进行排序
  • 支持自定义文件名和文件保存路径
使用方法
1. 安装

本程序可以直接下载源代码进行编译,也可以直接下载可执行文件进行使用。

2. 参数配置

使用本程序前,需要先进行参数配置。用户可以通过编辑app.config文件进行配置。

<configuration>
  <appSettings>
    <!-- 资产IP地址的文件路径 -->
    <add key="ipFilePath" value="D:\ip.txt"/>
    <!-- 资产MAC地址的文件路径 -->
    <add key="macFilePath" value="D:\mac.txt"/>
    <!-- 资产域名的文件路径 -->
    <add key="domainFilePath" value="D:\domain.txt"/>
    <!-- 资产端口的文件路径 -->
    <add key="portFilePath" value="D:\port.txt"/>
    <!-- 导出的Excel文件名 -->
    <add key="exportFileName" value="Result.xlsx"/>
    <!-- 导出的Excel文件保存路径 -->
    <add key="exportFilePath" value="D:\"/>
  </appSettings>
</configuration>

上述参数含义如下:

  • ipFilePath:资产IP地址的文件路径
  • macFilePath:资产MAC地址的文件路径
  • domainFilePath:资产域名的文件路径
  • portFilePath:资产端口的文件路径
  • exportFileName:导出的Excel文件名
  • exportFilePath:导出的Excel文件保存路径

需要注意的是,本程序要求资产信息必须以纯文本形式保存,每行一个,文件编码为UTF-8。

3. 运行程序

在参数配置完成后,用户可以直接启动程序,进入主界面。用户可以根据需求选择查找资产类型并输入要查找的内容。

下图为程序主界面:

主界面

4. 导出资产信息

查找完成后,用户可以将结果导出为Excel文件。点击“导出结果”按钮即可生成结果Excel文件。

下图为生成结果Excel文件后的部分内容:

结果Excel文件

代码片段

以下是本程序主要代码片段:

// 定义资产信息类
public class AssetInfo
{
    public string IP { get; set; }
    public string MAC { get; set; }
    public string Domain { get; set; }
    public int Port { get; set; }
}

// 定义读取文件函数
private static List<string> ReadFile(string filePath)
{
    List<string> lineList = new List<string>();
    try
    {
        StreamReader sr = new StreamReader(filePath, Encoding.Default);
        string line;
        while ((line = sr.ReadLine()) != null)
        {
            lineList.Add(line.Trim());
        }
        sr.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    return lineList;
}

// 定义导出数据函数
private static void ExportData(List<AssetInfo> assetList)
{
    ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
    ExcelPackage pck = new ExcelPackage();
    ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Sheet1");

    // 设置表头
    ws.Cells[1, 1].Value = "IP地址";
    ws.Cells[1, 2].Value = "MAC地址";
    ws.Cells[1, 3].Value = "域名";
    ws.Cells[1, 4].Value = "端口";

    // 填充资产信息
    for (int i = 0; i < assetList.Count; i++)
    {
        ws.Cells[i + 2, 1].Value = assetList[i].IP;
        ws.Cells[i + 2, 2].Value = assetList[i].MAC;
        ws.Cells[i + 2, 3].Value = assetList[i].Domain;
        ws.Cells[i + 2, 4].Value = assetList[i].Port;
    }

    // 格式化Excel表格
    ws.Cells[1, 1, 1, 4].Style.Font.Bold = true;
    ws.Cells[1, 1, assetList.Count + 1, 4].AutoFitColumns();

    // 保存文件
    string fileName = ConfigurationManager.AppSettings["exportFileName"];
    string filePath = ConfigurationManager.AppSettings["exportFilePath"] + fileName;
    FileInfo fileInfo = new FileInfo(filePath);
    if (fileInfo.Exists)
    {
        fileInfo.Delete();
    }
    pck.SaveAs(fileInfo);

    MessageBox.Show("导出完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

以上代码片段包括了定义资产信息类、读取文件函数以及导出数据函数。读取函数使用StreamReader类实现,导出函数使用ExcelPackage库实现。