Projects STRLCPY mosint Commits 09c8a847
🤬
  • banner.png
  • ■ ■ ■ ■ ■
    go.mod
    skipped 3 lines
    4 4   
    5 5  require (
    6 6   github.com/AfterShip/email-verifier v1.3.0
     7 + github.com/IntelligenceX/SDK v0.0.0-20211026051259-f2f7df085178
    7 8   github.com/dimiro1/banner v1.1.0
    8 9   github.com/fatih/color v1.13.0
    9 10   github.com/mattn/go-colorable v0.1.9
    10 11   github.com/olekukonko/tablewriter v0.0.5
    11 12   github.com/rocketlaunchr/google-search v1.1.4
     13 + github.com/schollz/progressbar/v3 v3.8.6
    12 14   github.com/valyala/fasthttp v1.31.0
    13 15  )
    14 16   
    skipped 5 lines
    20 22   github.com/antchfx/xmlquery v1.0.0 // indirect
    21 23   github.com/antchfx/xpath v1.0.0 // indirect
    22 24   github.com/common-nighthawk/go-figure v0.0.0-20200609044655-c4b36f998cf2 // indirect
     25 + github.com/go-dedup/megophone v0.0.0-20170830025436-f01be21026f5 // indirect
     26 + github.com/go-dedup/simhash v0.0.0-20170904020510-9ecaca7b509c // indirect
     27 + github.com/go-dedup/text v0.0.0-20170907015346-8bb1b95e3cb7 // indirect
    23 28   github.com/gobwas/glob v0.2.3 // indirect
    24 29   github.com/gocolly/colly/v2 v2.0.1 // indirect
    25  - github.com/golang/protobuf v1.3.1 // indirect
     30 + github.com/gofrs/uuid v4.2.0+incompatible // indirect
     31 + github.com/golang/protobuf v1.4.3 // indirect
     32 + github.com/google/go-cmp v0.5.4 // indirect
    26 33   github.com/hbollon/go-edlib v1.4.0 // indirect
    27 34   github.com/kennygrant/sanitize v1.2.4 // indirect
    28 35   github.com/klauspost/compress v1.13.4 // indirect
    29 36   github.com/mattn/go-isatty v0.0.14 // indirect
    30  - github.com/mattn/go-runewidth v0.0.9 // indirect
     37 + github.com/mattn/go-runewidth v0.0.13 // indirect
     38 + github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect
     39 + github.com/rivo/uniseg v0.2.0 // indirect
    31 40   github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca // indirect
    32 41   github.com/temoto/robotstxt v1.1.1 // indirect
    33 42   github.com/valyala/bytebufferpool v1.0.0 // indirect
    34  - golang.org/x/net v0.0.0-20210510120150-4163338589ed // indirect
    35  - golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect
     43 + golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838 // indirect
     44 + golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 // indirect
     45 + golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27 // indirect
     46 + golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
    36 47   golang.org/x/text v0.3.6 // indirect
    37  - golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 // indirect
     48 + golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
     49 + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
    38 50   google.golang.org/appengine v1.6.1 // indirect
     51 + google.golang.org/protobuf v1.25.0 // indirect
     52 + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
    39 53   h12.io/socks v1.0.3 // indirect
    40 54  )
    41 55   
  • ■ ■ ■ ■ ■ ■
    go.sum
     1 +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
    1 2  github.com/AfterShip/email-verifier v1.3.0 h1:RhRLm3v2Iui5ZmWg6e+Q0xQU2Bai3mgINkY2t2p9u0g=
    2 3  github.com/AfterShip/email-verifier v1.3.0/go.mod h1:XeRhBrlxgnon6zOZ05EBNNanuxSy5uXl22RRBd5Jcug=
     4 +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
     5 +github.com/IntelligenceX/SDK v0.0.0-20211026051259-f2f7df085178 h1:3BGr4zPVNltiGPrwF2kjPaiBk3cLguAC0CZkT8n68po=
     6 +github.com/IntelligenceX/SDK v0.0.0-20211026051259-f2f7df085178/go.mod h1:sF7U8A+lYVdZYVmdbW1QceYaGpI1h2mXMbNdllz6uYs=
    3 7  github.com/PuerkitoBio/goquery v1.5.0 h1:uGvmFXOA73IKluu/F84Xd1tt/z07GYm8X49XKHP7EJk=
    4 8  github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg=
    5 9  github.com/andybalholm/brotli v1.0.2 h1:JKnhI/XQ75uFBTiuzXpzFrUriDPiZjlOSzh6wXogP0E=
    skipped 6 lines
    12 16  github.com/antchfx/xmlquery v1.0.0/go.mod h1:/+CnyD/DzHRnv2eRxrVbieRU/FIF6N0C+7oTtyUtCKk=
    13 17  github.com/antchfx/xpath v1.0.0 h1:Q5gFgh2O40VTSwMOVbFE7nFNRBu3tS21Tn0KAWeEjtk=
    14 18  github.com/antchfx/xpath v1.0.0/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
     19 +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
     20 +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
    15 21  github.com/common-nighthawk/go-figure v0.0.0-20200609044655-c4b36f998cf2 h1:tjT4Jp4gxECvsJcYpAMtW2I3YqzBTPuB67OejxXs86s=
    16 22  github.com/common-nighthawk/go-figure v0.0.0-20200609044655-c4b36f998cf2/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w=
    17 23  github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
    skipped 1 lines
    19 25  github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
    20 26  github.com/dimiro1/banner v1.1.0 h1:TSfy+FsPIIGLzaMPOt52KrEed/omwFO1P15VA8PMUh0=
    21 27  github.com/dimiro1/banner v1.1.0/go.mod h1:tbL318TJiUaHxOUNN+jnlvFSgsh/RX7iJaQrGgOiTco=
     28 +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
     29 +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
    22 30  github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
    23 31  github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
     32 +github.com/go-dedup/megophone v0.0.0-20170830025436-f01be21026f5 h1:4U+x+EB1P66zwYgTjxWXSOT8vF+651Ksr1lojiCZnT8=
     33 +github.com/go-dedup/megophone v0.0.0-20170830025436-f01be21026f5/go.mod h1:poR/Cp00iqtqu9ltFwl6C00sKC0HY13u/Gh05ZBmP54=
     34 +github.com/go-dedup/simhash v0.0.0-20170904020510-9ecaca7b509c h1:mucYYQn+sMGNSxidhleonzAdwL203RxhjJGnxQU4NWU=
     35 +github.com/go-dedup/simhash v0.0.0-20170904020510-9ecaca7b509c/go.mod h1:gO3u2bjRAgUaLdQd2XK+3oooxrheOAx1BzS7WmPzw1s=
     36 +github.com/go-dedup/text v0.0.0-20170907015346-8bb1b95e3cb7 h1:11wFcswN+37U+ByjxdKzsRY5KzNqqq5Uk5ztxnLOc7w=
     37 +github.com/go-dedup/text v0.0.0-20170907015346-8bb1b95e3cb7/go.mod h1:wSsK4VOECOSfSYTzkBFw+iGY7wj59e7X96ABtNj9aCQ=
    24 38  github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
    25 39  github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
    26 40  github.com/gocolly/colly/v2 v2.0.1 h1:GGPzBEdrEsavhzVK00FQXMMHBHRpwrbbCCcEKM/0Evw=
    27 41  github.com/gocolly/colly/v2 v2.0.1/go.mod h1:ePrRZlJcLTU2C/f8pJzXfkdBtBDHL5hOaKLcBoiJcq8=
    28  -github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
     42 +github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0=
     43 +github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
     44 +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
     45 +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
     46 +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
    29 47  github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
     48 +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
     49 +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
     50 +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
     51 +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
     52 +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
     53 +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
     54 +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
     55 +github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM=
     56 +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
    30 57  github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
     58 +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
     59 +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
     60 +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
     61 +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
     62 +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
     63 +github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M=
     64 +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
    31 65  github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364 h1:5XxdakFhqd9dnXoAZy1Mb2R/DZ6D1e+0bGC/JhucGYI=
    32 66  github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364/go.mod h1:eDJQioIyy4Yn3MVivT7rv/39gAJTrA7lgmYr8EW950c=
    33 67  github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw=
    skipped 2 lines
    36 70  github.com/hbollon/go-edlib v1.4.0/go.mod h1:wnt6o6EIVEzUfgbUZY7BerzQ2uvzp354qmS2xaLkrhM=
    37 71  github.com/jawher/mow.cli v1.1.0/go.mod h1:aNaQlc7ozF3vw6IJ2dHjp2ZFiA4ozMIYY6PyuRJwlUg=
    38 72  github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
     73 +github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw=
    39 74  github.com/kennygrant/sanitize v1.2.4 h1:gN25/otpP5vAsO2djbMhF/LQX6R7+O1TB4yv8NzpJ3o=
    40 75  github.com/kennygrant/sanitize v1.2.4/go.mod h1:LGsjYYtgxbetdg5owWB2mpgUL6e2nfw2eObZ0u0qvak=
    41 76  github.com/klauspost/compress v1.13.4 h1:0zhec2I8zGnjWcKyLl6i3gPqKANCCn5e9xmviEEeX6s=
    skipped 9 lines
    51 86  github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
    52 87  github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
    53 88  github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
    54  -github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
    55 89  github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
     90 +github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
     91 +github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
     92 +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ=
     93 +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw=
    56 94  github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms=
    57 95  github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
    58 96  github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
    skipped 1 lines
    60 98  github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
    61 99  github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
    62 100  github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
     101 +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
     102 +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
     103 +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
    63 104  github.com/rocketlaunchr/google-search v1.1.4 h1:11tA5CoeUjoNnvdyUMGwyuxzihbBRDhoEFXlMmPm0k4=
    64 105  github.com/rocketlaunchr/google-search v1.1.4/go.mod h1:6WRqswVvv6PJtvGCB1sEVxt726NolmA0QTl6xSEXel0=
    65 106  github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca h1:NugYot0LIVPxTvN8n+Kvkn6TrbMyxQiuvKdEwFdR9vI=
    66 107  github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU=
     108 +github.com/schollz/progressbar/v3 v3.8.6 h1:QruMUdzZ1TbEP++S1m73OqRJk20ON11m6Wqv4EoGg8c=
     109 +github.com/schollz/progressbar/v3 v3.8.6/go.mod h1:W5IEwbJecncFGBvuEh4A7HT1nZZ6WNIL2i3qbnI0WKY=
    67 110  github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
    68 111  github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
    69 112  github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
    skipped 10 lines
    80 123  golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
    81 124  golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
    82 125  golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
     126 +golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838 h1:71vQrMauZZhcTVK6KdYM+rklehEEwb3E+ZhaE5jrPrE=
     127 +golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
     128 +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
     129 +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
     130 +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
     131 +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
    83 132  golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
     133 +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
     134 +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
    84 135  golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
     136 +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
    85 137  golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
    86 138  golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
    87 139  golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
    88 140  golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
    89 141  golang.org/x/net v0.0.0-20201207224615-747e23833adb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
    90 142  golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
    91  -golang.org/x/net v0.0.0-20210510120150-4163338589ed h1:p9UgmWI9wKpfYmgaV/IZKGdXc5qEK45tDwwwDyjS26I=
    92 143  golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
     144 +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE=
     145 +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
     146 +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
     147 +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
     148 +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
    93 149  golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
     150 +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
    94 151  golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
    95 152  golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
    96 153  golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
    skipped 5 lines
    102 159  golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
    103 160  golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
    104 161  golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
    105  -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I=
     162 +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
    106 163  golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
     164 +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27 h1:XDXtA5hveEEV8JB2l7nhMTp3t3cHp9ZpwcdjqyEWLlo=
     165 +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
    107 166  golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
     167 +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
     168 +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
    108 169  golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
    109 170  golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
    110 171  golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
    111 172  golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
    112 173  golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
    113  -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 h1:Hir2P/De0WpUhtrKGGjvSb2YxUgyZ7EFOSLIcSSpiwE=
    114 174  golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
     175 +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs=
     176 +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
    115 177  golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
     178 +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
     179 +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
     180 +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
     181 +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
    116 182  golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
     183 +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
     184 +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
     185 +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
     186 +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
     187 +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
    117 188  google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I=
    118 189  google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
     190 +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
     191 +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
     192 +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
     193 +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
     194 +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
     195 +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
     196 +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
     197 +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
     198 +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
     199 +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
     200 +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
     201 +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
     202 +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
     203 +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
     204 +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
     205 +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
    119 206  gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
    120 207  gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
    121 208  gopkg.in/h2non/gock.v1 v1.1.2 h1:jBbHXgGBK/AoPVfJh5x4r/WxIrElvbLel8TCZkkZJoY=
    122 209  gopkg.in/h2non/gock.v1 v1.1.2/go.mod h1:n7UGz/ckNChHiK05rDoiC4MYSunEC/lyaUm2WWaDva0=
    123  -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
    124 210  gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
     211 +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
     212 +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
    125 213  h12.io/socks v1.0.3 h1:Ka3qaQewws4j4/eDQnOdpr4wXsC//dXtWvftlIcCQUo=
    126 214  h12.io/socks v1.0.3/go.mod h1:AIhxy1jOId/XCz9BO+EIgNL2rQiPTBNnOfnVnQ+3Eck=
     215 +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
     216 +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
    127 217   
  • ■ ■ ■ ■ ■ ■
    keys.json
    1  -[
    2  - {
    3  - "BreachDirectory.org API Key": "",
    4  - "hunter.io API Key": "",
    5  - "EmailRep.io API Key": ""
    6  - }
    7  -]
     1 +{
     2 + "BreachDirectory.org API Key": "",
     3 + "Hunter.io API Key": "",
     4 + "EmailRep.io API Key": "",
     5 + "Intelx.io API Key": ""
     6 +}
  • ■ ■ ■ ■ ■
    main.go
    1  -// https://github.com/alpkeskin/
     1 +// mosint v2.1
     2 +// Author: Alp Keskin
     3 +// Github: github.com/alpkeskin
     4 +// Website: https://imalp.co
    2 5  package main
    3 6   
    4 7  import (
     8 + "bufio"
    5 9   "flag"
    6 10   "fmt"
    7  - "time"
     11 + "log"
     12 + "main/modules"
     13 + "strconv"
    8 14   
    9  - "main/modules"
    10 15   "os"
    11 16   
    12 17   "github.com/dimiro1/banner"
    13 18   "github.com/fatih/color"
    14 19   "github.com/mattn/go-colorable"
    15 20   "github.com/olekukonko/tablewriter"
     21 + "github.com/schollz/progressbar/v3"
    16 22  )
    17 23   
    18 24  func init() {
    19 25   templ := `{{ .Title "mosint" "" 2 }}
    20  - {{ .AnsiColor.BrightWhite }}v2.0{{ .AnsiColor.Default }}
     26 + {{ .AnsiColor.BrightWhite }}v2.1{{ .AnsiColor.Default }}
    21 27   {{ .AnsiColor.BrightCyan }}https://github.com/alpkeskin/{{ .AnsiColor.Default }}
    22 28   Now: {{ .Now "Monday, 2 Jan 2006" }}`
    23 29   
    skipped 4 lines
    28 34  func help_menu() {
    29 35   data := [][]string{
    30 36   {"-e", "Set target email", "Yes"},
    31  - {"-v", "Verify the target email", "No"},
    32  - {"-ss", "Social scan for target email", "No"},
    33  - {"-re", "Find related emails with target email", "No"},
    34  - {"-rd", "Find related domains with target email", "No"},
    35  - {"-l", "Find password leaks for target email", "No"},
    36  - {"-pd", "Search pastebin dumps for target email", "No"},
    37  - {"-er", "EmailRep.io API", "No"},
    38  - {"-d", "More information about target email's domain", "No"},
     37 + {"-verify", "Verify the target email", "No"},
     38 + {"-social", "Social scan for target email", "No"},
     39 + {"-relateds", "Find related emails and domains with target email", "No"},
     40 + {"-leaks", "Find password leaks for target email", "No"},
     41 + {"-dumps", "Search pastebin dumps for target email", "No"},
     42 + {"-domain", "More information about target email's domain", "No"},
     43 + {"-v", "Version of mosint", "No"},
     44 + {"-h", "Help Menu", "No"},
    39 45   {"-all", "All features!", "No"},
    40 46   }
    41 47   table := tablewriter.NewWriter(os.Stdout)
    skipped 5 lines
    47 53   color.Yellow("Example: go run main.go -e [email protected] -all")
    48 54  }
    49 55   
     56 +func verifyPrint(verifyData modules.VerifyStruct, emailRepData modules.EmailRepStruct, email string) {
     57 + if verifyData.IsVerified {
     58 + fmt.Println(email+" =>", color.GreenString("Verified \u2714"))
     59 + outputText += email + " => Verified \n"
     60 + } else {
     61 + fmt.Println(email+" =>", color.RedString("Not Verified \u2718"))
     62 + outputText += email + " => Not Verified \n"
     63 + }
     64 + if verifyData.IsDisposable {
     65 + fmt.Println(email+" =>", color.RedString("Disposable \u2718"))
     66 + outputText += email + " => Disposable \n"
     67 + } else {
     68 + fmt.Println(email+" =>", color.GreenString("Not Disposable \u2714"))
     69 + outputText += email + " => Not Disposable \n"
     70 + }
     71 + 
     72 + if modules.GetAPIKey("EmailRep.io API Key") != "" {
     73 + fmt.Println("\nEmailRep Data for", color.WhiteString(email))
     74 + outputText += "\nEmailRep Data for " + email + "\n"
     75 + fmt.Println("|- Reputation:", color.YellowString(emailRepData.Reputation))
     76 + outputText += "|- Reputation: " + emailRepData.Reputation + "\n"
     77 + fmt.Println("|- Blacklisted:", color.WhiteString(strconv.FormatBool(emailRepData.Details.Blacklisted)))
     78 + outputText += "|- Blacklisted: " + strconv.FormatBool(emailRepData.Details.Blacklisted) + "\n"
     79 + fmt.Println("|- Malicious Activity:", color.WhiteString(strconv.FormatBool(emailRepData.Details.MaliciousActivity)))
     80 + outputText += "|- Malicious Activity: " + strconv.FormatBool(emailRepData.Details.MaliciousActivity) + "\n"
     81 + fmt.Println("|- Credential Leaked:", color.WhiteString(strconv.FormatBool(emailRepData.Details.CredentialsLeaked)))
     82 + outputText += "|- Credential Leaked: " + strconv.FormatBool(emailRepData.Details.CredentialsLeaked) + "\n"
     83 + fmt.Println("|- First Seen:", color.YellowString(emailRepData.Details.FirstSeen))
     84 + outputText += "|- First Seen: " + emailRepData.Details.FirstSeen + "\n"
     85 + fmt.Println("|- Last Seen:", color.YellowString(emailRepData.Details.LastSeen))
     86 + outputText += "|- Last Seen: " + emailRepData.Details.LastSeen + "\n"
     87 + fmt.Println("|- Day Since Domain Creation:", color.WhiteString(strconv.Itoa(emailRepData.Details.DaysSinceDomainCreation)))
     88 + outputText += "|- Day Since Domain Creation: " + strconv.Itoa(emailRepData.Details.DaysSinceDomainCreation) + "\n"
     89 + fmt.Println("|- Spam:", color.WhiteString(strconv.FormatBool(emailRepData.Details.Spam)))
     90 + outputText += "|- Spam: " + strconv.FormatBool(emailRepData.Details.Spam) + "\n"
     91 + fmt.Println("|- Free Provider:", color.WhiteString(strconv.FormatBool(emailRepData.Details.FreeProvider)))
     92 + outputText += "|- Free Provider: " + strconv.FormatBool(emailRepData.Details.FreeProvider) + "\n"
     93 + fmt.Println("|- Deliverable:", color.WhiteString(strconv.FormatBool(emailRepData.Details.Deliverable)))
     94 + outputText += "|- Deliverable: " + strconv.FormatBool(emailRepData.Details.Deliverable) + "\n"
     95 + fmt.Println("|- Valid MX:", color.WhiteString(strconv.FormatBool(emailRepData.Details.ValidMx)))
     96 + outputText += "|- Valid MX: " + strconv.FormatBool(emailRepData.Details.ValidMx) + "\n"
     97 + } else {
     98 + color.Red("EmailRep.io API Key is not set!")
     99 + outputText += "EmailRep.io API Key is not set!\n"
     100 + }
     101 +}
     102 + 
     103 +func socialPrint(filename string) {
     104 + 
     105 + f, err := os.Open(filename)
     106 + if err != nil {
     107 + log.Fatal(err)
     108 + }
     109 + outputText += "Social Media Search Results: \n"
     110 + defer f.Close()
     111 + scanner := bufio.NewScanner(f)
     112 + for scanner.Scan() {
     113 + fmt.Println("|- "+scanner.Text(), color.GreenString("\u2714"))
     114 + outputText += "|- " + scanner.Text() + "\n"
     115 + 
     116 + }
     117 + if err := scanner.Err(); err != nil {
     118 + log.Fatal(err)
     119 + }
     120 + e := os.Remove(filename)
     121 + if e != nil {
     122 + log.Fatal(e)
     123 + }
     124 +}
     125 + 
     126 +func relatedPrint(relEmails []string, relDomains []string, fromGoogle []string, hunterData modules.HunterStruct) {
     127 + 
     128 + fmt.Println("Related Emails:")
     129 + outputText += "Related Emails: \n"
     130 + for _, v := range relEmails {
     131 + fmt.Println("|- "+v, color.GreenString("\u2714"))
     132 + outputText += "|- " + v + "\n"
     133 + }
     134 + if modules.GetAPIKey("Hunter.io API Key") != "" {
     135 + for _, v := range hunterData.Data.Emails {
     136 + fmt.Println("|- "+v.Value, color.GreenString("\u2714"))
     137 + outputText += "|- " + v.Value + "\n"
     138 + }
     139 + }
     140 + println("")
     141 + fmt.Println("Related Domains:")
     142 + outputText += "Related Domains: \n"
     143 + for _, v := range relDomains {
     144 + fmt.Println("|- "+v, color.GreenString("\u2714"))
     145 + outputText += "|- " + v + "\n"
     146 + }
     147 + for _, v := range fromGoogle {
     148 + fmt.Println("|- "+v, color.GreenString("\u2714"))
     149 + outputText += "|- " + v + "\n"
     150 + }
     151 +}
     152 + 
     153 +func leakPrint(breachData modules.BreachDirectoryStruct, intelxData []string) {
     154 + fmt.Println("Password Leaks:")
     155 + outputText += "Password Leaks: \n"
     156 + if breachData.Success {
     157 + for _, v := range breachData.Result {
     158 + for _, w := range v.Sources {
     159 + fmt.Println("|- " + w)
     160 + outputText += "|- " + w + "\n"
     161 + }
     162 + if v.HasPassword {
     163 + fmt.Println("|-- "+v.Password, color.GreenString("\u2714"))
     164 + outputText += "|-- " + v.Password + "\n"
     165 + }
     166 + }
     167 + } else {
     168 + fmt.Println("|- No Password Leaks from Breach Directory")
     169 + outputText += "|- No Password Leaks from Breach Directory \n"
     170 + }
     171 + println("\nPassword Leaks from Intelx:")
     172 + if len(intelxData) > 0 {
     173 + for _, v := range intelxData {
     174 + fmt.Println("|- "+v, color.GreenString("\u2714"))
     175 + outputText += "|- " + v + "\n"
     176 + }
     177 + } else {
     178 + color.Red("No intelx file!")
     179 + outputText += "No intelx file! \n"
     180 + }
     181 +}
     182 + 
     183 +func dumpPrint(binData []string) {
     184 + fmt.Println("Pastebin and Throwbin Search Results:")
     185 + outputText += "Pastebin and Throwbin Search Results: \n"
     186 + for _, v := range binData {
     187 + fmt.Println("|- "+v, color.GreenString("\u2714"))
     188 + outputText += "|- " + v + "\n"
     189 + }
     190 +}
     191 + 
     192 +func domainPrint(table *tablewriter.Table, ipapi modules.IPAPIStruct) {
     193 + println("\nDomain Information:")
     194 + outputText += "Domain Information: \n"
     195 + fmt.Println("|- IP: "+ipapi.IP, color.GreenString("\u2714"))
     196 + outputText += "|- IP: " + ipapi.IP + "\n"
     197 + fmt.Println("|- City: "+ipapi.City, color.GreenString("\u2714"))
     198 + outputText += "|- City: " + ipapi.City + "\n"
     199 + fmt.Println("|- Region: "+ipapi.Region, color.GreenString("\u2714"))
     200 + outputText += "|- Region: " + ipapi.Region + "\n"
     201 + fmt.Println("|- Region Code: "+ipapi.RegionCode, color.GreenString("\u2714"))
     202 + outputText += "|- Region Code: " + ipapi.RegionCode + "\n"
     203 + fmt.Println("|- Country: "+ipapi.Country, color.GreenString("\u2714"))
     204 + outputText += "|- Country: " + ipapi.Country + "\n"
     205 + fmt.Println("|- Country Code: "+ipapi.CountryCode, color.GreenString("\u2714"))
     206 + outputText += "|- Country Code: " + ipapi.CountryCode + "\n"
     207 + fmt.Println("|- Country Name: "+ipapi.CountryName, color.GreenString("\u2714"))
     208 + outputText += "|- Country Name: " + ipapi.CountryName + "\n"
     209 + fmt.Println("|- Postal: "+ipapi.Postal, color.GreenString("\u2714"))
     210 + outputText += "|- Postal: " + ipapi.Postal + "\n"
     211 + fmt.Println("|- TimeZone: "+ipapi.Timezone, color.GreenString("\u2714"))
     212 + outputText += "|- TimeZone: " + ipapi.Timezone + "\n"
     213 + fmt.Println("|- Country Calling Code: "+ipapi.CountryCallingCode, color.GreenString("\u2714"))
     214 + outputText += "|- Country Calling Code: " + ipapi.CountryCallingCode + "\n"
     215 + fmt.Println("|- Currency: "+ipapi.Currency, color.GreenString("\u2714"))
     216 + outputText += "|- Currency: " + ipapi.Currency + "\n"
     217 + fmt.Println("|- Organization: "+ipapi.Org, color.GreenString("\u2714"))
     218 + outputText += "|- Organization: " + ipapi.Org + "\n"
     219 + 
     220 + println("\nDNS Records:")
     221 + table.Render()
     222 +}
     223 + 
     224 +var outputText string = ""
     225 + 
    50 226  func main() {
    51 227   var email *string = flag.String("e", "", "Set email")
    52  - var verify *bool = flag.Bool("v", false, "Verify method")
    53  - var social_scan *bool = flag.Bool("ss", false, "Social scan method")
    54  - var related_emails *bool = flag.Bool("re", false, "Related emails method")
    55  - var related_domains *bool = flag.Bool("rd", false, "Related domains method")
    56  - var leaks *bool = flag.Bool("l", false, "Find password leaks method")
    57  - var pastebin_dumps *bool = flag.Bool("pd", false, "Pastebin dumps searching method")
    58  - var emailrep *bool = flag.Bool("er", false, "EmailRep.io API")
    59  - var domain *bool = flag.Bool("d", false, "More information about domain method")
     228 + var verify *bool = flag.Bool("verify", false, "Verify method")
     229 + var social_accounts *bool = flag.Bool("social", false, "Finding registered accounts from email")
     230 + var relateds *bool = flag.Bool("relateds", false, "Finding related emails and domains from domain")
     231 + var leaks *bool = flag.Bool("leaks", false, "Finding password leaks from email")
     232 + var dumps *bool = flag.Bool("dumps", false, "Finding Pastebin dumps from email")
     233 + var domain *bool = flag.Bool("domain", false, "More information about domain")
     234 + var output *bool = flag.Bool("o", false, "Output to text file")
     235 + var version *bool = flag.Bool("v", false, "Version of mosint")
    60 236   var help *bool = flag.Bool("h", false, "Help Menu")
    61 237   var all *bool = flag.Bool("all", false, "All features!")
    62 238   flag.Parse()
    63  - if *email == "" {
     239 + println("")
     240 + if len(*email) == 0 {
    64 241   help_menu()
     242 + os.Exit(0)
    65 243   } else if *help {
    66 244   help_menu()
     245 + os.Exit(0)
     246 + } else if *version {
     247 + color.White("version: 2.1")
     248 + os.Exit(0)
     249 + } else if *all {
     250 + 
     251 + var bar = progressbar.Default(100, "mosinting")
     252 + bar.Add(5)
     253 + var verifyData = modules.VerifyEmail(*email)
     254 + bar.Add(7)
     255 + var emailRepData = modules.EmailRep(*email)
     256 + bar.Add(8)
     257 + modules.Runner(*email, "SocialScan")
     258 + bar.Add(8)
     259 + modules.Runner(*email, "Holehe")
     260 + var relEmails = modules.RelatedEmails(*email)
     261 + bar.Add(8)
     262 + var relDomains = modules.RelatedDomains(*email)
     263 + bar.Add(8)
     264 + var fromGoogle = modules.Related_domains_from_google(*email)
     265 + bar.Add(8)
     266 + var hunterData = modules.Hunter(*email)
     267 + bar.Add(8)
     268 + var breachData = modules.BreachDirectory(*email)
     269 + bar.Add(8)
     270 + var binData = modules.BinSearch(*email)
     271 + bar.Add(8)
     272 + var ipapi = modules.IPAPI(*email)
     273 + bar.Add(8)
     274 + var table = modules.DNS_lookup(*email)
     275 + bar.Add(8)
     276 + var intelxData = modules.Intelx(*email)
     277 + bar.Finish()
     278 + verifyPrint(verifyData, emailRepData, *email)
     279 + socialPrint("socialscantempresult.txt")
     280 + socialPrint("holehetempresult.txt")
     281 + relatedPrint(relEmails, relDomains, fromGoogle, hunterData)
     282 + leakPrint(breachData, intelxData)
     283 + dumpPrint(binData)
     284 + domainPrint(table, ipapi)
     285 + if *output {
     286 + var filename = modules.FileWriter(*email, outputText)
     287 + color.Green("\nOutput file: " + filename)
     288 + }
     289 + os.Exit(0)
    67 290   } else {
    68  - whilte := color.New(color.FgWhite)
    69  - boldWhite := whilte.Add(color.Bold)
    70  - fmt.Print("\nEmail > ")
    71  - boldWhite.Print(*email + "\n")
    72  - 
    73  - if *all {
    74  - start := time.Now().Unix()
    75  - modules.Verify_email(*email)
    76  - color.Magenta("Which Social Media Does " + *email + " Use?")
    77  - modules.Runner(*email, "socialscan")
    78  - color.Magenta("Related Emails:")
    79  - modules.Related_emails(*email)
    80  - modules.Runner(*email, "hunter")
    81  - color.Magenta("Related Domains:")
    82  - modules.Related_domains(*email)
    83  - modules.Related_domains_google(*email)
    84  - color.Magenta("Password Leaks:")
    85  - modules.Runner(*email, "breachdirectory")
    86  - color.Magenta("Pastebin Dumps Searching:")
    87  - modules.Pastebin_search(*email)
    88  - color.Magenta("EmailRep.io API Results:")
    89  - modules.Runner(*email, "emailrep")
    90  - color.Magenta("Domain Investigation:")
    91  - modules.DNS_lookup(*email)
    92  - modules.IPapi(*email)
    93  - modules.Subdomains(*email)
    94  - end := time.Now().Unix()
    95  - println("---------------------------------------")
    96  - print("Scan duration: ")
    97  - boldWhite.Print(fmt.Sprint(end - start))
    98  - print(" seconds.")
    99  - } else {
    100  - if *verify {
    101  - modules.Verify_email(*email)
     291 + if *verify {
     292 + verifyPrint(modules.VerifyEmail(*email), modules.EmailRep(*email), *email)
     293 + if *output {
     294 + var filename = modules.FileWriter(*email, outputText)
     295 + color.Green("\nOutput file: " + filename)
    102 296   }
    103  - if *social_scan {
    104  - color.Magenta("Which Social Media Does " + *email + " Use?")
    105  - modules.Runner(*email, "socialscan")
    106  - }
    107  - if *related_emails {
    108  - color.Magenta("Related Emails:")
    109  - modules.Related_emails(*email)
    110  - modules.Runner(*email, "hunter")
    111  - }
    112  - if *related_domains {
    113  - color.Magenta("Related Domains:")
    114  - modules.Related_domains(*email)
    115  - modules.Related_domains_google(*email)
     297 + os.Exit(0)
     298 + }
     299 + if *social_accounts {
     300 + fmt.Println("Social media accounts opened with", color.WhiteString(*email))
     301 + modules.Runner(*email, "SocialScan")
     302 + modules.Runner(*email, "Holehe")
     303 + socialPrint("socialscantempresult.txt")
     304 + socialPrint("holehetempresult.txt")
     305 + if *output {
     306 + var filename = modules.FileWriter(*email, outputText)
     307 + color.Green("\nOutput file: " + filename)
    116 308   }
    117  - if *leaks {
    118  - color.Magenta("Password Leaks:")
    119  - modules.Runner(*email, "breachdirectory")
     309 + os.Exit(0)
     310 + }
     311 + if *relateds {
     312 + relatedPrint(modules.RelatedEmails(*email), modules.RelatedDomains(*email), modules.Related_domains_from_google(*email), modules.Hunter(*email))
     313 + if *output {
     314 + var filename = modules.FileWriter(*email, outputText)
     315 + color.Green("\nOutput file: " + filename)
    120 316   }
    121  - if *pastebin_dumps {
    122  - color.Magenta("Pastebin Dumps Searching:")
    123  - modules.Pastebin_search(*email)
     317 + os.Exit(0)
     318 + }
     319 + if *leaks {
     320 + leakPrint(modules.BreachDirectory(*email), modules.Intelx(*email))
     321 + if *output {
     322 + var filename = modules.FileWriter(*email, outputText)
     323 + color.Green("\nOutput file: " + filename)
    124 324   }
    125  - if *emailrep {
    126  - color.Magenta("EmailRep.io API Results:")
    127  - modules.Runner(*email, "emailrep")
     325 + os.Exit(0)
     326 + }
     327 + if *dumps {
     328 + dumpPrint(modules.BinSearch(*email))
     329 + if *output {
     330 + var filename = modules.FileWriter(*email, outputText)
     331 + color.Green("\nOutput file: " + filename)
    128 332   }
    129  - if *domain {
    130  - color.Magenta("Domain Investigation:")
    131  - modules.DNS_lookup(*email)
    132  - modules.IPapi(*email)
    133  - modules.Subdomains(*email)
     333 + }
     334 + if *domain {
     335 + domainPrint(modules.DNS_lookup(*email), modules.IPAPI(*email))
     336 + if *output {
     337 + var filename = modules.FileWriter(*email, outputText)
     338 + color.Green("\nOutput file: " + filename)
    134 339   }
     340 + os.Exit(0)
    135 341   }
    136 342   }
     343 + 
    137 344  }
    138 345   
  • ■ ■ ■ ■ ■ ■
    modules/BreachDirectory.go
     1 +// mosint v2.1
     2 +// Author: Alp Keskin
     3 +// Github: github.com/alpkeskin
     4 +// Website: https://imalp.co
     5 +package modules
     6 + 
     7 +import (
     8 + "encoding/json"
     9 + "io/ioutil"
     10 + "net/http"
     11 +)
     12 + 
     13 +type BreachDirectoryStruct struct {
     14 + Success bool `json:"success"`
     15 + Found int `json:"found"`
     16 + Result []struct {
     17 + HasPassword bool `json:"has_password"`
     18 + Sources []string `json:"sources"`
     19 + Password string `json:"password,omitempty"`
     20 + Sha1 string `json:"sha1,omitempty"`
     21 + Hash string `json:"hash,omitempty"`
     22 + } `json:"result"`
     23 +}
     24 + 
     25 +func BreachDirectory(email string) BreachDirectoryStruct {
     26 + key := GetAPIKey("BreachDirectory.org API Key")
     27 + url := "https://breachdirectory.p.rapidapi.com/?func=auto&term=" + email
     28 + 
     29 + req, _ := http.NewRequest("GET", url, nil)
     30 + 
     31 + req.Header.Add("x-rapidapi-host", "breachdirectory.p.rapidapi.com")
     32 + req.Header.Add("x-rapidapi-key", key)
     33 + 
     34 + res, _ := http.DefaultClient.Do(req)
     35 + 
     36 + defer res.Body.Close()
     37 + body, _ := ioutil.ReadAll(res.Body)
     38 + data := BreachDirectoryStruct{}
     39 + json.Unmarshal(body, &data)
     40 + return data
     41 +}
     42 + 
  • ■ ■ ■ ■ ■ ■
    modules/BreachDirectory.py
    1  -import argparse
    2  -import json
    3  -import requests
    4  - 
    5  - 
    6  -class bcolors:
    7  - OKGREEN = "\033[92m"
    8  - FAIL = "\033[91m"
    9  - BOLD = "\033[1m"
    10  - ENDC = "\033[0m"
    11  - 
    12  - 
    13  -def parse_args():
    14  - parser = argparse.ArgumentParser()
    15  - parser.add_argument("-e", "--email", type=str, required=True, help="Email")
    16  - return parser.parse_args()
    17  - 
    18  - 
    19  -def main():
    20  - args = parse_args()
    21  - mail = args.email
    22  - with open("./keys.json", "r") as configFile:
    23  - conf = json.loads(configFile.read())
    24  - if conf[0]["BreachDirectory.org API Key"] == "":
    25  - print(
    26  - f"{bcolors.FAIL}[-] Enter the API key in the keys.json file to use this feature!{bcolors.ENDC}"
    27  - )
    28  - exit()
    29  - url = "https://breachdirectory.p.rapidapi.com/"
    30  - querystring = {"func": "auto", "term": mail}
    31  - headers = {
    32  - "x-rapidapi-host": "breachdirectory.p.rapidapi.com",
    33  - "x-rapidapi-key": conf[0]["BreachDirectory.org API Key"],
    34  - }
    35  - response = requests.request("GET", url, headers=headers, params=querystring)
    36  - data = response.json()
    37  - try:
    38  - if data["success"]:
    39  - count = data["found"]
    40  - x = 0
    41  - passwords = []
    42  - sha1 = []
    43  - breached_sites = []
    44  - while x < count:
    45  - if data["result"][x]["has_password"]:
    46  - passwords.append(data["result"][x]["password"])
    47  - sha1.append(data["result"][x]["sha1"])
    48  - else:
    49  - passwords.append("No data!")
    50  - sha1.append("No data!")
    51  - breached_sites.append(data["result"][x]["sources"])
    52  - x = x + 1
    53  - 
    54  - x = 0
    55  - rng = len(passwords)
    56  - while x < rng:
    57  - print(
    58  - f"Source: {bcolors.BOLD}" + breached_sites[x][0] + f"{bcolors.ENDC}"
    59  - )
    60  - print(
    61  - f"|-- Password: {bcolors.OKGREEN}"
    62  - + passwords[x]
    63  - + f"{bcolors.ENDC}"
    64  - )
    65  - print(f"|-- SHA1: {bcolors.OKGREEN}" + sha1[x] + f"{bcolors.ENDC}")
    66  - x = x + 1
    67  - else:
    68  - print(f"{bcolors.FAIL}[-] No data!{bcolors.ENDC}")
    69  - except:
    70  - print(f"{bcolors.FAIL}[-] Error!{bcolors.ENDC}")
    71  - 
    72  - 
    73  -main()
    74  - 
  • ■ ■ ■ ■ ■ ■
    modules/Core.go
     1 +// mosint v2.1
     2 +// Author: Alp Keskin
     3 +// Github: github.com/alpkeskin
     4 +// Website: https://imalp.co
     5 +package modules
     6 + 
     7 +import (
     8 + "bufio"
     9 + "encoding/json"
     10 + "fmt"
     11 + "io"
     12 + "io/ioutil"
     13 + "os/exec"
     14 +)
     15 + 
     16 +func GetAPIKey(key string) string {
     17 + data, err := ioutil.ReadFile("keys.json")
     18 + if err != nil {
     19 + panic(err)
     20 + }
     21 + var returnData map[string]interface{}
     22 + err = json.Unmarshal(data, &returnData)
     23 + if err != nil {
     24 + fmt.Printf("%+v", err.Error())
     25 + return ""
     26 + }
     27 + return returnData[key].(string)
     28 +}
     29 + 
     30 +func Runner(email string, kind string) {
     31 + cmd := exec.Command("python3", "modules/"+kind+".py", "-e", email)
     32 + stdout, err := cmd.StdoutPipe()
     33 + if err != nil {
     34 + panic(err)
     35 + }
     36 + stderr, err := cmd.StderrPipe()
     37 + if err != nil {
     38 + panic(err)
     39 + }
     40 + err = cmd.Start()
     41 + if err != nil {
     42 + panic(err)
     43 + }
     44 + 
     45 + go copyOutput(stdout)
     46 + go copyOutput(stderr)
     47 + cmd.Wait()
     48 + 
     49 +}
     50 + 
     51 +func copyOutput(r io.Reader) {
     52 + scanner := bufio.NewScanner(r)
     53 + for scanner.Scan() {
     54 + fmt.Println(scanner.Text())
     55 + }
     56 +}
     57 + 
  • ■ ■ ■ ■ ■ ■
    modules/EmailRep.go
     1 +// mosint v2.1
     2 +// Author: Alp Keskin
     3 +// Github: github.com/alpkeskin
     4 +// Website: https://imalp.co
     5 +package modules
     6 + 
     7 +import (
     8 + "encoding/json"
     9 + "io/ioutil"
     10 + "net/http"
     11 +)
     12 + 
     13 +type EmailRepStruct struct {
     14 + Email string `json:"email"`
     15 + Reputation string `json:"reputation"`
     16 + Suspicious bool `json:"suspicious"`
     17 + References int `json:"references"`
     18 + Details struct {
     19 + Blacklisted bool `json:"blacklisted"`
     20 + MaliciousActivity bool `json:"malicious_activity"`
     21 + MaliciousActivityRecent bool `json:"malicious_activity_recent"`
     22 + CredentialsLeaked bool `json:"credentials_leaked"`
     23 + CredentialsLeakedRecent bool `json:"credentials_leaked_recent"`
     24 + DataBreach bool `json:"data_breach"`
     25 + FirstSeen string `json:"first_seen"`
     26 + LastSeen string `json:"last_seen"`
     27 + DomainExists bool `json:"domain_exists"`
     28 + DomainReputation string `json:"domain_reputation"`
     29 + NewDomain bool `json:"new_domain"`
     30 + DaysSinceDomainCreation int `json:"days_since_domain_creation"`
     31 + SuspiciousTld bool `json:"suspicious_tld"`
     32 + Spam bool `json:"spam"`
     33 + FreeProvider bool `json:"free_provider"`
     34 + Disposable bool `json:"disposable"`
     35 + Deliverable bool `json:"deliverable"`
     36 + AcceptAll bool `json:"accept_all"`
     37 + ValidMx bool `json:"valid_mx"`
     38 + PrimaryMx string `json:"primary_mx"`
     39 + Spoofable bool `json:"spoofable"`
     40 + SpfStrict bool `json:"spf_strict"`
     41 + DmarcEnforced bool `json:"dmarc_enforced"`
     42 + Profiles []string `json:"profiles"`
     43 + } `json:"details"`
     44 +}
     45 + 
     46 +func EmailRep(email string) EmailRepStruct {
     47 + key := GetAPIKey("EmailRep.io API Key")
     48 + 
     49 + client := &http.Client{}
     50 + req, _ := http.NewRequest("GET", "https://emailrep.io/"+email, nil)
     51 + req.Header.Set("Key", key)
     52 + req.Header.Set("User-Agent", "mosint")
     53 + resp, _ := client.Do(req)
     54 + body, _ := ioutil.ReadAll(resp.Body)
     55 + data := EmailRepStruct{}
     56 + json.Unmarshal(body, &data)
     57 + return data
     58 +}
     59 + 
  • ■ ■ ■ ■ ■ ■
    modules/EmailRep.py
    1  -from emailrep import EmailRep
    2  -import argparse
    3  -import json
    4  - 
    5  - 
    6  -class bcolors:
    7  - OKGREEN = "\033[92m"
    8  - FAIL = "\033[91m"
    9  - BOLD = "\033[1m"
    10  - ENDC = "\033[0m"
    11  - 
    12  - 
    13  -def parse_args():
    14  - parser = argparse.ArgumentParser()
    15  - parser.add_argument("-e", "--email", type=str, required=True, help="Email")
    16  - return parser.parse_args()
    17  - 
    18  - 
    19  -def main():
    20  - args = parse_args()
    21  - mail = args.email
    22  - with open("./keys.json", "r") as configFile:
    23  - conf = json.loads(configFile.read())
    24  - if conf[0]["EmailRep.io API Key"] == "":
    25  - print(f"{bcolors.FAIL}[-] Enter the API key in the keys.json file to use this feature!{bcolors.ENDC}")
    26  - exit()
    27  - emailrep = EmailRep(conf[0]["EmailRep.io API Key"])
    28  - result = emailrep.query(mail)
    29  - print(f"|-- blacklisted: {bcolors.BOLD}" + str(result["details"]["blacklisted"]) + f"{bcolors.ENDC}")
    30  - print(f"|-- malicious_activity: {bcolors.BOLD}" + str(result["details"]["malicious_activity"]) + f"{bcolors.ENDC}")
    31  - if result["details"]["credentials_leaked"]:
    32  - print(f"|-- credentials_leaked: {bcolors.OKGREEN}" + str(result["details"]["credentials_leaked"]) + f"{bcolors.ENDC}")
    33  - else:
    34  - print(f"|-- credentials_leaked: {bcolors.BOLD}" + str(result["details"]["credentials_leaked"]) + f"{bcolors.ENDC}")
    35  - if result["details"]["data_breach"]:
    36  - print(f"|-- data_breach: {bcolors.OKGREEN}" + str(result["details"]["data_breach"]) + f"{bcolors.ENDC}")
    37  - else:
    38  - print(f"|-- data_breach: {bcolors.BOLD}" + str(result["details"]["data_breach"]) + f"{bcolors.ENDC}")
    39  - print(f"|-- domain_exists: {bcolors.BOLD}" + str(result["details"]["domain_exists"]) + f"{bcolors.ENDC}")
    40  - print(f"|-- new_domain: {bcolors.BOLD}" + str(result["details"]["new_domain"]) + f"{bcolors.ENDC}")
    41  - print(f"|-- free_provider: {bcolors.BOLD}" + str(result["details"]["free_provider"]) + f"{bcolors.ENDC}")
    42  - print(f"|-- valid_mx: {bcolors.BOLD}" + str(result["details"]["valid_mx"]) + f"{bcolors.ENDC}")
    43  - print(f"|-- spoofable: {bcolors.BOLD}" + str(result["details"]["spoofable"]) + f"{bcolors.ENDC}")
    44  - print(f"|-- spam: {bcolors.BOLD}" + str(result["details"]["spam"]) + f"{bcolors.ENDC}")
    45  - 
    46  -main()
  • ■ ■ ■ ■ ■ ■
    modules/FileWriter.go
     1 +// mosint v2.1
     2 +// Author: Alp Keskin
     3 +// Github: github.com/alpkeskin
     4 +// Website: https://imalp.co
     5 +package modules
     6 + 
     7 +import (
     8 + "log"
     9 + "os"
     10 + "strconv"
     11 + "time"
     12 +)
     13 + 
     14 +func FileWriter(email string, text string) string {
     15 + t := time.Now()
     16 + 
     17 + var filename string = "outputs/" + email + "-" + strconv.FormatUint(uint64(t.Unix()), 10) + ".txt"
     18 + f, err := os.Create(filename)
     19 + 
     20 + if err != nil {
     21 + log.Fatal(err)
     22 + }
     23 + defer f.Close()
     24 + f.WriteString(text)
     25 + return filename
     26 +}
     27 + 
  • ■ ■ ■ ■ ■ ■
    modules/Googling.go
     1 +// mosint v2.1
     2 +// Author: Alp Keskin
     3 +// Github: github.com/alpkeskin
     4 +// Website: https://imalp.co
    1 5  package modules
    2 6   
    3 7  import (
    4  - "github.com/fatih/color"
    5 8   googlesearch "github.com/rocketlaunchr/google-search"
    6 9  )
    7 10   
    8  -func Pastebin_search(email string) {
     11 +func BinSearch(email string) []string {
     12 + var url_array []string
    9 13   q := "intext:" + string('"') + email + string('"') + " site:pastebin.com"
    10 14   res, _ := googlesearch.Search(nil, q)
    11 15   size := len(res)
    12 16   for i := 0; i < size; i++ {
    13  - color.Green(res[i].URL)
     17 + url_array = append(url_array, res[i].URL)
    14 18   }
    15 19   q = "intext:" + string('"') + email + string('"') + " site:throwbin.io"
    16 20   res, _ = googlesearch.Search(nil, q)
    17 21   size2 := len(res)
    18 22   for i := 0; i < size2; i++ {
    19  - color.Green(res[i].URL)
     23 + url_array = append(url_array, res[i].URL)
    20 24   }
    21  - if size == 0 && size2 == 0 {
    22  - color.Red("[-] Not Found")
    23  - }
     25 + return url_array
    24 26  }
    25 27   
    26  -func Related_domains_google(email string) {
     28 +func Related_domains_from_google(email string) []string {
     29 + var url_array []string
    27 30   res, _ := googlesearch.Search(nil, email)
    28 31   size := len(res)
    29  - if size > 0 {
    30  - println("From google search:")
    31  - } else {
    32  - color.Red("[-] Not Found!")
    33  - }
    34 32   for i := 0; i < size; i++ {
    35  - color.Green("[+] " + res[i].URL)
     33 + url_array = append(url_array, res[i].URL)
    36 34   }
     35 + return url_array
    37 36  }
    38 37   
  • ■ ■ ■ ■ ■ ■
    modules/Holehe.py
     1 +#mosint v2.1
     2 +#Author: Alp Keskin
     3 +#Github: github.com/alpkeskin
     4 +#Website: https://imalp.co
     5 +from genericpath import exists
     6 +import trio
     7 +import httpx
     8 +import argparse
     9 +from holehe.modules.social_media.wattpad import wattpad
     10 +from holehe.modules.social_media.discord import discord
     11 +from holehe.modules.social_media.plurk import plurk
     12 +from holehe.modules.social_media.imgur import imgur
     13 + 
     14 + 
     15 +def parse_args():
     16 + parser = argparse.ArgumentParser()
     17 + parser.add_argument("-e", "--email", type=str, required=True, help="Email")
     18 + return parser.parse_args()
     19 + 
     20 + 
     21 +async def main():
     22 + try:
     23 + args = parse_args()
     24 + mail = args.email
     25 + out = []
     26 + client = httpx.AsyncClient()
     27 + 
     28 + await wattpad(mail, client, out)
     29 + await discord(mail, client, out)
     30 + await plurk(mail, client, out)
     31 + await imgur(mail, client, out)
     32 + file = open("holehetempresult.txt", "w")
     33 + for i in out:
     34 + if i["exists"]:
     35 + file.write(i["name"])
     36 + await client.aclose()
     37 + file.close()
     38 + except Exception as e:
     39 + print(e)
     40 + 
     41 +trio.run(main)
     42 + 
  • ■ ■ ■ ■ ■ ■
    modules/Hunter.go
     1 +// mosint v2.1
     2 +// Author: Alp Keskin
     3 +// Github: github.com/alpkeskin
     4 +// Website: https://imalp.co
     5 +package modules
     6 + 
     7 +import (
     8 + "encoding/json"
     9 + "io/ioutil"
     10 + "net/http"
     11 + "strings"
     12 +)
     13 + 
     14 +type HunterStruct struct {
     15 + Data struct {
     16 + Domain string `json:"domain"`
     17 + Disposable bool `json:"disposable"`
     18 + Webmail bool `json:"webmail"`
     19 + AcceptAll bool `json:"accept_all"`
     20 + Pattern string `json:"pattern"`
     21 + Organization string `json:"organization"`
     22 + Country string `json:"country"`
     23 + State interface{} `json:"state"`
     24 + Emails []struct {
     25 + Value string `json:"value"`
     26 + Type string `json:"type"`
     27 + Confidence int `json:"confidence"`
     28 + Sources []struct {
     29 + Domain string `json:"domain"`
     30 + URI string `json:"uri"`
     31 + ExtractedOn string `json:"extracted_on"`
     32 + LastSeenOn string `json:"last_seen_on"`
     33 + StillOnPage bool `json:"still_on_page"`
     34 + } `json:"sources"`
     35 + FirstName string `json:"first_name"`
     36 + LastName string `json:"last_name"`
     37 + Position string `json:"position"`
     38 + Seniority string `json:"seniority"`
     39 + Department string `json:"department"`
     40 + Linkedin interface{} `json:"linkedin"`
     41 + Twitter interface{} `json:"twitter"`
     42 + PhoneNumber interface{} `json:"phone_number"`
     43 + Verification struct {
     44 + Date string `json:"date"`
     45 + Status string `json:"status"`
     46 + } `json:"verification"`
     47 + } `json:"emails"`
     48 + LinkedDomains []interface{} `json:"linked_domains"`
     49 + } `json:"data"`
     50 + Meta struct {
     51 + Results int `json:"results"`
     52 + Limit int `json:"limit"`
     53 + Offset int `json:"offset"`
     54 + Params struct {
     55 + Domain string `json:"domain"`
     56 + Company interface{} `json:"company"`
     57 + Type interface{} `json:"type"`
     58 + Seniority interface{} `json:"seniority"`
     59 + Department interface{} `json:"department"`
     60 + } `json:"params"`
     61 + } `json:"meta"`
     62 +}
     63 + 
     64 +func Hunter(email string) HunterStruct {
     65 + key := GetAPIKey("Hunter.io API Key")
     66 + 
     67 + client := &http.Client{}
     68 + req, _ := http.NewRequest("GET", "https://api.hunter.io/v2/domain-search?domain="+strings.Split(email, "@")[1]+"&api_key="+key, nil)
     69 + req.Header.Set("User-Agent", "mosint")
     70 + resp, _ := client.Do(req)
     71 + body, _ := ioutil.ReadAll(resp.Body)
     72 + data := HunterStruct{}
     73 + json.Unmarshal(body, &data)
     74 + return data
     75 +}
     76 + 
  • ■ ■ ■ ■ ■ ■
    modules/Hunter.py
    1  -import argparse
    2  -import json
    3  -import requests
    4  - 
    5  - 
    6  -class bcolors:
    7  - OKGREEN = "\033[92m"
    8  - FAIL = "\033[91m"
    9  - BOLD = "\033[1m"
    10  - ENDC = "\033[0m"
    11  - 
    12  - 
    13  -def parse_args():
    14  - parser = argparse.ArgumentParser()
    15  - parser.add_argument("-d", "--domain", type=str, required=True, help="Domain")
    16  - return parser.parse_args()
    17  - 
    18  - 
    19  -def main():
    20  - args = parse_args()
    21  - domain = args.domain
    22  - with open("./keys.json", "r") as configFile:
    23  - conf = json.loads(configFile.read())
    24  - key = conf[0]["hunter.io API Key"]
    25  - print("From hunter.io:")
    26  - if conf[0]["hunter.io API Key"] == "":
    27  - print(
    28  - f"{bcolors.FAIL}[-] Enter the API key in the keys.json file to use this feature!{bcolors.ENDC}"
    29  - )
    30  - exit()
    31  - res = requests.get(
    32  - f"https://api.hunter.io/v2/domain-search?domain={domain}&api_key={key}"
    33  - ).json()
    34  - x = 0
    35  - try:
    36  - if len(res["data"]["emails"]) == 0:
    37  - print(f"{bcolors.FAIL}[-] No data!{bcolors.ENDC}")
    38  - while x < len(res["data"]["emails"]):
    39  - print(
    40  - f"{bcolors.OKGREEN}[+] "
    41  - + res["data"]["emails"][x]["value"]
    42  - + f"{bcolors.ENDC}"
    43  - )
    44  - x = x + 1
    45  - except:
    46  - print(f"{bcolors.FAIL}[-] Error!{bcolors.ENDC}")
    47  - 
    48  - 
    49  -main()
    50  - 
  • ■ ■ ■ ■ ■ ■
    modules/Intelx.go
     1 +// mosint v2.1
     2 +// Author: Alp Keskin
     3 +// Github: github.com/alpkeskin
     4 +// Website: https://imalp.co
     5 +package modules
     6 + 
     7 +import (
     8 + "context"
     9 + "fmt"
     10 + 
     11 + "github.com/IntelligenceX/SDK/Go/ixapi"
     12 +)
     13 + 
     14 +const defaultMaxResults = 10 // max results to query and show
     15 +const frontendBaseURL = "https://intelx.io/"
     16 + 
     17 +var urls []string
     18 + 
     19 +func Intelx(email string) []string {
     20 + key := GetAPIKey("Intelx.io API Key")
     21 + 
     22 + search(context.Background(), key, email, 2)
     23 + 
     24 + return urls
     25 +}
     26 + 
     27 +func search(ctx context.Context, Key, Selector string, Sort int) {
     28 + 
     29 + search := ixapi.IntelligenceXAPI{}
     30 + search.Init("", Key)
     31 + results, selectorInvalid, err := search.Search(ctx, Selector, Sort, defaultMaxResults, ixapi.DefaultWaitSortTime, ixapi.DefaultTimeoutGetResults)
     32 + 
     33 + if err != nil {
     34 + fmt.Printf("Error querying results: %s\n", err)
     35 + return
     36 + } else if len(results) == 0 && selectorInvalid {
     37 + return
     38 + }
     39 + 
     40 + text := generateResultText(ctx, &search, results)
     41 + fmt.Println(text)
     42 +}
     43 + 
     44 +func generateResultText(ctx context.Context, api *ixapi.IntelligenceXAPI, Records []ixapi.SearchResult) (text string) {
     45 + 
     46 + for n, record := range Records {
     47 + resultLink := frontendBaseURL + "?did=" + record.SystemID.String()
     48 + 
     49 + title := record.Name
     50 + if title == "" {
     51 + title = "Untitled Document"
     52 + }
     53 + urls = append(urls, resultLink)
     54 + 
     55 + if n >= defaultMaxResults-1 {
     56 + break
     57 + }
     58 + }
     59 + 
     60 + return
     61 +}
     62 + 
  • ■ ■ ■ ■ ■ ■
    modules/Lookup.go
     1 +// mosint v2.1
     2 +// Author: Alp Keskin
     3 +// Github: github.com/alpkeskin
     4 +// Website: https://imalp.co
    1 5  package modules
    2 6   
    3 7  import (
    4 8   "encoding/json"
    5  - "fmt"
    6 9   "net"
    7 10   "os"
    8 11   "strings"
    9 12   
    10  - "github.com/fatih/color"
    11 13   "github.com/olekukonko/tablewriter"
    12 14   "github.com/valyala/fasthttp"
    13 15  )
    14 16   
    15  -func DNS_lookup(email string) {
     17 +type IPAPIStruct struct {
     18 + IP string `json:"ip"`
     19 + Version string `json:"version"`
     20 + City string `json:"city"`
     21 + Region string `json:"region"`
     22 + RegionCode string `json:"region_code"`
     23 + Country string `json:"country"`
     24 + CountryName string `json:"country_name"`
     25 + CountryCode string `json:"country_code"`
     26 + CountryCodeIso3 string `json:"country_code_iso3"`
     27 + CountryCapital string `json:"country_capital"`
     28 + CountryTld string `json:"country_tld"`
     29 + ContinentCode string `json:"continent_code"`
     30 + InEu bool `json:"in_eu"`
     31 + Postal string `json:"postal"`
     32 + Latitude float64 `json:"latitude"`
     33 + Longitude float64 `json:"longitude"`
     34 + Timezone string `json:"timezone"`
     35 + UtcOffset string `json:"utc_offset"`
     36 + CountryCallingCode string `json:"country_calling_code"`
     37 + Currency string `json:"currency"`
     38 + CurrencyName string `json:"currency_name"`
     39 + Languages string `json:"languages"`
     40 + CountryArea float64 `json:"country_area"`
     41 + CountryPopulation int `json:"country_population"`
     42 + Asn string `json:"asn"`
     43 + Org string `json:"org"`
     44 +}
     45 + 
     46 +func DNS_lookup(email string) *tablewriter.Table {
    16 47   splt := strings.Split(email, "@")
    17 48   
    18 49   data := [][]string{}
    skipped 24 lines
    43 74   for _, v := range data {
    44 75   table.Append(v)
    45 76   }
    46  - table.Render() // Send output
     77 + //table.Render()
     78 + return table
    47 79  }
    48 80   
    49  -func IPapi(email string) {
     81 +func IPAPI(email string) IPAPIStruct {
     82 + data := IPAPIStruct{}
    50 83   splt := strings.Split(email, "@")
    51 84   ips, _ := net.LookupIP(splt[1])
    52 85   ip4api := ""
    skipped 13 lines
    66 99   fasthttp.Do(req, resp)
    67 100   
    68 101   bodyBytes := resp.Body()
    69  - var dat map[string]interface{}
    70  - if err := json.Unmarshal(bodyBytes, &dat); err != nil {
    71  - panic(err)
    72  - }
    73  - color.Magenta("IPapi.co data:")
    74  - println(fmt.Sprintf("IP: %v", dat["ip"]))
    75  - println(fmt.Sprintf("|-- City: %v", dat["city"]))
    76  - println(fmt.Sprintf("|-- Region: %v", dat["region"]))
    77  - println(fmt.Sprintf("|-- Region: %v", dat["region"]))
    78  - println(fmt.Sprintf("|-- Country Name: %v", dat["country_name"]))
    79  - println(fmt.Sprintf("|-- Country calling code: %v", dat["country_calling_code"]))
    80  - println(fmt.Sprintf("|-- Timezone: %v", dat["timezone"]))
    81  - println(fmt.Sprintf("|-- asn: %v", dat["asn"]))
    82  - println(fmt.Sprintf("|-- org: %v", dat["org"]))
     102 + 
     103 + json.Unmarshal(bodyBytes, &data)
    83 104   }
     105 + return data
    84 106  }
    85 107   
  • ■ ■ ■ ■ ■ ■
    modules/Runner.go
    1  -package modules
    2  - 
    3  -import (
    4  - "bufio"
    5  - "fmt"
    6  - "io"
    7  - "os/exec"
    8  - "strings"
    9  - 
    10  - "github.com/fatih/color"
    11  -)
    12  - 
    13  -func Runner(email string, kind string) {
    14  - if kind == "socialscan" {
    15  - cmd := exec.Command("python3", "modules/SocialScan.py", "-e", email)
    16  - stdout, err := cmd.StdoutPipe()
    17  - if err != nil {
    18  - panic(err)
    19  - }
    20  - stderr, err := cmd.StderrPipe()
    21  - if err != nil {
    22  - panic(err)
    23  - }
    24  - err = cmd.Start()
    25  - if err != nil {
    26  - panic(err)
    27  - }
    28  - 
    29  - go copyOutput(stdout)
    30  - go copyOutput(stderr)
    31  - cmd.Wait()
    32  - } else if kind == "breachdirectory" {
    33  - cmd := exec.Command("python3", "modules/BreachDirectory.py", "-e", email)
    34  - stdout, err := cmd.StdoutPipe()
    35  - if err != nil {
    36  - panic(err)
    37  - }
    38  - stderr, err := cmd.StderrPipe()
    39  - if err != nil {
    40  - panic(err)
    41  - }
    42  - err = cmd.Start()
    43  - if err != nil {
    44  - panic(err)
    45  - }
    46  - go copyOutput(stdout)
    47  - go copyOutput(stderr)
    48  - cmd.Wait()
    49  - } else if kind == "hunter" {
    50  - splt := strings.Split(email, "@")
    51  - cmd := exec.Command("python3", "modules/Hunter.py", "-d", splt[1])
    52  - stdout, err := cmd.StdoutPipe()
    53  - if err != nil {
    54  - panic(err)
    55  - }
    56  - stderr, err := cmd.StderrPipe()
    57  - if err != nil {
    58  - panic(err)
    59  - }
    60  - err = cmd.Start()
    61  - if err != nil {
    62  - panic(err)
    63  - }
    64  - go copyOutput(stdout)
    65  - go copyOutput(stderr)
    66  - cmd.Wait()
    67  - } else if kind == "emailrep" {
    68  - cmd := exec.Command("python3", "modules/EmailRep.py", "-e", email)
    69  - stdout, err := cmd.StdoutPipe()
    70  - if err != nil {
    71  - panic(err)
    72  - }
    73  - stderr, err := cmd.StderrPipe()
    74  - if err != nil {
    75  - panic(err)
    76  - }
    77  - err = cmd.Start()
    78  - if err != nil {
    79  - panic(err)
    80  - }
    81  - go copyOutput(stdout)
    82  - go copyOutput(stderr)
    83  - cmd.Wait()
    84  - } else {
    85  - color.Red("Error!")
    86  - }
    87  - 
    88  -}
    89  - 
    90  -func copyOutput(r io.Reader) {
    91  - scanner := bufio.NewScanner(r)
    92  - for scanner.Scan() {
    93  - fmt.Println(scanner.Text())
    94  - }
    95  -}
    96  - 
  • ■ ■ ■ ■ ■ ■
    modules/SocialScan.py
     1 +#mosint v2.1
     2 +#Author: Alp Keskin
     3 +#Github: github.com/alpkeskin
     4 +#Website: https://imalp.co
    1 5  from socialscan.util import Platforms, sync_execute_queries
    2 6  import argparse
    3 7   
    4 8   
    5  -class bcolors:
    6  - OKGREEN = "\033[92m"
    7  - FAIL = "\033[91m"
    8  - ENDC = "\033[0m"
    9  - 
    10 9   
    11 10  def parse_args():
    12 11   parser = argparse.ArgumentParser()
    skipped 2 lines
    15 14   
    16 15   
    17 16  def main():
    18  - args = parse_args()
    19  - mail = args.email
    20  - q = [mail]
    21  - platforms = [
    22  - Platforms.GITHUB,
    23  - Platforms.TWITTER,
    24  - Platforms.INSTAGRAM,
    25  - Platforms.PINTEREST,
    26  - Platforms.SPOTIFY,
    27  - Platforms.FIREFOX,
    28  - ]
    29  - results = sync_execute_queries(q, platforms)
    30  - count = 0
    31  - for result in results:
    32  - if not result.available:
    33  - count = count + 1
    34  - print(f"{bcolors.OKGREEN}[+] {result.platform}{bcolors.ENDC}")
    35  - if count == 0:
    36  - print(f"{bcolors.FAIL}[-] Not Found!{bcolors.ENDC}")
    37  - 
     17 + try:
     18 + args = parse_args()
     19 + mail = args.email
     20 + q = [mail]
     21 + platforms = [
     22 + Platforms.GITHUB,
     23 + Platforms.TWITTER,
     24 + Platforms.INSTAGRAM,
     25 + Platforms.PINTEREST,
     26 + Platforms.SPOTIFY,
     27 + Platforms.FIREFOX,
     28 + ]
     29 + results = sync_execute_queries(q, platforms)
     30 + f = open("socialscantempresult.txt", "w")
     31 + for result in results:
     32 + if not result.available:
     33 + f.write(f"{result.platform}\n")
     34 + f.close()
     35 + except Exception as e:
     36 + print(e)
    38 37   
    39 38  main()
    40 39   
  • ■ ■ ■ ■ ■ ■
    modules/ThreatCrowd.go
     1 +// mosint v2.1
     2 +// Author: Alp Keskin
     3 +// Github: github.com/alpkeskin
     4 +// Website: https://imalp.co
    1 5  package modules
    2 6   
    3 7  import (
    skipped 1 lines
    5 9   "fmt"
    6 10   "strings"
    7 11   
    8  - "github.com/fatih/color"
    9 12   "github.com/valyala/fasthttp"
    10 13  )
    11 14   
    12  -func doRequest(url string, kind string) {
     15 +func doRequest(url string, kind string) []string {
    13 16   req := fasthttp.AcquireRequest()
    14 17   resp := fasthttp.AcquireResponse()
    15 18   defer fasthttp.ReleaseRequest(req)
    skipped 2 lines
    18 21   req.SetRequestURI(url)
    19 22   
    20 23   fasthttp.Do(req, resp)
    21  - 
     24 + var data_array []string
    22 25   bodyBytes := resp.Body()
    23 26   var dat map[string]interface{}
    24 27   if err := json.Unmarshal(bodyBytes, &dat); err != nil {
    25 28   panic(err)
    26 29   }
    27 30   if dat["response_code"] == "1" {
     31 + 
    28 32   q := dat[kind]
    29 33   str := fmt.Sprintf("%v", q)
    30 34   splt := strings.Split(str, " ")
    skipped 1 lines
    32 36   if length > 0 {
    33 37   for i := 0; i < length; i++ {
    34 38   if i == 0 {
    35  - color.Green("[+] " + splt[i][1:])
     39 + data_array = append(data_array, splt[i][1:])
    36 40   } else if i == (length - 1) {
    37  - color.Green("[+] " + splt[i][:len(splt[i])-1])
     41 + data_array = append(data_array, splt[i][:len(splt[i])-1])
    38 42   } else {
    39  - color.Green("[+] " + splt[i])
     43 + data_array = append(data_array, splt[i])
    40 44   }
    41 45   }
    42  - } else {
    43  - color.Red("[-] Not found!")
    44 46   }
    45  - } else {
    46  - color.Red("[-] Not found!")
    47 47   }
     48 + return data_array
    48 49  }
    49 50   
    50  -func Related_domains(email string) {
    51  - doRequest("https://www.threatcrowd.org/searchApi/v2/email/report/?email="+email, "domains")
    52  -}
    53  - 
    54  -func Subdomains(email string) {
    55  - splt := strings.Split(email, "@")
    56  - color.Magenta("Subdomains:")
    57  - doRequest("https://www.threatcrowd.org/searchApi/v2/domain/report/?domain="+splt[1], "subdomains")
     51 +func RelatedDomains(email string) []string {
     52 + return doRequest("https://www.threatcrowd.org/searchApi/v2/email/report/?email="+email, "domains")
    58 53  }
    59 54   
    60  -func Related_emails(email string) {
    61  - splt := strings.Split(email, "@")
    62  - doRequest("https://www.threatcrowd.org/searchApi/v2/domain/report/?domain="+splt[1], "emails")
     55 +func RelatedEmails(email string) []string {
     56 + return doRequest("https://www.threatcrowd.org/searchApi/v2/domain/report/?domain="+strings.Split(email, "@")[1], "emails")
    63 57  }
    64 58   
  • ■ ■ ■ ■ ■
    modules/Verify.go
     1 +// mosint v2.1
     2 +// Author: Alp Keskin
     3 +// Github: github.com/alpkeskin
     4 +// Website: https://imalp.co
    1 5  package modules
    2 6   
    3 7  import (
     8 + "strings"
     9 + 
    4 10   emailverifier "github.com/AfterShip/email-verifier"
    5  - "github.com/fatih/color"
    6 11  )
    7 12   
     13 +type VerifyStruct struct {
     14 + IsVerified bool `json:"is_verified"`
     15 + IsDisposable bool `json:"is_disposable"`
     16 + Err error `json:"err"`
     17 +}
     18 + 
    8 19  var (
    9  - verifier = emailverifier.NewVerifier()
     20 + verifier = emailverifier.NewVerifier().
     21 + EnableAutoUpdateDisposable()
    10 22  )
    11 23   
    12  -func Verify_email(email string) {
     24 +func VerifyEmail(email string) VerifyStruct {
     25 + v := VerifyStruct{}
    13 26   ret, err := verifier.Verify(email)
    14 27   if err != nil {
    15  - color.Red("[-] Verify email address failed, error is: ", err)
    16  - 
     28 + v.Err = err
    17 29   }
    18 30   if !ret.Syntax.Valid {
    19  - color.Red("[-] Email address syntax is invalid!")
     31 + v.IsVerified = false
     32 + } else {
     33 + domain := strings.Split(email, "@")[1]
     34 + v.IsVerified = true
     35 + if !verifier.IsDisposable(domain) {
     36 + v.IsDisposable = false
     37 + } else {
     38 + v.IsDisposable = true
     39 + }
    20 40   }
    21  - color.Green("[+] Email verified!")
     41 + return v
    22 42   
    23 43  }
    24 44   
  • ■ ■ ■ ■ ■
    requirements.txt
    1  -requests==2.26.0
     1 +holehe==1.60.3
     2 +httpx==0.22.0
    2 3  socialscan==1.4.1
    3  -emailrep==0.0.5
     4 +trio==0.20.0
    4 5   
Please wait...
Page is in error, reload to recover