demo.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package main
  2. /*
  3. #cgo CFLAGS : -I./
  4. #cgo LDFLAGS: -L./ -ltde_sdk
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include "libtde_sdk.h"
  8. */
  9. import "C"
  10. import (
  11. "encoding/binary"
  12. "fmt"
  13. "github.com/golang/protobuf/proto"
  14. "go_sdk/tde" //tde.proto生成的文件引入
  15. "time"
  16. "unsafe"
  17. )
  18. var initSign C.int
  19. var offUp C.int
  20. func init() {
  21. // 初始化
  22. initSign = C.int(C.InitConfig(C.CString("./config.ini")))
  23. // initSign = C.int(C.InitConfigFromHdfs(C.CString("xx.xx.xx.xx:xxx"), C.CString("hdfs:/home/ti/tde/config/config.ini")))
  24. }
  25. func run() {
  26. // 调用方的服务
  27. if initSign != C.int(0) {
  28. fmt.Println("tde sdk init failed! InitConfig return: ", initSign)
  29. return
  30. }
  31. // 离线升级任务
  32. // offlineUpgrade()
  33. for {
  34. time.Sleep(1 * time.Second)
  35. url := C.CString("download.adobe-air.com")
  36. data := C.GetUrlInfo(url, 0)
  37. resp := tde.GetUrlInfo_Response{}
  38. // data := C.GetDomainInfo(url, 0)
  39. // resp := tde.GetDomainInfo_Response{}
  40. lenBytes := C.GoBytes(data, C.int(4))
  41. dataLen := uint32(binary.LittleEndian.Uint32(lenBytes))
  42. allLen := dataLen + 4
  43. result := C.GoBytes(data, C.int(allLen))
  44. C.free(unsafe.Pointer(url))
  45. C.free(unsafe.Pointer(data))
  46. proto.Unmarshal(result[4:], &resp)
  47. fmt.Println("resp info size: ", len(resp.Info))
  48. for index, info := range resp.Info {
  49. fmt.Println("========info ", index+1, "========")
  50. meta := info.Meta
  51. security := info.Security
  52. fmt.Println("ioc域名:", meta.Value1)
  53. fmt.Println("ioc端口:", meta.Value2)
  54. fmt.Println("ioc uri:", meta.Value3)
  55. fmt.Println("action:", meta.Action)
  56. fmt.Println("恶意家族:", security.MaliciousFamily)
  57. }
  58. }
  59. }
  60. func offlineUpgrade() {
  61. // 离线升级
  62. offUp = C.int(C.DoOfflineUpgrade(C.CString("/var/lib/tde/data/offline/TI_virsec_compromise_0_2020.04.16.1157.dat")))
  63. fmt.Println("offlineUpgrade return: ", offUp)
  64. }
  65. func main() {
  66. run()
  67. }