diff --git a/src/assets/css/components/views/charts2/entityDetailTabs.scss b/src/assets/css/components/views/charts2/entityDetailTabs.scss index 19c1eb7c..07586937 100644 --- a/src/assets/css/components/views/charts2/entityDetailTabs.scss +++ b/src/assets/css/components/views/charts2/entityDetailTabs.scss @@ -83,6 +83,59 @@ .entity-detail-event-block { width: calc(100% - 2px); + .behavior-pattern { + height:100% ; + position: relative; + display:flex; + flex-direction: row; + .behavior-pattern-legend { + display:flex; + flex-direction: column; + height: 100%; + display: flex; + padding:10px 18px 10px 18px; + width:500px; + display: flex; + .behavior-pattern-legend__item { + display:flex; + flex-direction: row; + font-size: 12px; + color: #353636; + line-height: 12px; + margin-bottom:11px; + .legend-icon { + width: 8px; + height: 8px; + margin: 3px 8px 0 0; + border-radius: 1px;; + } + .legend-name { + width:200px; + font-weight: 400; + } + .legend-value{ + display: flex; + justify-content: left; + margin-left:30px; + width:100px; + font-weight: 500; + } + .legend-percent { + margin-left:30px; + width:80px; + justify-content: left; + display: flex; + font-weight: 500; + } + } + } + .behavior-pattern-chart{ + height: calc(100% - 50px); + width:calc(100% - 600px); + position: relative + } + } + } .entity-detail-event-error { diff --git a/src/assets/css/font/iconfont.css b/src/assets/css/font/iconfont.css index 749f85ee..dc635bab 100644 --- a/src/assets/css/font/iconfont.css +++ b/src/assets/css/font/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "cn-icon"; /* Project id 2614877 */ - src: url('iconfont.woff2?t=1693386443164') format('woff2'), - url('iconfont.woff?t=1693386443164') format('woff'), - url('iconfont.ttf?t=1693386443164') format('truetype'); + src: url('iconfont.woff2?t=1697794140569') format('woff2'), + url('iconfont.woff?t=1697794140569') format('woff'), + url('iconfont.ttf?t=1697794140569') format('truetype'); } .cn-icon { @@ -13,6 +13,10 @@ -moz-osx-font-smoothing: grayscale; } +.cn-icon-behavior:before { + content: "\e61c"; +} + .cn-icon-category-group:before { content: "\e6c7"; } diff --git a/src/assets/css/font/iconfont.js b/src/assets/css/font/iconfont.js index 24116b4c..717bc817 100644 --- a/src/assets/css/font/iconfont.js +++ b/src/assets/css/font/iconfont.js @@ -1 +1 @@ -window._iconfont_svg_string_2614877='',function(l){var a=(a=document.getElementsByTagName("script"))[a.length-1],c=a.getAttribute("data-injectcss"),a=a.getAttribute("data-disable-injectsvg");if(!a){var h,o,i,m,v,z=function(a,c){c.parentNode.insertBefore(a,c)};if(c&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}h=function(){var a,c=document.createElement("div");c.innerHTML=l._iconfont_svg_string_2614877,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(a=document.body).firstChild?z(c,a.firstChild):a.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(h,0):(o=function(){document.removeEventListener("DOMContentLoaded",o,!1),h()},document.addEventListener("DOMContentLoaded",o,!1)):document.attachEvent&&(i=h,m=l.document,v=!1,s(),m.onreadystatechange=function(){"complete"==m.readyState&&(m.onreadystatechange=null,t())})}function t(){v||(v=!0,i())}function s(){try{m.documentElement.doScroll("left")}catch(a){return void setTimeout(s,50)}t()}}(window); \ No newline at end of file +window._iconfont_svg_string_2614877 = '', (function (l) { var a = (a = document.getElementsByTagName('script'))[a.length - 1]; const c = a.getAttribute('data-injectcss'); var a = a.getAttribute('data-disable-injectsvg'); if (!a) { let h; let o; var i; var v; var m; const z = function (a, c) { c.parentNode.insertBefore(a, c) }; if (c && !l.__iconfont__svg__cssinject__) { l.__iconfont__svg__cssinject__ = !0; try { document.write('') } catch (a) { console && console.log(a) } }h = function () { let a; let c = document.createElement('div'); c.innerHTML = l._iconfont_svg_string_2614877, (c = c.getElementsByTagName('svg')[0]) && (c.setAttribute('aria-hidden', 'true'), c.style.position = 'absolute', c.style.width = 0, c.style.height = 0, c.style.overflow = 'hidden', c = c, (a = document.body).firstChild ? z(c, a.firstChild) : a.appendChild(c)) }, document.addEventListener ? ~['complete', 'loaded', 'interactive'].indexOf(document.readyState) ? setTimeout(h, 0) : (o = function () { document.removeEventListener('DOMContentLoaded', o, !1), h() }, document.addEventListener('DOMContentLoaded', o, !1)) : document.attachEvent && (i = h, v = l.document, m = !1, s(), v.onreadystatechange = function () { v.readyState == 'complete' && (v.onreadystatechange = null, t()) }) } function t () { m || (m = !0, i()) } function s () { try { v.documentElement.doScroll('left') } catch (a) { return void setTimeout(s, 50) }t() } }(window)) diff --git a/src/assets/css/font/iconfont.ttf b/src/assets/css/font/iconfont.ttf index e1807119..7ad6cde8 100644 Binary files a/src/assets/css/font/iconfont.ttf and b/src/assets/css/font/iconfont.ttf differ diff --git a/src/assets/css/font/iconfont.woff b/src/assets/css/font/iconfont.woff index 5d46eb2e..dbbf5903 100644 Binary files a/src/assets/css/font/iconfont.woff and b/src/assets/css/font/iconfont.woff differ diff --git a/src/assets/css/font/iconfont.woff2 b/src/assets/css/font/iconfont.woff2 index f6a9b6c2..12956f95 100644 Binary files a/src/assets/css/font/iconfont.woff2 and b/src/assets/css/font/iconfont.woff2 differ diff --git a/src/utils/api.js b/src/utils/api.js index 3a6072b1..8c52c5e5 100644 --- a/src/utils/api.js +++ b/src/utils/api.js @@ -261,6 +261,7 @@ export const api = { throughput: apiVersion + '/entity/detail/traffic/throughput', security: apiVersion + '/entity/detail/event/security', performance: apiVersion + '/entity/detail/event/performance', + behaviorPattern: apiVersion + '/entity/detail/behavior/ip', // 域名解析:ip相关app、domain domainNameResolutionAboutAppsOfIp: apiVersion + '/entity/detail/ip/relate/apps', domainNameResolutionAboutDomainsOfIp: apiVersion + '/entity/detail/ip/relate/domains', diff --git a/src/utils/constants.js b/src/utils/constants.js index 8ed749e9..927ced3d 100644 --- a/src/utils/constants.js +++ b/src/utils/constants.js @@ -104,7 +104,8 @@ export const entityDetailTabsName = { openPort: 'openPort', digitalCertificate: 'digitalCertificate', securityEvent: 'securityEvent', - performanceEvent: 'performanceEvent' + performanceEvent: 'performanceEvent', + behaviorPattern: 'behaviorPattern' } export const entityDetailRelatedEntitiesShowSize = 100 @@ -1881,6 +1882,7 @@ export const chartColor4 = ['#E5F6F6', '#F2F6EE', '#EBF7FC', '#FCF4EB', '#9FBC1D export const chartColor5 = ['#E26154', '#E7B34E', '#88AF65'] export const chartColor6 = ['#E99F67', '#D9C74B'] +export const chartColorForBehaviorPattern = ['#7acac7', '#b4d38e', '#fee9b9', '#fec396', '#fb9b79', '#e3799c', '#edd5f5', '#868cac', '#a4adde', '#64b4e6'] export const iso36112 = { [storageKey.iso36112Capital]: 'data/countriesWithCapital', [storageKey.iso36112WorldLow]: 'worldChinaLow', @@ -2102,253 +2104,253 @@ export const iso36112 = { } export const countryNameIdMapping = { - "Private IP": "CN", - "Andorra": "AD", - "United Arab Emirates": "AE", - "Afghanistan": "AF", - "Antigua and Barbuda": "AG", - "Anguilla": "AI", - "Albania": "AL", - "Armenia": "AM", - "Angola": "AO", - "Argentina": "AR", - "American Samoa": "AS", - "Austria": "AT", - "Australia": "AU", - "Aruba": "AW", - "Ahvenanmaa": "AX", // TODO 芬兰自治区阿兰群岛,无下钻数据 - "Azerbaijan": "AZ", - "Bosnia and Herzegovina": "BA", - "Barbados": "BB", - "Bangladesh": "BD", - "Belgium": "BE", - "Burkina Faso": "BF", - "Bulgaria": "BG", - "Bahrain": "BH", - "Burundi": "BI", - "Benin": "BJ", - "Saint Barthelemy": "BL", - "Bermuda": "BM", - "Brunei Darussalam": "BN", - "Bolivia": "BO", - "Caribbean Netherlands": "BQ", - "Brazil": "BR", - "Bahamas": "BS", - "Bhutan": "BT", - "Bouvet Island": "BV", // TODO 挪威领地布维岛,下钻地图数据缺失 - "Botswana": "BW", - "Belarus": "BY", - "Belize": "BZ", - "Canada": "CA", - "Cocos (Keeling) Islands": "CC", - "Democratic Republic of the Congo": "CD", - "Central African Republic": "CF", - "Republic of the Congo": "CG", - "Switzerland": "CH", - "Cote D'Ivoire": "CI", - "Cook Islands": "CK", // TODO 新西兰的库克群岛,下钻地图数据缺失 - "Chile": "CL", - "Cameroon": "CM", - "China": "CN", - "Colombia": "CO", - "Costa Rica": "CR", - "Cuba": "CU", - "Cape Verde": "CV", - "Curaao": "CW", - "Christmas Island": "CX", // TODO 澳大利亚的圣诞到,下钻地图数据缺失 - "Cyprus": "CY", - "Czech Republic": "CZ", - "Germany": "DE", - "Djibouti": "DJ", - "Denmark": "DK", - "Dominica": "DM", - "Dominican Republic": "DO", - "Algeria": "DZ", - "Ecuador": "EC", - "Estonia": "EE", - "Egypt": "EG", - "Western Sahara": "EH", // TODO 西撒哈拉地区,下钻地图数据缺失 - "Eritrea": "ER", - "Spain": "ES", - "Ethiopia": "ET", - "Finland": "FI", - "Fiji": "FJ", - "Falkland Islands": "FK", - "Micronesia": "FM", // TODO 密克罗尼西亚联邦,下钻地图数据缺失 - "Faroe Islands": "FO", - "France": "FR", - "Gabon": "GA", - "United Kingdom": "GB", - "Grenada": "GD", - "Georgia": "GE", - "French Guiana": "GF", - "Guernsey": "GG", // TODO 英属根西岛,下钻地图数据缺失 - "Ghana": "GH", - "Gibraltar": "GI", // TODO 英属直布罗陀,下钻地图数据缺失 - "Greenland": "GL", - "Gambia": "GM", - "Guinea": "GN", - "Guadeloupe": "GP", - "Equatorial Guinea": "GQ", - "Greece": "GR", - "South Georgia and The South Sandwich Islands": "GS", - "Guatemala": "GT", - "Guam": "GU", - "Guinea-Bissau": "GW", - "Guyana": "GY", - "Heard Island and McDonald Islands": "HM", // TODO 澳大利亚领地赫德岛和麦克唐纳群岛,下钻地图数据缺失 - "Honduras": "HN", - "Croatia": "HR", - "Haiti": "HT", - "Hungary": "HU", - "Indonesia": "ID", - "Ireland": "IE", - "Israel": "IL", - "Isle of Man": "IM", // TODO 英属马恩岛,下钻地图数据缺失 - "India": "IN", - "British Indian Ocean Territory": "IO", - "Iraq": "IQ", - "Iran": "IR", - "Iceland": "IS", - "Italy": "IT", - "Jersey": "JE", // TODO 英属泽西岛,下钻地图数据缺失 - "Jamaica": "JM", - "Jordan": "JO", - "Japan": "JP", - "Kenya": "KE", - "Kyrgyzstan": "KG", - "Cambodia": "KH", - "Kiribati": "KI", // TODO 基里巴斯共和国,下钻地图数据缺失 - "Comoros": "KM", - "Saint Kitts and Nevis": "KN", - "North Korea": "KP", - "South Korea": "KR", - "Kuwait": "KW", - "Cayman Islands": "KY", - "Kazakhstan": "KZ", - "Laos": "LA", - "Lebanon": "LB", - "Saint Lucia": "LC", - "Liechtenstein": "LI", - "Sri Lanka": "LK", - "Liberia": "LR", - "Lesotho": "LS", - "Lithuania": "LT", - "Luxembourg": "LU", - "Latvia": "LV", - "Libya": "LY", - "Morocco": "MA", - "Monaco": "MC", // TODO 摩纳哥,2平方公里,下钻地图数据缺失 - "Moldova": "MD", - "Montenegro": "ME", - "Saint Martin": "MF", // TODO 法属圣马丁,下钻地图数据缺失 - "Madagascar": "MG", - "Marshall Islands": "MH", // TODO 马绍尔群岛共和国,下钻地图数据缺失 - "The Republic of North Macedonia": "MK", - "Mali": "ML", - "Myanmar": "MM", - "Mongolia": "MN", - "Northern Mariana Islands": "MP", - "Martinique": "MQ", - "Mauritania": "MR", - "Montserrat": "MS", - "Malta": "MT", - "Mauritius": "MU", - "Maldives": "MV", - "Malawi": "MW", - "Mexico": "MX", - "Malaysia": "MY", - "Mozambique": "MZ", - "Namibia": "NA", - "New Caledonia": "NC", // TODO 法属新喀里多尼亚,下钻地图数据缺失 - "Niger": "NE", - "Norfolk Island": "NF", // TODO 澳大利亚属诺福克岛,下钻地图数据缺失 - "Nigeria": "NG", - "Nicaragua": "NI", - "The Netherlands": "NL", - "Norway": "NO", - "Nepal": "NP", - "Nauru": "NR", // TODO 瑙鲁共和国,下钻地图数据缺失 - "Niue": "NU", // TODO 新西兰属纽埃岛,下钻地图数据缺失 - "New Zealand": "NZ", - "Oman": "OM", - "Panama": "PA", - "Peru": "PE", - "French Polynesia": "PF", - "Papua New Guinea": "PG", // TODO 巴布亚新几内亚,下钻地图数据缺失 - "Philippines": "PH", - "Pakistan": "PK", - "Poland": "PL", - "Saint-Pierre and Miquelon": "PM", - "Pitcairn": "PN", // TODO 英属皮特凯恩群岛,下钻地图数据缺失 - "Puerto Rico": "PR", - "Palestine": "PS", - "Portugal": "PT", - "Palau": "PW", // TODO 帕劳共和国,下钻地图数据缺失 - "Paraguay": "PY", - "Qatar": "QA", - "Reunion": "RE", // TODO 法属留尼汪岛,下钻地图数据缺失 - "Romania": "RO", - "Serbia": "RS", - "Russia": "RU", - "Rwanda": "RW", - "Saudi Arabia": "SA", - "Solomon Islands": "SB", - "Seychelles": "SC", - "Sudan": "SD", - "Sweden": "SE", - "Singapore": "SG", - "Saint Helena": "SH", - "Slovenia": "SI", - "Svalbard and Jan Mayen": "SJ", - "Slovakia": "SK", - "Sierra Leone": "SL", - "San Marino": "SM", - "Senegal": "SN", - "Somalia": "SO", - "Suriname": "SR", - "South Sudan": "SS", - "Sao Tome and Principe": "ST", - "El Salvador": "SV", - "Sint Maarten": "SX", // TODO 荷兰属圣马丁,下钻地图数据缺失 - "Syria": "SY", - "Swaziland": "SZ", - "Turks and Caicos Islands": "TC", - "Chad": "TD", - "French Southern and Antarctic Lands": "TF", // TODO 法属南部和南极领地,下钻地图数据缺失 - "Togo": "TG", - "Thailand": "TH", - "Tajikistan": "TJ", - "Tokelau": "TK", // TODO 新西兰属托克劳群岛,下钻地图数据缺失 - "East Timor": "TL", - "Turkmenistan": "TM", - "Tunisia": "TN", - "Tonga": "TO", // TODO 汤加共和国,下钻地图数据缺失 - "Turkey": "TR", - "Trinidad and Tobago": "TT", - "Tuvalu": "TV", // TODO 图瓦卢,下钻地图数据缺失 - "Tanzania": "TZ", - "Ukraine": "UA", - "Uganda": "UG", - "US Minor Outlying Islands": "UM", // TODO 美国本土外小岛屿,一共9座,分布很散,上层坐标缺失,下钻地图数据缺失 - "United States": "US", - "Uruguay": "UY", - "Uzbekistan": "UZ", - "Vatican City": "VA", - "Saint Vincent and the Grenadines": "VC", - "Venezuela": "VE", - "British Virgin Islands": "VG", - "United States Virgin Islands": "VI", - "Viet Nam": "VN", - "Vanuatu": "VU", // TODO 瓦努阿图共和国,下钻地图数据缺失 - "Wallis and Futuna": "WF", // TODO 法属瓦利斯和富图纳群岛,下钻地图数据缺失 - "Samoa": "WS", - "The Republic of Kosovo": "XK", - "Yemen": "YE", - "Mayotte": "YT", // TODO 法属马约特岛,下钻地图数据缺失 - "South Africa": "ZA", - "Zambia": "ZM", - "Zimbabwe": "ZW" + 'Private IP': 'CN', + Andorra: 'AD', + 'United Arab Emirates': 'AE', + Afghanistan: 'AF', + 'Antigua and Barbuda': 'AG', + Anguilla: 'AI', + Albania: 'AL', + Armenia: 'AM', + Angola: 'AO', + Argentina: 'AR', + 'American Samoa': 'AS', + Austria: 'AT', + Australia: 'AU', + Aruba: 'AW', + Ahvenanmaa: 'AX', // TODO 芬兰自治区阿兰群岛,无下钻数据 + Azerbaijan: 'AZ', + 'Bosnia and Herzegovina': 'BA', + Barbados: 'BB', + Bangladesh: 'BD', + Belgium: 'BE', + 'Burkina Faso': 'BF', + Bulgaria: 'BG', + Bahrain: 'BH', + Burundi: 'BI', + Benin: 'BJ', + 'Saint Barthelemy': 'BL', + Bermuda: 'BM', + 'Brunei Darussalam': 'BN', + Bolivia: 'BO', + 'Caribbean Netherlands': 'BQ', + Brazil: 'BR', + Bahamas: 'BS', + Bhutan: 'BT', + 'Bouvet Island': 'BV', // TODO 挪威领地布维岛,下钻地图数据缺失 + Botswana: 'BW', + Belarus: 'BY', + Belize: 'BZ', + Canada: 'CA', + 'Cocos (Keeling) Islands': 'CC', + 'Democratic Republic of the Congo': 'CD', + 'Central African Republic': 'CF', + 'Republic of the Congo': 'CG', + Switzerland: 'CH', + "Cote D'Ivoire": 'CI', + 'Cook Islands': 'CK', // TODO 新西兰的库克群岛,下钻地图数据缺失 + Chile: 'CL', + Cameroon: 'CM', + China: 'CN', + Colombia: 'CO', + 'Costa Rica': 'CR', + Cuba: 'CU', + 'Cape Verde': 'CV', + Curaao: 'CW', + 'Christmas Island': 'CX', // TODO 澳大利亚的圣诞到,下钻地图数据缺失 + Cyprus: 'CY', + 'Czech Republic': 'CZ', + Germany: 'DE', + Djibouti: 'DJ', + Denmark: 'DK', + Dominica: 'DM', + 'Dominican Republic': 'DO', + Algeria: 'DZ', + Ecuador: 'EC', + Estonia: 'EE', + Egypt: 'EG', + 'Western Sahara': 'EH', // TODO 西撒哈拉地区,下钻地图数据缺失 + Eritrea: 'ER', + Spain: 'ES', + Ethiopia: 'ET', + Finland: 'FI', + Fiji: 'FJ', + 'Falkland Islands': 'FK', + Micronesia: 'FM', // TODO 密克罗尼西亚联邦,下钻地图数据缺失 + 'Faroe Islands': 'FO', + France: 'FR', + Gabon: 'GA', + 'United Kingdom': 'GB', + Grenada: 'GD', + Georgia: 'GE', + 'French Guiana': 'GF', + Guernsey: 'GG', // TODO 英属根西岛,下钻地图数据缺失 + Ghana: 'GH', + Gibraltar: 'GI', // TODO 英属直布罗陀,下钻地图数据缺失 + Greenland: 'GL', + Gambia: 'GM', + Guinea: 'GN', + Guadeloupe: 'GP', + 'Equatorial Guinea': 'GQ', + Greece: 'GR', + 'South Georgia and The South Sandwich Islands': 'GS', + Guatemala: 'GT', + Guam: 'GU', + 'Guinea-Bissau': 'GW', + Guyana: 'GY', + 'Heard Island and McDonald Islands': 'HM', // TODO 澳大利亚领地赫德岛和麦克唐纳群岛,下钻地图数据缺失 + Honduras: 'HN', + Croatia: 'HR', + Haiti: 'HT', + Hungary: 'HU', + Indonesia: 'ID', + Ireland: 'IE', + Israel: 'IL', + 'Isle of Man': 'IM', // TODO 英属马恩岛,下钻地图数据缺失 + India: 'IN', + 'British Indian Ocean Territory': 'IO', + Iraq: 'IQ', + Iran: 'IR', + Iceland: 'IS', + Italy: 'IT', + Jersey: 'JE', // TODO 英属泽西岛,下钻地图数据缺失 + Jamaica: 'JM', + Jordan: 'JO', + Japan: 'JP', + Kenya: 'KE', + Kyrgyzstan: 'KG', + Cambodia: 'KH', + Kiribati: 'KI', // TODO 基里巴斯共和国,下钻地图数据缺失 + Comoros: 'KM', + 'Saint Kitts and Nevis': 'KN', + 'North Korea': 'KP', + 'South Korea': 'KR', + Kuwait: 'KW', + 'Cayman Islands': 'KY', + Kazakhstan: 'KZ', + Laos: 'LA', + Lebanon: 'LB', + 'Saint Lucia': 'LC', + Liechtenstein: 'LI', + 'Sri Lanka': 'LK', + Liberia: 'LR', + Lesotho: 'LS', + Lithuania: 'LT', + Luxembourg: 'LU', + Latvia: 'LV', + Libya: 'LY', + Morocco: 'MA', + Monaco: 'MC', // TODO 摩纳哥,2平方公里,下钻地图数据缺失 + Moldova: 'MD', + Montenegro: 'ME', + 'Saint Martin': 'MF', // TODO 法属圣马丁,下钻地图数据缺失 + Madagascar: 'MG', + 'Marshall Islands': 'MH', // TODO 马绍尔群岛共和国,下钻地图数据缺失 + 'The Republic of North Macedonia': 'MK', + Mali: 'ML', + Myanmar: 'MM', + Mongolia: 'MN', + 'Northern Mariana Islands': 'MP', + Martinique: 'MQ', + Mauritania: 'MR', + Montserrat: 'MS', + Malta: 'MT', + Mauritius: 'MU', + Maldives: 'MV', + Malawi: 'MW', + Mexico: 'MX', + Malaysia: 'MY', + Mozambique: 'MZ', + Namibia: 'NA', + 'New Caledonia': 'NC', // TODO 法属新喀里多尼亚,下钻地图数据缺失 + Niger: 'NE', + 'Norfolk Island': 'NF', // TODO 澳大利亚属诺福克岛,下钻地图数据缺失 + Nigeria: 'NG', + Nicaragua: 'NI', + 'The Netherlands': 'NL', + Norway: 'NO', + Nepal: 'NP', + Nauru: 'NR', // TODO 瑙鲁共和国,下钻地图数据缺失 + Niue: 'NU', // TODO 新西兰属纽埃岛,下钻地图数据缺失 + 'New Zealand': 'NZ', + Oman: 'OM', + Panama: 'PA', + Peru: 'PE', + 'French Polynesia': 'PF', + 'Papua New Guinea': 'PG', // TODO 巴布亚新几内亚,下钻地图数据缺失 + Philippines: 'PH', + Pakistan: 'PK', + Poland: 'PL', + 'Saint-Pierre and Miquelon': 'PM', + Pitcairn: 'PN', // TODO 英属皮特凯恩群岛,下钻地图数据缺失 + 'Puerto Rico': 'PR', + Palestine: 'PS', + Portugal: 'PT', + Palau: 'PW', // TODO 帕劳共和国,下钻地图数据缺失 + Paraguay: 'PY', + Qatar: 'QA', + Reunion: 'RE', // TODO 法属留尼汪岛,下钻地图数据缺失 + Romania: 'RO', + Serbia: 'RS', + Russia: 'RU', + Rwanda: 'RW', + 'Saudi Arabia': 'SA', + 'Solomon Islands': 'SB', + Seychelles: 'SC', + Sudan: 'SD', + Sweden: 'SE', + Singapore: 'SG', + 'Saint Helena': 'SH', + Slovenia: 'SI', + 'Svalbard and Jan Mayen': 'SJ', + Slovakia: 'SK', + 'Sierra Leone': 'SL', + 'San Marino': 'SM', + Senegal: 'SN', + Somalia: 'SO', + Suriname: 'SR', + 'South Sudan': 'SS', + 'Sao Tome and Principe': 'ST', + 'El Salvador': 'SV', + 'Sint Maarten': 'SX', // TODO 荷兰属圣马丁,下钻地图数据缺失 + Syria: 'SY', + Swaziland: 'SZ', + 'Turks and Caicos Islands': 'TC', + Chad: 'TD', + 'French Southern and Antarctic Lands': 'TF', // TODO 法属南部和南极领地,下钻地图数据缺失 + Togo: 'TG', + Thailand: 'TH', + Tajikistan: 'TJ', + Tokelau: 'TK', // TODO 新西兰属托克劳群岛,下钻地图数据缺失 + 'East Timor': 'TL', + Turkmenistan: 'TM', + Tunisia: 'TN', + Tonga: 'TO', // TODO 汤加共和国,下钻地图数据缺失 + Turkey: 'TR', + 'Trinidad and Tobago': 'TT', + Tuvalu: 'TV', // TODO 图瓦卢,下钻地图数据缺失 + Tanzania: 'TZ', + Ukraine: 'UA', + Uganda: 'UG', + 'US Minor Outlying Islands': 'UM', // TODO 美国本土外小岛屿,一共9座,分布很散,上层坐标缺失,下钻地图数据缺失 + 'United States': 'US', + Uruguay: 'UY', + Uzbekistan: 'UZ', + 'Vatican City': 'VA', + 'Saint Vincent and the Grenadines': 'VC', + Venezuela: 'VE', + 'British Virgin Islands': 'VG', + 'United States Virgin Islands': 'VI', + 'Viet Nam': 'VN', + Vanuatu: 'VU', // TODO 瓦努阿图共和国,下钻地图数据缺失 + 'Wallis and Futuna': 'WF', // TODO 法属瓦利斯和富图纳群岛,下钻地图数据缺失 + Samoa: 'WS', + 'The Republic of Kosovo': 'XK', + Yemen: 'YE', + Mayotte: 'YT', // TODO 法属马约特岛,下钻地图数据缺失 + 'South Africa': 'ZA', + Zambia: 'ZM', + Zimbabwe: 'ZW' } export const reg = { @@ -2471,7 +2473,7 @@ export const entityDetailTags = { } export const entityDefaultColor = 'rgb(119,131,145)' // 赛风3IP的type字段字典 -export const tagValueLabelMapping = [{"name":"Psiphon3 Server","value":"psiphon3_server"},{"name":"I2P","value":"i2p"},{"name":"MTProxy","value":"mtproxy"},{"name":"Obfs4","value":"obfs4"},{"name":"Snowflake","value":"snowflake"},{"name":"Tor","value":"tor"},{"name":"Loki Password Stealer","value":"Loki Password Stealer (PWS)"},{"name":"IcedID","value":"IcedID"},{"name":"QakBot","value":"QakBot"},{"name":"Mirai","value":"Mirai"},{"name":"BazarBackdoor","value":"BazarBackdoor"},{"name":"NjRAT","value":"NjRAT"},{"name":"CryptBot","value":"CryptBot"},{"name":"BitRAT","value":"BitRAT"},{"name":"RedLine Stealer","value":"RedLine Stealer"},{"name":"Nanocore RAT","value":"Nanocore RAT"},{"name":"DCRat","value":"DCRat"},{"name":"Cobalt Strike","value":"Cobalt Strike"},{"name":"AsyncRAT","value":"AsyncRAT"},{"name":"ostap","value":"ostap"},{"name":"Vidar","value":"Vidar"},{"name":"magecart","value":"magecart"},{"name":"Hancitor","value":"Hancitor"},{"name":"SystemBC","value":"SystemBC"},{"name":"SmokeLoader","value":"SmokeLoader"},{"name":"Remcos","value":"Remcos"},{"name":"Amadey","value":"Amadey"},{"name":"Ficker Stealer","value":"Ficker Stealer"},{"name":"Get2","value":"Get2"},{"name":"ISFB","value":"ISFB"},{"name":"Dridex","value":"Dridex"},{"name":"Pony","value":"Pony"},{"name":"Azorult","value":"Azorult"},{"name":"NetWire RC","value":"NetWire RC"},{"name":"Mozi","value":"Mozi"},{"name":"Raccoon","value":"Raccoon"},{"name":"Quasar RAT","value":"Quasar RAT"},{"name":"Emotet","value":"Emotet"},{"name":"Numando","value":"Numando"},{"name":"Oski Stealer","value":"Oski Stealer"},{"name":"Ave Maria","value":"Ave Maria"},{"name":"NetSupportManager RAT","value":"NetSupportManager RAT"},{"name":"STRRAT","value":"STRRAT"},{"name":"Orcus RAT","value":"Orcus RAT"},{"name":"Vjw0rm","value":"Vjw0rm"},{"name":"Ghost RAT","value":"Ghost RAT"},{"name":"LimeRAT","value":"LimeRAT"},{"name":"Astaroth","value":"Astaroth"},{"name":"Unknown malware","value":"Unknown malware"},{"name":"TrickBot","value":"TrickBot"},{"name":"IcedID Downloader","value":"IcedID Downloader"},{"name":"BetaBot","value":"BetaBot"},{"name":"Agent Tesla","value":"Agent Tesla"},{"name":"Bashlite","value":"Bashlite"},{"name":"DanaBot","value":"DanaBot"},{"name":"Snake","value":"Snake"},{"name":"Gozi","value":"Gozi"},{"name":"PoshC2","value":"PoshC2"},{"name":"Houdini","value":"Houdini"},{"name":"BlackNET RAT","value":"BlackNET RAT"},{"name":"Revenge RAT","value":"Revenge RAT"},{"name":"ServHelper","value":"ServHelper"},{"name":"Alien","value":"Alien"},{"name":"N-W0rm","value":"N-W0rm"},{"name":"LokiBot","value":"LokiBot"},{"name":"Zloader","value":"Zloader"},{"name":"Crimson RAT","value":"Crimson RAT"},{"name":"Grandoreiro","value":"Grandoreiro"},{"name":"Buer","value":"Buer"},{"name":"Qealler","value":"Qealler"},{"name":"FastCash","value":"FastCash"},{"name":"CyberGate","value":"CyberGate"},{"name":"Formbook","value":"Formbook"},{"name":"Hydra","value":"Hydra"},{"name":"Arkei Stealer","value":"Arkei Stealer"},{"name":"Tsunami","value":"Tsunami"},{"name":"AdWind","value":"AdWind"},{"name":"Dofloo","value":"Dofloo"},{"name":"MrBlack","value":"MrBlack"},{"name":"XLoader","value":"XLoader"},{"name":"Anatsa","value":"Anatsa"},{"name":"TeamBot","value":"TeamBot"},{"name":"DiamondFox","value":"DiamondFox"},{"name":"BillGates","value":"BillGates"},{"name":"Kinsing","value":"Kinsing"},{"name":"CCleaner Backdoor","value":"CCleaner Backdoor"},{"name":"JSOutProx","value":"JSOutProx"},{"name":"SharkBot","value":"SharkBot"},{"name":"Empire Downloader","value":"Empire Downloader"},{"name":"solarmarker","value":"solarmarker"},{"name":"FireBird RAT","value":"FireBird RAT"},{"name":"XpertRAT","value":"XpertRAT"},{"name":"RMS","value":"RMS"},{"name":"GCleaner","value":"GCleaner"},{"name":"Unidentified Linux 001","value":"Unidentified Linux 001"},{"name":"Ousaban","value":"Ousaban"},{"name":"sLoad","value":"sLoad"},{"name":"PerlBot","value":"PerlBot"},{"name":"SectopRAT","value":"SectopRAT"},{"name":"Loda","value":"Loda"},{"name":"Coinminer","value":"Coinminer"},{"name":"DarkSide","value":"DarkSide"},{"name":"404 Keylogger","value":"404 Keylogger"},{"name":"Cpuminer","value":"Cpuminer"},{"name":"MooBot","value":"MooBot"},{"name":"Parallax RAT","value":"Parallax RAT"},{"name":"XOR DDoS","value":"XOR DDoS"},{"name":"Vulturi","value":"Vulturi"},{"name":"Taurus Stealer","value":"Taurus Stealer"},{"name":"Cutwail","value":"Cutwail"},{"name":"Metamorfo","value":"Metamorfo"},{"name":"GootLoader","value":"GootLoader"},{"name":"Meterpreter","value":"Meterpreter"},{"name":"BumbleBee","value":"BumbleBee"},{"name":"Tofsee","value":"Tofsee"},{"name":"Socelars","value":"Socelars"},{"name":"Squirrelwaffle","value":"Squirrelwaffle"},{"name":"Roaming Mantis","value":"Roaming Mantis"},{"name":"Alfonso Stealer","value":"Alfonso Stealer"},{"name":"DarkComet","value":"DarkComet"},{"name":"STOP","value":"STOP"},{"name":"MoqHao","value":"MoqHao"},{"name":"CollectorGoomba","value":"CollectorGoomba"},{"name":"Prometei","value":"Prometei"},{"name":"Cerberus","value":"Cerberus"},{"name":"Spectre Rat","value":"Spectre Rat"},{"name":"Unidentified 001","value":"Unidentified 001"},{"name":"FluBot","value":"FluBot"},{"name":"BlackRock","value":"BlackRock"},{"name":"CryptoNight","value":"CryptoNight"},{"name":"Kronos","value":"Kronos"},{"name":"Winnti","value":"Winnti"},{"name":"Korlia","value":"Korlia"},{"name":"Monero Miner","value":"Monero Miner"},{"name":"Anubis","value":"Anubis"},{"name":"MirrorBlast","value":"MirrorBlast"},{"name":"Banload","value":"Banload"},{"name":"FlawedGrace","value":"FlawedGrace"},{"name":"DoppelDridex","value":"DoppelDridex"},{"name":"Mispadu","value":"Mispadu"},{"name":"Mekotio","value":"Mekotio"},{"name":"Ozone RAT","value":"Ozone RAT"},{"name":"StealthWorker Go","value":"StealthWorker Go"},{"name":"SilverFish","value":"SilverFish"},{"name":"NodeJS Ransomware","value":"NodeJS Ransomware"},{"name":"Ryuk","value":"Ryuk"},{"name":"QNAPCrypt","value":"QNAPCrypt"},{"name":"Venom RAT","value":"Venom RAT"},{"name":"BlackMatter","value":"BlackMatter"},{"name":"Janeleiro","value":"Janeleiro"},{"name":"Chrysaor","value":"Chrysaor"},{"name":"PurpleFox","value":"PurpleFox"},{"name":"Mars Stealer","value":"Mars Stealer"},{"name":"Matanbuchus","value":"Matanbuchus"},{"name":"FFDroider","value":"FFDroider"},{"name":"BlackGuard","value":"BlackGuard"},{"name":"SMSspy","value":"SMSspy"},{"name":"TitanStealer","value":"TitanStealer"},{"name":"BianLian","value":"BianLian"},{"name":"Deimos","value":"Deimos"},{"name":"Sliver","value":"Sliver"},{"name":"Aurora Stealer","value":"Aurora Stealer"},{"name":"Stealc","value":"Stealc"},{"name":"Gomorrah stealer","value":"Gomorrah stealer"},{"name":"RecordBreaker","value":"RecordBreaker"},{"name":"Brute Ratel C4","value":"Brute Ratel C4"},{"name":"LaplasClipper","value":"LaplasClipper"},{"name":"XWorm","value":"XWorm"},{"name":"PhotoLoader","value":"PhotoLoader"},{"name":"Kimsuky","value":"Kimsuky"},{"name":"Rhadamanthys","value":"Rhadamanthys"},{"name":"Nighthawk","value":"Nighthawk"},{"name":"Fabookie","value":"Fabookie"},{"name":"Lumma Stealer","value":"Lumma Stealer"},{"name":"Kaiji","value":"Kaiji"},{"name":"ClipBanker","value":"ClipBanker"},{"name":"PrivateLoader","value":"PrivateLoader"},{"name":"ViperSoftX","value":"ViperSoftX"},{"name":"Phonk","value":"Phonk"},{"name":"PlugX","value":"PlugX"},{"name":"HyperBro","value":"HyperBro"},{"name":"SideWinder","value":"SideWinder"},{"name":"Coper","value":"Coper"},{"name":"Specter","value":"Specter"},{"name":"Kaiten","value":"Kaiten"},{"name":"Bitter RAT","value":"Bitter RAT"},{"name":"BATLOADER","value":"BATLOADER"},{"name":"ACBackdoor","value":"ACBackdoor"},{"name":"BKA Trojaner","value":"BKA Trojaner"},{"name":"JSSLoader","value":"JSSLoader"},{"name":"PureCrypter","value":"PureCrypter"},{"name":"SpyNote","value":"SpyNote"},{"name":"S.O.V.A.","value":"S.O.V.A."},{"name":"Ginzo Stealer","value":"Ginzo Stealer"},{"name":"PennyWise Stealer","value":"PennyWise Stealer"},{"name":"DOUBLEBACK","value":"DOUBLEBACK"},{"name":"OPRDNS","value":"OPRDNS"},{"name":"TLDNS","value":"TLDNS"},{"name":"RTDNS","value":"RTDNS"},{"name":"ADNS","value":"ADNS"},{"name":"FWDNS","value":"FWDNS"}] +export const tagValueLabelMapping = [{ name: 'Psiphon3 Server', value: 'psiphon3_server' }, { name: 'I2P', value: 'i2p' }, { name: 'MTProxy', value: 'mtproxy' }, { name: 'Obfs4', value: 'obfs4' }, { name: 'Snowflake', value: 'snowflake' }, { name: 'Tor', value: 'tor' }, { name: 'Loki Password Stealer', value: 'Loki Password Stealer (PWS)' }, { name: 'IcedID', value: 'IcedID' }, { name: 'QakBot', value: 'QakBot' }, { name: 'Mirai', value: 'Mirai' }, { name: 'BazarBackdoor', value: 'BazarBackdoor' }, { name: 'NjRAT', value: 'NjRAT' }, { name: 'CryptBot', value: 'CryptBot' }, { name: 'BitRAT', value: 'BitRAT' }, { name: 'RedLine Stealer', value: 'RedLine Stealer' }, { name: 'Nanocore RAT', value: 'Nanocore RAT' }, { name: 'DCRat', value: 'DCRat' }, { name: 'Cobalt Strike', value: 'Cobalt Strike' }, { name: 'AsyncRAT', value: 'AsyncRAT' }, { name: 'ostap', value: 'ostap' }, { name: 'Vidar', value: 'Vidar' }, { name: 'magecart', value: 'magecart' }, { name: 'Hancitor', value: 'Hancitor' }, { name: 'SystemBC', value: 'SystemBC' }, { name: 'SmokeLoader', value: 'SmokeLoader' }, { name: 'Remcos', value: 'Remcos' }, { name: 'Amadey', value: 'Amadey' }, { name: 'Ficker Stealer', value: 'Ficker Stealer' }, { name: 'Get2', value: 'Get2' }, { name: 'ISFB', value: 'ISFB' }, { name: 'Dridex', value: 'Dridex' }, { name: 'Pony', value: 'Pony' }, { name: 'Azorult', value: 'Azorult' }, { name: 'NetWire RC', value: 'NetWire RC' }, { name: 'Mozi', value: 'Mozi' }, { name: 'Raccoon', value: 'Raccoon' }, { name: 'Quasar RAT', value: 'Quasar RAT' }, { name: 'Emotet', value: 'Emotet' }, { name: 'Numando', value: 'Numando' }, { name: 'Oski Stealer', value: 'Oski Stealer' }, { name: 'Ave Maria', value: 'Ave Maria' }, { name: 'NetSupportManager RAT', value: 'NetSupportManager RAT' }, { name: 'STRRAT', value: 'STRRAT' }, { name: 'Orcus RAT', value: 'Orcus RAT' }, { name: 'Vjw0rm', value: 'Vjw0rm' }, { name: 'Ghost RAT', value: 'Ghost RAT' }, { name: 'LimeRAT', value: 'LimeRAT' }, { name: 'Astaroth', value: 'Astaroth' }, { name: 'Unknown malware', value: 'Unknown malware' }, { name: 'TrickBot', value: 'TrickBot' }, { name: 'IcedID Downloader', value: 'IcedID Downloader' }, { name: 'BetaBot', value: 'BetaBot' }, { name: 'Agent Tesla', value: 'Agent Tesla' }, { name: 'Bashlite', value: 'Bashlite' }, { name: 'DanaBot', value: 'DanaBot' }, { name: 'Snake', value: 'Snake' }, { name: 'Gozi', value: 'Gozi' }, { name: 'PoshC2', value: 'PoshC2' }, { name: 'Houdini', value: 'Houdini' }, { name: 'BlackNET RAT', value: 'BlackNET RAT' }, { name: 'Revenge RAT', value: 'Revenge RAT' }, { name: 'ServHelper', value: 'ServHelper' }, { name: 'Alien', value: 'Alien' }, { name: 'N-W0rm', value: 'N-W0rm' }, { name: 'LokiBot', value: 'LokiBot' }, { name: 'Zloader', value: 'Zloader' }, { name: 'Crimson RAT', value: 'Crimson RAT' }, { name: 'Grandoreiro', value: 'Grandoreiro' }, { name: 'Buer', value: 'Buer' }, { name: 'Qealler', value: 'Qealler' }, { name: 'FastCash', value: 'FastCash' }, { name: 'CyberGate', value: 'CyberGate' }, { name: 'Formbook', value: 'Formbook' }, { name: 'Hydra', value: 'Hydra' }, { name: 'Arkei Stealer', value: 'Arkei Stealer' }, { name: 'Tsunami', value: 'Tsunami' }, { name: 'AdWind', value: 'AdWind' }, { name: 'Dofloo', value: 'Dofloo' }, { name: 'MrBlack', value: 'MrBlack' }, { name: 'XLoader', value: 'XLoader' }, { name: 'Anatsa', value: 'Anatsa' }, { name: 'TeamBot', value: 'TeamBot' }, { name: 'DiamondFox', value: 'DiamondFox' }, { name: 'BillGates', value: 'BillGates' }, { name: 'Kinsing', value: 'Kinsing' }, { name: 'CCleaner Backdoor', value: 'CCleaner Backdoor' }, { name: 'JSOutProx', value: 'JSOutProx' }, { name: 'SharkBot', value: 'SharkBot' }, { name: 'Empire Downloader', value: 'Empire Downloader' }, { name: 'solarmarker', value: 'solarmarker' }, { name: 'FireBird RAT', value: 'FireBird RAT' }, { name: 'XpertRAT', value: 'XpertRAT' }, { name: 'RMS', value: 'RMS' }, { name: 'GCleaner', value: 'GCleaner' }, { name: 'Unidentified Linux 001', value: 'Unidentified Linux 001' }, { name: 'Ousaban', value: 'Ousaban' }, { name: 'sLoad', value: 'sLoad' }, { name: 'PerlBot', value: 'PerlBot' }, { name: 'SectopRAT', value: 'SectopRAT' }, { name: 'Loda', value: 'Loda' }, { name: 'Coinminer', value: 'Coinminer' }, { name: 'DarkSide', value: 'DarkSide' }, { name: '404 Keylogger', value: '404 Keylogger' }, { name: 'Cpuminer', value: 'Cpuminer' }, { name: 'MooBot', value: 'MooBot' }, { name: 'Parallax RAT', value: 'Parallax RAT' }, { name: 'XOR DDoS', value: 'XOR DDoS' }, { name: 'Vulturi', value: 'Vulturi' }, { name: 'Taurus Stealer', value: 'Taurus Stealer' }, { name: 'Cutwail', value: 'Cutwail' }, { name: 'Metamorfo', value: 'Metamorfo' }, { name: 'GootLoader', value: 'GootLoader' }, { name: 'Meterpreter', value: 'Meterpreter' }, { name: 'BumbleBee', value: 'BumbleBee' }, { name: 'Tofsee', value: 'Tofsee' }, { name: 'Socelars', value: 'Socelars' }, { name: 'Squirrelwaffle', value: 'Squirrelwaffle' }, { name: 'Roaming Mantis', value: 'Roaming Mantis' }, { name: 'Alfonso Stealer', value: 'Alfonso Stealer' }, { name: 'DarkComet', value: 'DarkComet' }, { name: 'STOP', value: 'STOP' }, { name: 'MoqHao', value: 'MoqHao' }, { name: 'CollectorGoomba', value: 'CollectorGoomba' }, { name: 'Prometei', value: 'Prometei' }, { name: 'Cerberus', value: 'Cerberus' }, { name: 'Spectre Rat', value: 'Spectre Rat' }, { name: 'Unidentified 001', value: 'Unidentified 001' }, { name: 'FluBot', value: 'FluBot' }, { name: 'BlackRock', value: 'BlackRock' }, { name: 'CryptoNight', value: 'CryptoNight' }, { name: 'Kronos', value: 'Kronos' }, { name: 'Winnti', value: 'Winnti' }, { name: 'Korlia', value: 'Korlia' }, { name: 'Monero Miner', value: 'Monero Miner' }, { name: 'Anubis', value: 'Anubis' }, { name: 'MirrorBlast', value: 'MirrorBlast' }, { name: 'Banload', value: 'Banload' }, { name: 'FlawedGrace', value: 'FlawedGrace' }, { name: 'DoppelDridex', value: 'DoppelDridex' }, { name: 'Mispadu', value: 'Mispadu' }, { name: 'Mekotio', value: 'Mekotio' }, { name: 'Ozone RAT', value: 'Ozone RAT' }, { name: 'StealthWorker Go', value: 'StealthWorker Go' }, { name: 'SilverFish', value: 'SilverFish' }, { name: 'NodeJS Ransomware', value: 'NodeJS Ransomware' }, { name: 'Ryuk', value: 'Ryuk' }, { name: 'QNAPCrypt', value: 'QNAPCrypt' }, { name: 'Venom RAT', value: 'Venom RAT' }, { name: 'BlackMatter', value: 'BlackMatter' }, { name: 'Janeleiro', value: 'Janeleiro' }, { name: 'Chrysaor', value: 'Chrysaor' }, { name: 'PurpleFox', value: 'PurpleFox' }, { name: 'Mars Stealer', value: 'Mars Stealer' }, { name: 'Matanbuchus', value: 'Matanbuchus' }, { name: 'FFDroider', value: 'FFDroider' }, { name: 'BlackGuard', value: 'BlackGuard' }, { name: 'SMSspy', value: 'SMSspy' }, { name: 'TitanStealer', value: 'TitanStealer' }, { name: 'BianLian', value: 'BianLian' }, { name: 'Deimos', value: 'Deimos' }, { name: 'Sliver', value: 'Sliver' }, { name: 'Aurora Stealer', value: 'Aurora Stealer' }, { name: 'Stealc', value: 'Stealc' }, { name: 'Gomorrah stealer', value: 'Gomorrah stealer' }, { name: 'RecordBreaker', value: 'RecordBreaker' }, { name: 'Brute Ratel C4', value: 'Brute Ratel C4' }, { name: 'LaplasClipper', value: 'LaplasClipper' }, { name: 'XWorm', value: 'XWorm' }, { name: 'PhotoLoader', value: 'PhotoLoader' }, { name: 'Kimsuky', value: 'Kimsuky' }, { name: 'Rhadamanthys', value: 'Rhadamanthys' }, { name: 'Nighthawk', value: 'Nighthawk' }, { name: 'Fabookie', value: 'Fabookie' }, { name: 'Lumma Stealer', value: 'Lumma Stealer' }, { name: 'Kaiji', value: 'Kaiji' }, { name: 'ClipBanker', value: 'ClipBanker' }, { name: 'PrivateLoader', value: 'PrivateLoader' }, { name: 'ViperSoftX', value: 'ViperSoftX' }, { name: 'Phonk', value: 'Phonk' }, { name: 'PlugX', value: 'PlugX' }, { name: 'HyperBro', value: 'HyperBro' }, { name: 'SideWinder', value: 'SideWinder' }, { name: 'Coper', value: 'Coper' }, { name: 'Specter', value: 'Specter' }, { name: 'Kaiten', value: 'Kaiten' }, { name: 'Bitter RAT', value: 'Bitter RAT' }, { name: 'BATLOADER', value: 'BATLOADER' }, { name: 'ACBackdoor', value: 'ACBackdoor' }, { name: 'BKA Trojaner', value: 'BKA Trojaner' }, { name: 'JSSLoader', value: 'JSSLoader' }, { name: 'PureCrypter', value: 'PureCrypter' }, { name: 'SpyNote', value: 'SpyNote' }, { name: 'S.O.V.A.', value: 'S.O.V.A.' }, { name: 'Ginzo Stealer', value: 'Ginzo Stealer' }, { name: 'PennyWise Stealer', value: 'PennyWise Stealer' }, { name: 'DOUBLEBACK', value: 'DOUBLEBACK' }, { name: 'OPRDNS', value: 'OPRDNS' }, { name: 'TLDNS', value: 'TLDNS' }, { name: 'RTDNS', value: 'RTDNS' }, { name: 'ADNS', value: 'ADNS' }, { name: 'FWDNS', value: 'FWDNS' }] // detection新增页的第一步,选择mode export const detectionRuleType = { indicator: 'indicator_match', diff --git a/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue b/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue index bcb9fec9..4e8193a6 100644 --- a/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue +++ b/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue @@ -20,6 +20,7 @@ + @@ -34,19 +35,21 @@ import InformationAggregation from '@/views/charts2/charts/entityDetail/tabs/Inf import DomainNameResolution from '@/views/charts2/charts/entityDetail/tabs/DomainNameResolution' import SecurityEvent from '@/views/charts2/charts/entityDetail/tabs/SecurityEvent' import PerformanceEvent from '@/views/charts2/charts/entityDetail/tabs/PerformanceEvent' +import BehaviorPattern from '@/views/charts2/charts/entityDetail/tabs/BehaviorPattern' import OpenPort from '@/views/charts2/charts/entityDetail/tabs/OpenPort' import DigitalCertificate from '@/views/charts2/charts/entityDetail/tabs/DigitalCertificate' import { overwriteUrl, urlParamsHandler } from '@/utils/tools' import { useRoute } from 'vue-router' import axios from 'axios' import { api } from '@/utils/api' -import {tagValueLabelMapping} from '../../../../utils/constants' +import { tagValueLabelMapping } from '../../../../utils/constants' export default { name: 'EntityDetailTabs', mixins: [chartMixin], components: { PerformanceEvent, + BehaviorPattern, SecurityEvent, InformationAggregation, DomainNameResolution, @@ -91,6 +94,9 @@ export default { if (entityType !== 'app') { tabs.unshift({ name: entityDetailTabsName.informationAggregation, label: i18n.global.t('entities.informationAggregation'), icon: 'cn-icon cn-icon-information-aggregation', tag: 0 }) } + if (entityType === 'ip') { + tabs.push({ name: entityDetailTabsName.behaviorPattern, label: i18n.global.t('entities.behaviorPattern'), icon: 'cn-icon cn-icon-behavior', tag: 0 }) + } const activeTab = ref(tabs[0].name) const { query } = useRoute() diff --git a/src/views/charts2/charts/entityDetail/tabs/BehaviorPattern.vue b/src/views/charts2/charts/entityDetail/tabs/BehaviorPattern.vue new file mode 100644 index 00000000..374c6d80 --- /dev/null +++ b/src/views/charts2/charts/entityDetail/tabs/BehaviorPattern.vue @@ -0,0 +1,165 @@ + + + diff --git a/src/views/charts2/charts/options/echartOption.js b/src/views/charts2/charts/options/echartOption.js index ff353894..62ec3a6c 100644 --- a/src/views/charts2/charts/options/echartOption.js +++ b/src/views/charts2/charts/options/echartOption.js @@ -4,6 +4,7 @@ import { chartColor3, chartColor5, chartColor6, + chartColorForBehaviorPattern, unitTypes } from '@/utils/constants' import unitConvert, { valueToRangeValue } from '@/utils/unit-convert' @@ -156,6 +157,111 @@ export const pieChartOption3 = { ] } +export const pieChartOption4 = { + color: chartColorForBehaviorPattern, + polar: { + radius: [30, '150%'], + center: ['50%', '99.9%']// 为了显示出来半圆底部左侧的边 + }, + radiusAxis: { + min: 0, + axisLine: { + show: true, + lineStyle: { + color: '#d3d3d3', + type: 'dashed' + } + }, + axisTick: { + show: false + }, + axisLabel: { + show: false + }, + splitLine: { + show: true, + lineStyle: { + color: '#d3d3d3', + type: 'dashed' + } + } + }, + angleAxis: { + type: 'category', + data: [], // 'a', 'b', 'c', 'd','aa', 'ab', 'ac', 'ad','a', 'b', 'c', 'd','aa', 'ab', 'ac', 'ad' + startAngle: 180, + // splitNumber: 30, + axisLine: { + show: false + }, + axisLabel: { + show: true, + // alignWithLabel:true,//可以保证刻度线和标签对齐 + interval: 0, // 强制显示所有标签 + // hideOverlap:true//从 v5.2.0 开始支持 + formatter: function (params, index) { + if (index === 7) { + return params + '\n' + } else if (index === 8) { + return '\n' + params + } else if (index === 15) { + return params + '\n' + } else { + return params + } + } + }, + axisTick: { + show: false, + alignWithLabel: true, + interval: 0, + length: 5 + }, + splitLine: { + show: true, + lineStyle: { + color: ['#e2e5ec'], + type: 'dashed' + } + } + }, + tooltip: { + show: true, + formatter: function (item) { + let str = '
' + str += '
' + str += item.name + ': ' + unitConvert(item.value, unitTypes.number).join('') + str += '
' + str += '' + return str + } + }, + series: [{ + type: 'bar', + data: [], // 8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0 + coordinateSystem: 'polar', + axisTick: { + show: false + }, + itemStyle: { + color: function (params) { + return chartColorForBehaviorPattern[params.dataIndex] + } + }, + label: { + show: false, + position: 'middle', + formatter: '{b}: {c}' + } + }], + animation: false +} + export const stackedLineChartOption = { color: chartColor3, tooltip: {