可信代码库-软件详情增加恶意代码信息

This commit is contained in:
付民康
2025-04-16 15:26:53 +08:00
parent 08688bdaa7
commit e6496b34f8

View File

@@ -9,41 +9,61 @@
<div class="malware-detail-card mb-[16px]">
<p class="title">文件基本信息</p>
<div class="content">
<!-- <div class="flex items-center">-->
<!-- <div class="w-[96px] pr-[20px] flex-shrink-0 text-[#595959]">文件名称</div>-->
<!-- <div class="single-line-ellipsis">{{ props.detailRow?.packageFullName }}</div>-->
<!-- <d-icon name="icon-copy" class="ml-[8px] cursor-pointer" @click="handleCopy(props.detailRow?.packageFullName)" />-->
<!-- </div>-->
<div class="flex items-center">
<div class="w-[96px] pr-[20px] flex-shrink-0 text-[#595959]">文件路径</div>
<div class="single-line-ellipsis">{{ malwareDetails?.filePath }}</div>
<d-icon name="icon-copy" class="ml-[8px] cursor-pointer" @click="handleCopy(malwareDetails?.filePath)" />
<div class="w-[160px] pr-[20px] flex-shrink-0 text-[#595959]">文件名称</div>
<div class="single-line-ellipsis">{{ props.detailRow?.packageFullName || '--' }}</div>
<d-icon name="icon-copy" class="ml-[8px] cursor-pointer" @click="handleCopy(props.detailRow?.packageFullName)" />
</div>
<div class="flex items-center">
<div class="w-[96px] pr-[20px] flex-shrink-0 text-[#595959]">切片类型</div>
<div class="single-line-ellipsis">{{ malwareDetails?.codeType }}</div>
<d-icon name="icon-copy" class="ml-[8px] cursor-pointer" @click="handleCopy(malwareDetails?.codeType)" />
<div class="w-[160px] pr-[20px] flex-shrink-0 text-[#595959]">文件路径</div>
<div class="single-line-ellipsis">{{ props.detailRow?.packagePath || '--' }}</div>
<d-icon name="icon-copy" class="ml-[8px] cursor-pointer" @click="handleCopy(props.detailRow?.packagePath)" />
</div>
<div class="flex items-center">
<div class="w-[96px] pr-[20px] flex-shrink-0 text-[#595959]">标识符</div>
<div class="single-line-ellipsis">{{ malwareDetails?.identifier }}</div>
<d-icon name="icon-copy" class="ml-[8px] cursor-pointer" @click="handleCopy(malwareDetails?.identifier)" />
<div class="w-[160px] pr-[20px] flex-shrink-0 text-[#595959]">文件版本号</div>
<div class="single-line-ellipsis">{{ props.detailRow?.packageVersion || '--' }}</div>
<d-icon name="icon-copy" class="ml-[8px] cursor-pointer" @click="handleCopy(props.detailRow?.packageVersion)" />
</div>
<div class="flex items-center">
<div class="w-[96px] pr-[20px] flex-shrink-0 text-[#595959]">token数量</div>
<div class="single-line-ellipsis">{{ malwareDetails?.tokenNum }}</div>
<d-icon name="icon-copy" class="ml-[8px] cursor-pointer" @click="handleCopy(malwareDetails?.tokenNum)" />
<div class="w-[160px] pr-[20px] flex-shrink-0 text-[#595959]">LLM名称</div>
<div class="single-line-ellipsis">{{ props.detailRow?.llmName || '--' }}</div>
<d-icon name="icon-copy" class="ml-[8px] cursor-pointer" @click="handleCopy(props.detailRow?.llmName)" />
</div>
<div class="flex items-center">
<div class="w-[96px] pr-[20px] flex-shrink-0 text-[#595959]">代码片段</div>
<div class="single-line-ellipsis">{{ malwareDetails?.code }}</div>
<d-icon name="icon-copy" class="ml-[8px] cursor-pointer" @click="handleCopy(malwareDetails?.code)" />
<div class="w-[160px] pr-[20px] flex-shrink-0 text-[#595959]">敏感API总数</div>
<div class="single-line-ellipsis">{{ props.detailRow?.totalApisCalledCount }}</div>
</div>
<!-- <div class="flex items-center">-->
<!-- <div class="w-[96px] pr-[20px] flex-shrink-0 text-[#595959]">文件sha256</div>-->
<!-- <div :title="malwareDetails?.code" class="single-line-ellipsis">{{ malwareDetails?.code }}</div>-->
<!-- <d-icon name="icon-copy" class="ml-[8px] cursor-pointer" @click="handleCopy(malwareDetails?.code)" />-->
<!-- </div>-->
<div class="flex items-center">
<div class="w-[160px] pr-[20px] flex-shrink-0 text-[#595959]">可疑文件总数</div>
<div class="single-line-ellipsis">{{ props.detailRow?.suspiciousFilesCount }}</div>
</div>
<div class="flex items-center">
<div class="w-[160px] pr-[20px] flex-shrink-0 text-[#595959]">是否恶意代码</div>
<div class="single-line-ellipsis">
<span class="card-val" v-if="props.detailRow?.isMalicious===0">
<d-tag color="#5e7ce0" size="sm"></d-tag>
</span>
<span class="card-val" v-else>
<d-tag color="#c7000b" size="sm"></d-tag>
</span>
</div>
</div>
<div class="flex items-center">
<div class="w-[160px] pr-[20px] flex-shrink-0 text-[#595959]">大模型是否正常回复</div>
<div class="single-line-ellipsis">
<span class="card-val" v-if="props.detailRow?.isModelResponded===0">
<d-tag color="#5e7ce0" size="sm"></d-tag>
</span>
<span class="card-val" v-else>
<d-tag color="#c7000b" size="sm"></d-tag>
</span>
</div>
</div>
<!-- <div class="flex items-center">-->
<!-- <div class="w-[160px] pr-[20px] flex-shrink-0 text-[#595959]">文件sha256</div>-->
<!-- <div :title="malwareDetails?.code" class="single-line-ellipsis">{{ malwareDetails?.code }}</div>-->
<!-- <d-icon name="icon-copy" class="ml-[8px] cursor-pointer" @click="handleCopy(malwareDetails?.code)" />-->
<!-- </div>-->
</div>
</div>
@@ -76,17 +96,17 @@
</template>
</d-table>
<!-- <d-pagination-->
<!-- class="flex justify-end mt-[20px]"-->
<!-- :total="pager.total"-->
<!-- v-model:pageSize="pager.pageSize"-->
<!-- v-model:pageIndex="pager.pageIndex"-->
<!-- :can-view-total="true"-->
<!-- :can-change-page-size="true"-->
<!-- :max-items="5"-->
<!-- @page-index-change="pageIndexChange"-->
<!-- @page-size-change="pageSizeChange"-->
<!-- />-->
<!-- <d-pagination-->
<!-- class="flex justify-end mt-[20px]"-->
<!-- :total="pager.total"-->
<!-- v-model:pageSize="pager.pageSize"-->
<!-- v-model:pageIndex="pager.pageIndex"-->
<!-- :can-view-total="true"-->
<!-- :can-change-page-size="true"-->
<!-- :max-items="5"-->
<!-- @page-index-change="pageIndexChange"-->
<!-- @page-size-change="pageSizeChange"-->
<!-- />-->
</div>
</div>
@@ -139,15 +159,15 @@
</div>
</div>
<!-- <div class="malware-detail-card flex-1 h-0">-->
<!-- <p class="title">关键日志</p>-->
<!-- <div class="content flex flex-col flex-1 h-0">-->
<!-- <div class="log-box flex-1 overflow-y-scroll">-->
<!-- {{ malwareDetails?.analysis }}-->
<!-- {{ malwareDetails?.code }}-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="malware-detail-card flex-1 h-0">-->
<!-- <p class="title">关键日志</p>-->
<!-- <div class="content flex flex-col flex-1 h-0">-->
<!-- <div class="log-box flex-1 overflow-y-scroll">-->
<!-- {{ malwareDetails?.analysis }}-->
<!-- {{ malwareDetails?.code }}-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
</div>
</div>
</d-drawer>
@@ -180,12 +200,10 @@ async function getMalwareDetails(id) {
const res = await getMalwareDetailApi2({
current: 1,
size: 10,
malwareId: id
maliciousId: id
});
if (res.data.code === 200) {
malwareDetails.value = res.data.data;
} else {
Message.error('查询详情失败');
if(res.data.records&&res.data.records.length>0) {
malwareDetails.value = res.data.records[0];
}
} catch (e) {
Message.error('接口错误,查询详情失败');