Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alpkeskin
GitHub Repository: alpkeskin/mosint
Path: blob/master/v3/pkg/services/intelx/intelx.go
689 views
1
/*
2
Copyright © 2023 github.com/alpkeskin
3
*/
4
package intelx
5
6
import (
7
"context"
8
"fmt"
9
"strings"
10
11
"github.com/IntelligenceX/SDK/Go/ixapi"
12
"github.com/alpkeskin/mosint/v3/internal/config"
13
"github.com/alpkeskin/mosint/v3/internal/spinner"
14
"github.com/fatih/color"
15
)
16
17
type Intelx struct {
18
Response []string
19
}
20
21
func New() *Intelx {
22
return &Intelx{}
23
}
24
25
func (i *Intelx) Search(email string) {
26
spinner := spinner.New("Breached Data Searching")
27
spinner.Start()
28
29
key := config.Cfg.Services.IntelXApiKey
30
if strings.EqualFold(key, "") {
31
spinner.StopFail()
32
spinner.SetMessage("IntelX Api Key is empty")
33
return
34
}
35
36
api := ixapi.IntelligenceXAPI{}
37
ctx := context.Background()
38
api.Init("", key)
39
results, selectorInvalid, err := api.Search(ctx, email, 2, config.Cfg.Settings.IntelXMaxResults, ixapi.DefaultWaitSortTime, ixapi.DefaultTimeoutGetResults)
40
41
if err != nil {
42
spinner.StopFail()
43
spinner.SetMessage(err.Error())
44
return
45
}
46
if len(results) == 0 && selectorInvalid {
47
spinner.Stop()
48
return
49
}
50
51
response := generateResultText(ctx, &api, results)
52
53
i.Response = append(i.Response, response...)
54
spinner.Stop()
55
}
56
57
func (i *Intelx) Print() {
58
key := config.Cfg.Services.IntelXApiKey
59
if strings.EqualFold(key, "") {
60
return
61
}
62
63
fmt.Println("[*] IntelX Search Results")
64
if len(i.Response) == 0 {
65
fmt.Println(color.RedString("[!]"), "No results found")
66
return
67
}
68
69
for _, v := range i.Response {
70
fmt.Println(color.GreenString("[+]"), v)
71
}
72
}
73
74
func generateResultText(ctx context.Context, api *ixapi.IntelligenceXAPI, Records []ixapi.SearchResult) (response []string) {
75
for n, record := range Records {
76
url := fmt.Sprintf("https://intelx.io/?did=%s", record.SystemID.String())
77
78
response = append(response, url)
79
80
if n >= config.Cfg.Settings.IntelXMaxResults {
81
break
82
}
83
}
84
85
return response
86
}
87
88