346 lines
19 KiB
Go
346 lines
19 KiB
Go
package attackevent
|
||
|
||
import (
|
||
"bytes"
|
||
"database/sql"
|
||
"dt_automate/conn"
|
||
"dt_automate/dbpool"
|
||
"dt_automate/tool"
|
||
"encoding/json"
|
||
"fmt"
|
||
"log"
|
||
"math"
|
||
"net/url"
|
||
"strconv"
|
||
"time"
|
||
|
||
"github.com/Esword618/unioffice/schema/soo/sml"
|
||
"github.com/Esword618/unioffice/spreadsheet"
|
||
)
|
||
|
||
// var cookieStr string
|
||
|
||
// var Counts int //存储总条数
|
||
// var err error
|
||
|
||
// 传入cookie
|
||
func Fw_event(cookieStr, timeStr string) {
|
||
ss := spreadsheet.New()
|
||
sheet := ss.AddSheet()
|
||
// sheet.SetFrozen(true, false)
|
||
v := sheet.InitialView()
|
||
v.SetState(sml.ST_PaneStateFrozen)
|
||
v.SetXSplit(0) //冻结列
|
||
v.SetYSplit(1) //冻结行
|
||
|
||
// v.SetTopLeft("B2")
|
||
// // 获取第一个工作表
|
||
// sheet, err := ss.GetSheet("Sheet2")
|
||
// if err != nil {
|
||
// log.Println(err)
|
||
// }
|
||
sheet.Cell("A1").SetString("序号")
|
||
sheet.Cell("B1").SetString("攻击时间")
|
||
sheet.Cell("C1").SetString("源安全域")
|
||
sheet.Cell("D1").SetString("目的安全域")
|
||
sheet.Cell("E1").SetString("源IP")
|
||
sheet.Cell("F1").SetString("目的IP")
|
||
sheet.Cell("G1").SetString("目的端口")
|
||
sheet.Cell("H1").SetString("威胁名称")
|
||
sheet.Cell("I1").SetString("攻击类别")
|
||
sheet.Cell("J1").SetString("攻击子类别")
|
||
sheet.Cell("K1").SetString("应用协议")
|
||
sheet.Cell("L1").SetString("CVE")
|
||
sheet.Cell("M1").SetString("域名(host)")
|
||
sheet.Cell("N1").SetString("请求路径")
|
||
sheet.Cell("O1").SetString("参数")
|
||
sheet.Cell("P1").SetString("源ip地区")
|
||
log.Println("生成表格列名完成")
|
||
//计算时间范围(2023-01-01-2023-01-05)示例
|
||
//2023-01-01
|
||
startTime, _ := time.Parse("2006-01-02", timeStr) //之前的时间
|
||
endTime, _ := time.Parse("2006-01-02", time.Unix(tool.Timestamp("second"), 0).Format("2006-01-02")) //当前时间
|
||
//获取当前事件
|
||
|
||
// 计算时间段分成一天一段
|
||
for current := startTime; current.Before(endTime) || current.Equal(endTime); {
|
||
// 当天的开始时间(00:00:00)
|
||
|
||
dayStart := time.Date(current.Year(), current.Month(), current.Day(), 0, 0, 0, 0, current.Location())
|
||
// 当天的结束时间(23:59:59)
|
||
dayEnd := dayStart.AddDate(0, 0, 1).Add(-1 * time.Nanosecond)
|
||
|
||
// 如果当前计算的结束时间超过endTime,则将endTime作为结束时间
|
||
if dayEnd.After(endTime) {
|
||
dayEnd = time.Date(endTime.Year(), endTime.Month(), endTime.Day(), 23, 59, 59, 999999999, endTime.Location())
|
||
}
|
||
|
||
fmt.Printf("从 %s 到 %s\n", dayStart.Format("2006-01-02T15:04:05"), dayEnd.Format("2006-01-02T15:04:05"))
|
||
|
||
// 构建 x-www-form-urlencoded 格式的请求体
|
||
values := url.Values{}
|
||
values.Add("xml", "<rpc message-id='101' xmlns='urn:ietf:params:xml:ns:netconf:base:1.0' xmlns:web='urn:ietf:params:xml:ns:netconf:base:1.0'><get-bulk><filter type='subtree'><top xmlns='http://www.unis.cn/netconf/data:1.0' xmlns:web='http://www.unis.cn/netconf/base:1.0' xmlns:data='http://www.unis.cn/netconf/data:1.0'><NTOP><LogPaging><Log><LogType>1</LogType><UserID/><ID/><TimeFilter><StartTime>"+dayStart.Format("2006-01-02T15:04:05")+"</StartTime><EndTime>"+dayEnd.Format("2006-01-02T15:04:05")+"</EndTime></TimeFilter><PageNo>1</PageNo><CountPerPage>200</CountPerPage><TotalCounts/><InputJSON>{"SrcZoneName":"Untrust","DestZoneName":"Trust"}</InputJSON><OutputJSON/></Log></LogPaging></NTOP></top></filter></get-bulk></rpc>")
|
||
values.Add("req_menu", "M_Monitor/M_AtkLog/M_ThreatLog")
|
||
//请求头信息
|
||
header := map[string]string{
|
||
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
|
||
"referer": "https://11.2.68.146/wnm/frame/index.php",
|
||
"cookie": cookieStr,
|
||
}
|
||
//查询数据//请求数据体
|
||
security_event_data := conn.DT_POST("https://11.2.68.146/wnm/get.j", header, bytes.NewBufferString(values.Encode()))
|
||
//获取页数
|
||
count_pages, _ := strconv.Atoi(Date_v(security_event_data).NTOP.LogPaging[0].TotalCounts)
|
||
if count_pages < 200 {
|
||
for _, k := range Date_v(security_event_data).NTOP.LogPaging {
|
||
// log.Println(len(sheet.Rows()))
|
||
con := len(sheet.Rows()) + 1
|
||
// IP := conn.DT_GET("http://ip-api.com/json/"+k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string)+"?lang=zh-CN", nil, nil)
|
||
sheet.Cell("A" + strconv.Itoa(con)).SetString(strconv.Itoa(con - 1)) // 第一列 (A1)
|
||
sheet.Cell("B" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["Time"].(string))
|
||
sheet.Cell("C" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["SrcZoneName"].(string))
|
||
sheet.Cell("D" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["DestZoneName"].(string))
|
||
sheet.Cell("E" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string))
|
||
sheet.Cell("F" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["DestIPAddr"].(string))
|
||
sheet.Cell("G" + strconv.Itoa(con)).SetString(strconv.FormatFloat(k.OutputJSON.(map[string]interface{})["DestPort"].(float64), 'f', -1, 64))
|
||
sheet.Cell("H" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["ThreatName"].(string))
|
||
sheet.Cell("I" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["MethodNameCN"].(string))
|
||
sheet.Cell("J" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["MethodSubNameCN"].(string))
|
||
sheet.Cell("K" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["Application"].(string))
|
||
sheet.Cell("L" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["CVE"].(string))
|
||
sheet.Cell("M" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["HttpHost"].(string))
|
||
sheet.Cell("N" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["HttpFirstLine"].(string))
|
||
sheet.Cell("O" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["Payload"].(string))
|
||
// sheet.Cell("P" + strconv.Itoa(Con)).SetString(Date_get(IP).(map[string]interface{})["country"].(string) + "." + Date_get(IP).(map[string]interface{})["city"].(string) + "/" + Date_get(IP).(map[string]interface{})["isp"].(string))
|
||
log.Printf("开始插入%s数据:%d %s", dayStart.Format("2006-01-02T15:04:05"), con, k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string))
|
||
//查询数据库中是否有重复数据
|
||
//查询sql 获取用户信息
|
||
rows, err := dbpool.QueryRows("SELECT `DT_TIME` FROM `dt_zgdz`.`dt_attack_event` WHERE DT_TIME = ?;", k.OutputJSON.(map[string]interface{})["Time"].(string))
|
||
if err != nil {
|
||
log.Println(err)
|
||
}
|
||
defer rows.Close()
|
||
var timeStr sql.NullString
|
||
// var typecho_userss []string
|
||
for rows.Next() {
|
||
if err := rows.Scan(&timeStr); err != nil {
|
||
log.Println(err)
|
||
}
|
||
// typecho_userss = append(typecho_userss, timeStr)
|
||
}
|
||
log.Println(timeStr)
|
||
if err := rows.Err(); err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
if k.OutputJSON.(map[string]interface{})["Time"].(string) != timeStr.String {
|
||
//调用ExecteSQL函数执行插入语句
|
||
result, err := dbpool.ExecuteSQL("INSERT INTO `dt_zgdz`.`dt_attack_event` (`DT_ID`, `DT_TIME`, `DT_SRCZONENAME`, `DT_DESTZONENAME`, `DT_SRCIPADDR`, `DT_DESTIPADDR`, `DT_DESTPORT`, `DT_THREATNAME`, `DT_METHODNAMECN`, `DT_METHODSUBNAMECN`, `DT_AOOLICATION`, `DT_CVE`, `DT_HTTPHOST`, `DT_HTTPFIRSTLINE`, `DT_PAYLOAD`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);", strconv.Itoa(con-1), k.OutputJSON.(map[string]interface{})["Time"].(string), k.OutputJSON.(map[string]interface{})["SrcZoneName"].(string), k.OutputJSON.(map[string]interface{})["DestZoneName"].(string), k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string), k.OutputJSON.(map[string]interface{})["DestIPAddr"].(string), strconv.FormatFloat(k.OutputJSON.(map[string]interface{})["DestPort"].(float64), 'f', -1, 64), k.OutputJSON.(map[string]interface{})["ThreatName"].(string), k.OutputJSON.(map[string]interface{})["MethodNameCN"].(string), k.OutputJSON.(map[string]interface{})["MethodSubNameCN"].(string), k.OutputJSON.(map[string]interface{})["Application"].(string), k.OutputJSON.(map[string]interface{})["CVE"].(string), k.OutputJSON.(map[string]interface{})["HttpHost"].(string), k.OutputJSON.(map[string]interface{})["HttpFirstLine"].(string), k.OutputJSON.(map[string]interface{})["Payload"].(string))
|
||
if err != nil {
|
||
log.Println(err)
|
||
}
|
||
// 获取插入操作的最后插入ID和受影响的行数
|
||
lastInsertId, err := result.LastInsertId()
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
rowsAffected, err := result.RowsAffected()
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
log.Printf("Last Insert ID: %d, Rows Affected: %d\n", lastInsertId, rowsAffected)
|
||
}
|
||
}
|
||
} else {
|
||
//计算页数
|
||
totalPages := int(math.Floor(float64(count_pages))/float64(200) + 1)
|
||
for i := 0; i < totalPages; i++ {
|
||
values := url.Values{}
|
||
values.Add("xml", "<rpc message-id='101' xmlns='urn:ietf:params:xml:ns:netconf:base:1.0' xmlns:web='urn:ietf:params:xml:ns:netconf:base:1.0'><get-bulk><filter type='subtree'><top xmlns='http://www.unis.cn/netconf/data:1.0' xmlns:web='http://www.unis.cn/netconf/base:1.0' xmlns:data='http://www.unis.cn/netconf/data:1.0'><NTOP><LogPaging><Log><LogType>1</LogType><UserID/><ID/><TimeFilter><StartTime>"+dayStart.Format("2006-01-02T15:04:05")+"</StartTime><EndTime>"+dayEnd.Format("2006-01-02T15:04:05")+"</EndTime></TimeFilter><PageNo>"+strconv.Itoa(i+1)+"</PageNo><CountPerPage>200</CountPerPage><TotalCounts/><InputJSON>{"SrcZoneName":"Untrust","DestZoneName":"Trust"}</InputJSON><OutputJSON/></Log></LogPaging></NTOP></top></filter></get-bulk></rpc>")
|
||
values.Add("req_menu", "M_Monitor/M_AtkLog/M_ThreatLog")
|
||
//请求头信息
|
||
header := map[string]string{
|
||
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
|
||
"referer": "https://11.2.68.146/wnm/frame/index.php",
|
||
"cookie": cookieStr,
|
||
}
|
||
//获取当天每页数据
|
||
daydata := conn.DT_POST("https://11.2.68.146/wnm/get.j", header, bytes.NewBufferString(values.Encode()))
|
||
for _, k := range Date_v(daydata).NTOP.LogPaging {
|
||
// log.Println(len(sheet.Rows()))
|
||
con := len(sheet.Rows()) + 1
|
||
// IP := conn.DT_GET("http://ip-api.com/json/"+k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string)+"?lang=zh-CN", nil, nil)
|
||
sheet.Cell("A" + strconv.Itoa(con)).SetString(strconv.Itoa(con - 1)) // 第一列 (A1)
|
||
sheet.Cell("B" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["Time"].(string))
|
||
sheet.Cell("C" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["SrcZoneName"].(string))
|
||
sheet.Cell("D" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["DestZoneName"].(string))
|
||
sheet.Cell("E" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string))
|
||
sheet.Cell("F" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["DestIPAddr"].(string))
|
||
sheet.Cell("G" + strconv.Itoa(con)).SetString(strconv.FormatFloat(k.OutputJSON.(map[string]interface{})["DestPort"].(float64), 'f', -1, 64))
|
||
sheet.Cell("H" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["ThreatName"].(string))
|
||
sheet.Cell("I" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["MethodNameCN"].(string))
|
||
sheet.Cell("J" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["MethodSubNameCN"].(string))
|
||
sheet.Cell("K" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["Application"].(string))
|
||
sheet.Cell("L" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["CVE"].(string))
|
||
sheet.Cell("M" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["HttpHost"].(string))
|
||
sheet.Cell("N" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["HttpFirstLine"].(string))
|
||
sheet.Cell("O" + strconv.Itoa(con)).SetString(k.OutputJSON.(map[string]interface{})["Payload"].(string))
|
||
// sheet.Cell("P" + strconv.Itoa(Con)).SetString(Date_get(IP).(map[string]interface{})["country"].(string) + "." + Date_get(IP).(map[string]interface{})["city"].(string) + "/" + Date_get(IP).(map[string]interface{})["isp"].(string))
|
||
log.Printf("开始插入%s数据:%d %s", dayStart.Format("2006-01-02T15:04:05"), con, k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string))
|
||
// 调用ExecuteSQL函数执行插入操作
|
||
//查询数据库中是否有重复数据
|
||
//查询sql 获取用户信息
|
||
rows, err := dbpool.QueryRows("SELECT `DT_TIME` FROM `dt_zgdz`.`dt_attack_event` WHERE DT_TIME = ?;", k.OutputJSON.(map[string]interface{})["Time"].(string))
|
||
if err != nil {
|
||
log.Println(err)
|
||
}
|
||
defer rows.Close()
|
||
var timeStr sql.NullString
|
||
// var typecho_userss []string
|
||
for rows.Next() {
|
||
if err := rows.Scan(&timeStr); err != nil {
|
||
log.Println(err)
|
||
}
|
||
// typecho_userss = append(typecho_userss, timeStr)
|
||
}
|
||
if err := rows.Err(); err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
if k.OutputJSON.(map[string]interface{})["Time"].(string) != timeStr.String {
|
||
result, err := dbpool.ExecuteSQL("INSERT INTO `dt_zgdz`.`dt_attack_event` (`DT_ID`, `DT_TIME`, `DT_SRCZONENAME`, `DT_DESTZONENAME`, `DT_SRCIPADDR`, `DT_DESTIPADDR`, `DT_DESTPORT`, `DT_THREATNAME`, `DT_METHODNAMECN`, `DT_METHODSUBNAMECN`, `DT_AOOLICATION`, `DT_CVE`, `DT_HTTPHOST`, `DT_HTTPFIRSTLINE`, `DT_PAYLOAD`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);", strconv.Itoa(con-1), k.OutputJSON.(map[string]interface{})["Time"].(string), k.OutputJSON.(map[string]interface{})["SrcZoneName"].(string), k.OutputJSON.(map[string]interface{})["DestZoneName"].(string), k.OutputJSON.(map[string]interface{})["SrcIPAddr"].(string), k.OutputJSON.(map[string]interface{})["DestIPAddr"].(string), strconv.FormatFloat(k.OutputJSON.(map[string]interface{})["DestPort"].(float64), 'f', -1, 64), k.OutputJSON.(map[string]interface{})["ThreatName"].(string), k.OutputJSON.(map[string]interface{})["MethodNameCN"].(string), k.OutputJSON.(map[string]interface{})["MethodSubNameCN"].(string), k.OutputJSON.(map[string]interface{})["Application"].(string), k.OutputJSON.(map[string]interface{})["CVE"].(string), k.OutputJSON.(map[string]interface{})["HttpHost"].(string), k.OutputJSON.(map[string]interface{})["HttpFirstLine"].(string), k.OutputJSON.(map[string]interface{})["Payload"].(string))
|
||
if err != nil {
|
||
log.Println(err)
|
||
}
|
||
// 获取插入操作的最后插入ID和受影响的行数
|
||
lastInsertId, err := result.LastInsertId()
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
rowsAffected, err := result.RowsAffected()
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
log.Printf("Last Insert ID: %d, Rows Affected: %d\n", lastInsertId, rowsAffected)
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
// 移动到下一天
|
||
current = current.AddDate(0, 0, 1)
|
||
}
|
||
// 保存修改后的 Excel 文件
|
||
if err := ss.Validate(); err != nil {
|
||
log.Fatalf("验证文件时出错: %s", err)
|
||
}
|
||
log.Println("表格生成完成,保存文件:" + "防火墙安全事件" + time.Unix(tool.Timestamp("second"), 0).Format("20060102") + ".xlsx")
|
||
if err := ss.SaveToFile("防火墙安全事件" + time.Unix(tool.Timestamp("second"), 0).Format("20060102") + ".xlsx"); err != nil {
|
||
log.Fatalf("保存文件时出错: %s", err)
|
||
}
|
||
}
|
||
func Date_get(jsonSter string) interface{} {
|
||
var jsonstr interface{}
|
||
err := json.Unmarshal([]byte(jsonSter), &jsonstr)
|
||
if err != nil {
|
||
log.Fatalf("JSON 解析失败: %v", err)
|
||
}
|
||
return jsonstr
|
||
}
|
||
|
||
func Date_v(jsonStr string) *Person {
|
||
var person Person
|
||
err := json.Unmarshal([]byte(jsonStr), &person)
|
||
if err != nil {
|
||
log.Fatalf("JSON 解析失败: %v", err)
|
||
}
|
||
// 手动解析 InputJSON 和 OutputJSON 字段
|
||
for i := range person.NTOP.LogPaging {
|
||
logPaging := &person.NTOP.LogPaging[i]
|
||
|
||
// 解析 InputJSON
|
||
var inputJSON map[string]interface{}
|
||
err := json.Unmarshal([]byte(logPaging.InputJSON.(string)), &inputJSON)
|
||
if err != nil {
|
||
log.Fatalf("解析 InputJSON 失败: %v", err)
|
||
}
|
||
logPaging.InputJSON = inputJSON // 更新为解析后的数据
|
||
|
||
// 解析 OutputJSON
|
||
var outputJSON map[string]interface{}
|
||
err = json.Unmarshal([]byte(logPaging.OutputJSON.(string)), &outputJSON)
|
||
if err != nil {
|
||
log.Fatalf("解析 OutputJSON 失败: %v", err)
|
||
}
|
||
logPaging.OutputJSON = outputJSON // 更新为解析后的数据
|
||
}
|
||
// 输出结果
|
||
// log.Printf("解析结果: %+v\n", person.NTOP.LogPaging[4].OutputJSON.(map[string]interface{})["SrcPort"])
|
||
return &person
|
||
}
|
||
|
||
type Person struct {
|
||
NTOP NTOP `json:"NTOP"`
|
||
}
|
||
type NTOP struct {
|
||
LogPaging []LogPaging `json:"LogPaging"`
|
||
}
|
||
type LogPaging struct {
|
||
LogType string `json:"LogType"` //日志ID
|
||
ID string `json:"ID"`
|
||
UserID string `json:"UserID"`
|
||
PageNo string `json:"PageNo"` //页数
|
||
CountPerPage string `json:"CountPerPage"` //每页计数
|
||
TotalCounts string `json:"TotalCounts"` //总条数
|
||
InputJSON interface{} `json:"InputJSON"` //输入参数
|
||
OutputJSON interface{} `json:"OutputJSON"` //输出参数
|
||
TimeFilter TimeFilter `json:"TimeFilter"` //本次查询时间区间
|
||
}
|
||
|
||
type InputJSON struct {
|
||
SrcZoneName string `json:"SrcZoneName"` //源安全域
|
||
DestZoneName string `json:"DestZoneName"` //目的安全域
|
||
}
|
||
|
||
type OutputJSON struct {
|
||
SrcPort string `json:"SrcPort"` //源端口
|
||
DestPort string `json:"DestPort"` //目的端口
|
||
Action string `json:"Action"`
|
||
AttackCount string `json:"AttackCount"` //攻击计数
|
||
SrcVrfIndex string `json:"SrcVrfIndex"`
|
||
ThreatID string `json:"ThreatID"`
|
||
Severity string `json:"Severity"`
|
||
HddInfo string `json:"HddInfo"`
|
||
Application string `json:"Application"` //应用协议
|
||
ThreatName string `json:"ThreatName"` //威胁名称
|
||
SrcRegion string `json:"SrcRegion"` //源区域
|
||
DestRegion string `json:"DestRegion"` //目的区域
|
||
ThreatType string `json:"ThreatType"` //威胁类型 {入侵防御}
|
||
Time string `json:"Time"` //时间
|
||
ContextName string `json:"ContextName"` //上下文名称
|
||
Policy string `json:"Policy"` //策略
|
||
Protocol string `json:"Protocol"` //传输协议
|
||
SrcIPAddr string `json:"SrcIPAddr"` //源IP
|
||
User string `json:"User"` //用户
|
||
DestIPAddr string `json:"DestIPAddr"` //目的IP
|
||
SrcZoneName string `json:"SrcZoneName"` //源安全域
|
||
DestZoneName string `json:"DestZoneName"` //目的安全域
|
||
CVE string `json:"CVE"` //漏洞披露
|
||
MSB string `json:"MSB"`
|
||
BID string `json:"BID"`
|
||
RealIP string `json:"RealIP"`
|
||
CapturePktName string `json:"CapturePktName"`
|
||
HttpHost string `json:"HttpHost"` //host头
|
||
HttpFirstLine string `json:"HttpFirstLine"` //请求路径
|
||
Payload string `json:"Payload"` //请求数据
|
||
MethodName string `json:"MethodName"` //方法名称
|
||
MethodNameCN string `json:"MethodNameCN"` //方法名称中国(攻击类别)
|
||
MethodSubName string `json:"MethodSubName"` //方法子名称
|
||
MethodSubNameCN string `json:"MethodSubNameCN"` //方法子名称中国(具体攻击形式)
|
||
LoginUserName string `json:"LoginUserName"`
|
||
LoginPassword string `json:"LoginPassword"`
|
||
}
|
||
|
||
type TimeFilter struct {
|
||
StartTime string `json:"StartTime"`
|
||
EndTime string `json:"EndTime"`
|
||
}
|