Projects STRLCPY mosint Commits e6e89d3d
🤬
  • ■ ■ ■ ■ ■ ■
    config.json
    1  -[
    2  - {
    3  - "verify-email.org API Key": "",
    4  - "hunter.io API Key": "",
    5  - "Breached Sites[leak-lookup.com API Key]": "",
    6  - "Social Scan": "True",
    7  - "Leaked DB": "True",
    8  - "PDF Check for Related Emails":"True",
    9  - "Related Phone Numbers" : "True",
    10  - "Related Domains" : "True",
    11  - "Pastebin Dumps": "True",
    12  - "Google Search": "True",
    13  - "DNS Lookup": "True"
    14  - }
    15  -]
    16  - 
  • ■ ■ ■ ■ ■ ■
    go.mod
     1 +module main
     2 + 
     3 +go 1.17
     4 + 
     5 +require (
     6 + github.com/AfterShip/email-verifier v1.3.0
     7 + github.com/dimiro1/banner v1.1.0
     8 + github.com/fatih/color v1.13.0
     9 + github.com/mattn/go-colorable v0.1.9
     10 + github.com/olekukonko/tablewriter v0.0.5
     11 + github.com/rocketlaunchr/google-search v1.1.4
     12 + github.com/valyala/fasthttp v1.31.0
     13 +)
     14 + 
     15 +require (
     16 + github.com/PuerkitoBio/goquery v1.5.0 // indirect
     17 + github.com/andybalholm/brotli v1.0.2 // indirect
     18 + github.com/andybalholm/cascadia v1.0.0 // indirect
     19 + github.com/antchfx/htmlquery v1.0.0 // indirect
     20 + github.com/antchfx/xmlquery v1.0.0 // indirect
     21 + github.com/antchfx/xpath v1.0.0 // indirect
     22 + github.com/common-nighthawk/go-figure v0.0.0-20200609044655-c4b36f998cf2 // indirect
     23 + github.com/gobwas/glob v0.2.3 // indirect
     24 + github.com/gocolly/colly/v2 v2.0.1 // indirect
     25 + github.com/golang/protobuf v1.3.1 // indirect
     26 + github.com/hbollon/go-edlib v1.4.0 // indirect
     27 + github.com/kennygrant/sanitize v1.2.4 // indirect
     28 + github.com/klauspost/compress v1.13.4 // indirect
     29 + github.com/mattn/go-isatty v0.0.14 // indirect
     30 + github.com/mattn/go-runewidth v0.0.9 // indirect
     31 + github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca // indirect
     32 + github.com/temoto/robotstxt v1.1.1 // indirect
     33 + 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
     36 + golang.org/x/text v0.3.6 // indirect
     37 + golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 // indirect
     38 + google.golang.org/appengine v1.6.1 // indirect
     39 + h12.io/socks v1.0.3 // indirect
     40 +)
     41 + 
  • ■ ■ ■ ■ ■ ■
    go.sum
     1 +github.com/AfterShip/email-verifier v1.3.0 h1:RhRLm3v2Iui5ZmWg6e+Q0xQU2Bai3mgINkY2t2p9u0g=
     2 +github.com/AfterShip/email-verifier v1.3.0/go.mod h1:XeRhBrlxgnon6zOZ05EBNNanuxSy5uXl22RRBd5Jcug=
     3 +github.com/PuerkitoBio/goquery v1.5.0 h1:uGvmFXOA73IKluu/F84Xd1tt/z07GYm8X49XKHP7EJk=
     4 +github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg=
     5 +github.com/andybalholm/brotli v1.0.2 h1:JKnhI/XQ75uFBTiuzXpzFrUriDPiZjlOSzh6wXogP0E=
     6 +github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
     7 +github.com/andybalholm/cascadia v1.0.0 h1:hOCXnnZ5A+3eVDX8pvgl4kofXv2ELss0bKcqRySc45o=
     8 +github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
     9 +github.com/antchfx/htmlquery v1.0.0 h1:O5IXz8fZF3B3MW+B33MZWbTHBlYmcfw0BAxgErHuaMA=
     10 +github.com/antchfx/htmlquery v1.0.0/go.mod h1:MS9yksVSQXls00iXkiMqXr0J+umL/AmxXKuP28SUJM8=
     11 +github.com/antchfx/xmlquery v1.0.0 h1:YuEPqexGG2opZKNc9JU3Zw6zFXwC47wNcy6/F8oKsrM=
     12 +github.com/antchfx/xmlquery v1.0.0/go.mod h1:/+CnyD/DzHRnv2eRxrVbieRU/FIF6N0C+7oTtyUtCKk=
     13 +github.com/antchfx/xpath v1.0.0 h1:Q5gFgh2O40VTSwMOVbFE7nFNRBu3tS21Tn0KAWeEjtk=
     14 +github.com/antchfx/xpath v1.0.0/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
     15 +github.com/common-nighthawk/go-figure v0.0.0-20200609044655-c4b36f998cf2 h1:tjT4Jp4gxECvsJcYpAMtW2I3YqzBTPuB67OejxXs86s=
     16 +github.com/common-nighthawk/go-figure v0.0.0-20200609044655-c4b36f998cf2/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w=
     17 +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
     18 +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
     19 +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
     20 +github.com/dimiro1/banner v1.1.0 h1:TSfy+FsPIIGLzaMPOt52KrEed/omwFO1P15VA8PMUh0=
     21 +github.com/dimiro1/banner v1.1.0/go.mod h1:tbL318TJiUaHxOUNN+jnlvFSgsh/RX7iJaQrGgOiTco=
     22 +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
     23 +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
     24 +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
     25 +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
     26 +github.com/gocolly/colly/v2 v2.0.1 h1:GGPzBEdrEsavhzVK00FQXMMHBHRpwrbbCCcEKM/0Evw=
     27 +github.com/gocolly/colly/v2 v2.0.1/go.mod h1:ePrRZlJcLTU2C/f8pJzXfkdBtBDHL5hOaKLcBoiJcq8=
     28 +github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
     29 +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
     30 +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
     31 +github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364 h1:5XxdakFhqd9dnXoAZy1Mb2R/DZ6D1e+0bGC/JhucGYI=
     32 +github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364/go.mod h1:eDJQioIyy4Yn3MVivT7rv/39gAJTrA7lgmYr8EW950c=
     33 +github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw=
     34 +github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI=
     35 +github.com/hbollon/go-edlib v1.4.0 h1:k0D3nH6HXOXvlM1v0XPRS7Nn5TBQKWYXv4tPrZgPrgQ=
     36 +github.com/hbollon/go-edlib v1.4.0/go.mod h1:wnt6o6EIVEzUfgbUZY7BerzQ2uvzp354qmS2xaLkrhM=
     37 +github.com/jawher/mow.cli v1.1.0/go.mod h1:aNaQlc7ozF3vw6IJ2dHjp2ZFiA4ozMIYY6PyuRJwlUg=
     38 +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
     39 +github.com/kennygrant/sanitize v1.2.4 h1:gN25/otpP5vAsO2djbMhF/LQX6R7+O1TB4yv8NzpJ3o=
     40 +github.com/kennygrant/sanitize v1.2.4/go.mod h1:LGsjYYtgxbetdg5owWB2mpgUL6e2nfw2eObZ0u0qvak=
     41 +github.com/klauspost/compress v1.13.4 h1:0zhec2I8zGnjWcKyLl6i3gPqKANCCn5e9xmviEEeX6s=
     42 +github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
     43 +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
     44 +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
     45 +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
     46 +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
     47 +github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U=
     48 +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
     49 +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
     50 +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
     51 +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
     52 +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
     53 +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 +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
     56 +github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms=
     57 +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
     58 +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
     59 +github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc=
     60 +github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
     61 +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
     62 +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
     63 +github.com/rocketlaunchr/google-search v1.1.4 h1:11tA5CoeUjoNnvdyUMGwyuxzihbBRDhoEFXlMmPm0k4=
     64 +github.com/rocketlaunchr/google-search v1.1.4/go.mod h1:6WRqswVvv6PJtvGCB1sEVxt726NolmA0QTl6xSEXel0=
     65 +github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca h1:NugYot0LIVPxTvN8n+Kvkn6TrbMyxQiuvKdEwFdR9vI=
     66 +github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU=
     67 +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
     68 +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
     69 +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
     70 +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
     71 +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
     72 +github.com/temoto/robotstxt v1.1.1 h1:Gh8RCs8ouX3hRSxxK7B1mO5RFByQ4CmJZDwgom++JaA=
     73 +github.com/temoto/robotstxt v1.1.1/go.mod h1:+1AmkuG3IYkh1kv0d2qEB9Le88ehNO0zwOr3ujewlOo=
     74 +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
     75 +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
     76 +github.com/valyala/fasthttp v1.31.0 h1:lrauRLII19afgCs2fnWRJ4M5IkV0lo2FqA61uGkNBfE=
     77 +github.com/valyala/fasthttp v1.31.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus=
     78 +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
     79 +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
     80 +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
     81 +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
     82 +golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
     83 +golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
     84 +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
     85 +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
     86 +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
     87 +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
     88 +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
     89 +golang.org/x/net v0.0.0-20201207224615-747e23833adb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
     90 +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 +golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
     93 +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
     94 +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
     95 +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
     96 +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
     97 +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
     98 +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
     99 +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
     100 +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
     101 +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
     102 +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
     103 +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
     104 +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=
     106 +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
     107 +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
     108 +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
     109 +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
     110 +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
     111 +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
     112 +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 +golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
     115 +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
     116 +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
     117 +google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I=
     118 +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
     119 +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
     120 +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
     121 +gopkg.in/h2non/gock.v1 v1.1.2 h1:jBbHXgGBK/AoPVfJh5x4r/WxIrElvbLel8TCZkkZJoY=
     122 +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 +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
     125 +h12.io/socks v1.0.3 h1:Ka3qaQewws4j4/eDQnOdpr4wXsC//dXtWvftlIcCQUo=
     126 +h12.io/socks v1.0.3/go.mod h1:AIhxy1jOId/XCz9BO+EIgNL2rQiPTBNnOfnVnQ+3Eck=
     127 + 
  • ■ ■ ■ ■ ■ ■
    insides/Banner.py
    1  -from insides.bcolors import bcolors
    2  - 
    3  -def Banner():
    4  - print(f'''{bcolors.BOLD}
    5  -___ ________ _____ _____ _ _ _____
    6  -| \/ | _ / ___|_ _| \ | |_ _|
    7  -| . . | | | \ `--. | | | \| | | |
    8  -| |\/| | | | |`--. \ | | | . ` | | |
    9  -| | | \ \_/ /\__/ /_| |_| |\ | | |
    10  -\_| |_/\___/\____/ \___/\_| \_/ \_/
    11  -{bcolors.ENDC}
    12  -v{bcolors.BOLD}1.4{bcolors.ENDC}
    13  -github.com/{bcolors.BOLD}alpkeskin{bcolors.ENDC}
    14  -''')
  • ■ ■ ■ ■ ■ ■
    insides/Header.py
    1  -from insides.bcolors import bcolors
    2  - 
    3  -def Header(title):
    4  - print("")
    5  - print("-------------------------------")
    6  - print(f"{bcolors.OKGREEN}>{bcolors.ENDC}"+title)
    7  - print("-------------------------------")
  • ■ ■ ■ ■ ■ ■
    insides/bcolors.py
    1  -class bcolors:
    2  - HEADER = '\033[95m'
    3  - OKBLUE = '\033[94m'
    4  - OKGREEN = '\033[92m'
    5  - WARNING = '\033[93m'
    6  - FAIL = '\033[91m'
    7  - ENDC = '\033[0m'
    8  - BOLD = '\033[1m'
    9  - UNDERLINE = '\033[4m'
    10  - 
  • ■ ■ ■ ■ ■
    insides/commonMails.py
    1  -commonMails = ["yahoo.com","qq.com","virginmedia.com","msn.com","live.com","go.com","aol.com","163.com","free.fr","about.com","alibaba.com","geocities.com","outlook.com","indiatimes.com","yandex.ru","netscape.com","yahoo.co.jp","angelfire.com","earthlink.net","sky.com","mail.ru","discovery.com","gmail.com","frontier.com","naver.com","uol.com.br","homestead.com","icloud.com","medscape.com","mac.com","zoho.com","space.com","lycos.com","icq.com","comcast.net","altavista.com","orange.fr","t-online.de","hotmail.com","me.com","sapo.pt","rambler.ru","att.net","cox.net","canada.com","yandex.com","ancestry.com","sina.cn","kansascity.com","sina.com","libero.it","law.com","care2.com","wanadoo.fr","tom.com","fortunecity.com","berlin.de","onet.pl","21cn.com","excite.com","terra.com.br","geek.com","india.com","techspot.com","compuserve.com","shaw.ca","blackplanet.com","mindspring.com","web.de","freeserve.co.uk","ntlworld.com","rr.com","ig.com.br","wp.pl","sympatico.ca","excite.co.jp","chez.com","interia.pl","kiwibox.com","virgilio.it","tiscali.it","arcor.de","iinet.net.au","blueyonder.co.uk","xoom.com","126.com","rcn.com","sfr.fr","freenet.de","gazeta.pl","online.de","yam.com","verizon.net","gmx.net","btinternet.com","hotbot.com","lycos.co.uk","ozemail.com.au","aol.co.uk","detik.com","virgin.net","ireland.com","terra.es","catholic.org","hamptonroads.com","doityourself.com","parrot.com","charter.net","www.com","lycos.de","ivillage.com","myway.com","albawaba.com","rogers.com","name.com","ya.ru","voila.fr","oath.com","freeyellow.com","mail.com","pochta.ru","centrum.cz","sify.com","tiscali.co.uk","chat.ru","telus.net","mydomain.com","o2.co.uk","alice.it","seznam.cz","freeuk.com","tpg.com.au","iespana.es","optusnet.com.au","rin.ru","lycos.es","sci.fi","metacrawler.com","walla.co.il","yahoo.co.uk","lycos.nl","sweb.cz","looksmart.com","bigpond.com","yeah.net","terra.com","prodigy.net","eircom.net","yahoo.com.cn","frontiernet.net","mail2web.com","wanadoo.es","aim.com","37.com","i.am","dailypioneer.com","sanook.com","foxmail.com","unican.es","docomo.ne.jp","hot.ee","yahoofs.com","newmail.ru","gmx.com","ukr.net","cogeco.ca","crosswinds.net","bugmenot.com","webindia123.com","pacbell.net","iol.it","10minutemail.com","netins.net","depechemode.com","incredimail.com","zip.net","dejanews.com","lycos.it","elvis.com","bangkok.com","iprimus.com.au","juno.com","onmilwaukee.com","o2.pl","supereva.it","netspace.net.au","islamonline.net","starmedia.com","mailinator.com","go.ro","swissinfo.org","saudia.com","spray.se","idirect.com","bigfoot.com","land.ru","casino.com","gmx.de","bellsouth.net","yahoo.fr","yahoo.jp","bigpond.net.au","interfree.it","adelphia.net","thirdage.com","zonnet.nl","msn.co.uk","yahoo.de","btconnect.com","hispavista.com","ny.com","cableone.net","tds.net","gportal.hu","roadrunner.com","inbox.com","hushmail.com","4mg.com","seanet.com","masrawy.com","aeiou.pt","terra.cl","yahoo.com.br","singnet.com.sg","terra.com.ar","front.ru","c3.hu","123.com","sbcglobal.net","netzero.net","yahoo.com.tw","montevideo.com.uy","scubadiving.com","everyone.net","fastmail.fm","maktoob.com","iwon.com","mchsi.com","webjump.com","bright.net","telstra.com","westnet.com.au","c2i.net","talktalk.net","talkcity.com","eyou.com","usa.com","cs.com","btopenworld.com","gocollege.com","hotmail.ru","spacewar.com","sp.nl","excite.it","bolt.com","singpost.com","zzn.com","centrum.sk","go2net.com","yahoo.es","bizhosting.com","yahoo.ca","3ammagazine.com","vnn.vn","optimum.net","fuse.net","windowslive.com","home.ro","windstream.net","korea.com","ptd.net","ados.fr","swbell.net","inbox.lv","freeuk.net","dog.com","barcelona.com","tiscali.be","dnsmadeeasy.com","abv.bg","netscape.net","freeola.com","peoplepc.com","beer.com","onlinehome.de","jokes.com","garbage.com","list.ru","epix.net","nyc.com","pisem.net","centurytel.net","live.cn","gratisweb.com","ymail.com","lavabit.com","bol.com.br","handbag.com","spymac.com","yopmail.com","laposte.net","apollo.lv","fromru.com","gmx.at","rediffmail.com","theglobe.com","qwestoffice.net","centurylink.net","wowway.com","t-online.hu","euroseek.com","ananzi.co.za"]
  • ■ ■ ■ ■ ■ ■
    keys.json
     1 +[
     2 + {
     3 + "BreachDirectory.org API Key": "",
     4 + "hunter.io API Key": "",
     5 + "EmailRep.io API Key": ""
     6 + }
     7 +]
  • ■ ■ ■ ■ ■ ■
    main.go
     1 +// https://github.com/alpkeskin/
     2 +package main
     3 + 
     4 +import (
     5 + "flag"
     6 + "fmt"
     7 + "time"
     8 + 
     9 + "main/modules"
     10 + "os"
     11 + 
     12 + "github.com/dimiro1/banner"
     13 + "github.com/fatih/color"
     14 + "github.com/mattn/go-colorable"
     15 + "github.com/olekukonko/tablewriter"
     16 +)
     17 + 
     18 +func init() {
     19 + templ := `{{ .Title "mosint" "" 2 }}
     20 + {{ .AnsiColor.BrightWhite }}v2.0{{ .AnsiColor.Default }}
     21 + {{ .AnsiColor.BrightCyan }}https://github.com/alpkeskin/{{ .AnsiColor.Default }}
     22 + Now: {{ .Now "Monday, 2 Jan 2006" }}`
     23 + 
     24 + banner.InitString(colorable.NewColorableStdout(), true, true, templ)
     25 + println()
     26 +}
     27 + 
     28 +func help_menu() {
     29 + data := [][]string{
     30 + {"-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"},
     39 + {"-all", "All features!", "No"},
     40 + }
     41 + table := tablewriter.NewWriter(os.Stdout)
     42 + table.SetHeader([]string{"Flags", "Description", "isRequired"})
     43 + for _, v := range data {
     44 + table.Append(v)
     45 + }
     46 + table.Render()
     47 + color.Yellow("Example: go run main.go -e [email protected] -all")
     48 +}
     49 + 
     50 +func main() {
     51 + 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")
     60 + var help *bool = flag.Bool("h", false, "Help Menu")
     61 + var all *bool = flag.Bool("all", false, "All features!")
     62 + flag.Parse()
     63 + if *email == "" {
     64 + help_menu()
     65 + } else if *help {
     66 + help_menu()
     67 + } 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)
     102 + }
     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)
     116 + }
     117 + if *leaks {
     118 + color.Magenta("Password Leaks:")
     119 + modules.Runner(*email, "breachdirectory")
     120 + }
     121 + if *pastebin_dumps {
     122 + color.Magenta("Pastebin Dumps Searching:")
     123 + modules.Pastebin_search(*email)
     124 + }
     125 + if *emailrep {
     126 + color.Magenta("EmailRep.io API Results:")
     127 + modules.Runner(*email, "emailrep")
     128 + }
     129 + if *domain {
     130 + color.Magenta("Domain Investigation:")
     131 + modules.DNS_lookup(*email)
     132 + modules.IPapi(*email)
     133 + modules.Subdomains(*email)
     134 + }
     135 + }
     136 + }
     137 +}
     138 + 
  • ■ ■ ■ ■ ■ ■
    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/BreachedSites.py
    1  -import requests
    2  -from insides.bcolors import bcolors
    3  - 
    4  -def BreachedSites(mail,breachedsites,_verbose=None):
    5  - if _verbose != None:
    6  - try:
    7  - url = "https://leak-lookup.com/api/search"
    8  - payload = {"key": breachedsites, "type": "email_address", "query": mail}
    9  - res = requests.post(url, data=payload, timeout=30).json()
    10  - if res['error'] == 'false' and isinstance(res['message'], dict):
    11  - for i in res['message'].keys():
    12  - print(f"[{bcolors.WARNING}!{bcolors.ENDC}] {i}")
    13  - else:
    14  - print(f"{bcolors.FAIL}Leak-lookup.com API error:{bcolors.ENDC} {res['message']}")
    15  - except:
    16  - print(f"{bcolors.FAIL}Leak-lookup.com error!{bcolors.ENDC}")
  • ■ ■ ■ ■ ■ ■
    modules/ConfigTree.py
    1  -from anytree import Node, RenderTree
    2  -from bs4 import BeautifulSoup
    3  -import json, requests
    4  -from insides.bcolors import bcolors
    5  - 
    6  -# TODO: Clean boolean in string.
    7  - 
    8  -def ConfigTree(verifyApi,socialscan,leakeddb,breachedsites,hunterApi,checkPDF,dbdata,tcrwd,pastebindumps,googlesearch,dns, _verbose=None):
    9  - if _verbose != None:
    10  - try:
    11  - fileshow = Node(f"{bcolors.BOLD}Config File{bcolors.ENDC} [Modules]")
    12  - vrfctnsrvc1 = Node("Verify API", parent=fileshow)
    13  - if (verifyApi != ""):
    14  - creditsurl = "https://app.verify-email.org/api/v1/"+verifyApi+"/credits"
    15  - response = requests.get(creditsurl)
    16  - html = response.content
    17  - soup=BeautifulSoup(html,"html.parser")
    18  - strsoup = str(soup)
    19  - data = json.loads(strsoup)
    20  - str(data['credits'])
    21  - vrfctnsrvc11 = Node('\x1b[6;30;42m'+'True'+ '\x1b[0m', parent=vrfctnsrvc1)
    22  - vrfctnsrvc12 = Node("Credits", parent=vrfctnsrvc1)
    23  - vrfctnsrvc121 = Node('\x1b[6;30;42m'+str(data['credits'])+ '\x1b[0m', parent=vrfctnsrvc12)
    24  - else:
    25  - vrfctnsrvc11 = Node('\x1b[1;31;40m'+'False'+ '\x1b[0m', parent=vrfctnsrvc1)
    26  - sclscn1 = Node("Social Scan", parent=fileshow)
    27  - if (socialscan == "True" or socialscan == "true"):
    28  - sclscn11 = Node('\x1b[6;30;42m'+socialscan+ '\x1b[0m', parent=sclscn1)
    29  - else:
    30  - sclscn11 = Node('\x1b[1;31;40m'+'False'+ '\x1b[0m', parent=sclscn1)
    31  - lkeddb1 = Node("Leaked DB", parent=fileshow)
    32  - if (leakeddb == "True" or leakeddb == "true"):
    33  - lkeddb11 = Node('\x1b[6;30;42m'+leakeddb+ '\x1b[0m', parent=lkeddb1)
    34  - else:
    35  - lkeddb11 = Node('\x1b[1;31;40m'+'False'+ '\x1b[0m', parent=lkeddb1)
    36  - breachedS = Node("Breached Sites", parent=fileshow)
    37  - if (breachedsites != ""):
    38  - bs = Node('\x1b[6;30;42m'+'True'+ '\x1b[0m', parent=breachedS)
    39  - else:
    40  - bs = Node('\x1b[1;31;40m'+'False'+ '\x1b[0m', parent=breachedS)
    41  - hntr1 = Node("Hunter API", parent=fileshow)
    42  - if (hunterApi != ""):
    43  - hntr11 = Node('\x1b[6;30;42m'+'True'+ '\x1b[0m', parent=hntr1)
    44  - else:
    45  - hntr11 = Node('\x1b[1;31;40m'+'False'+ '\x1b[0m', parent=hntr1)
    46  - pdf = Node("PDF Check", parent=fileshow)
    47  - if (checkPDF == "True" or checkPDF == "true"):
    48  - pdf1 = Node('\x1b[6;30;42m'+'True'+ '\x1b[0m', parent=pdf)
    49  - else:
    50  - pdf1 = Node('\x1b[1;31;40m'+'False'+ '\x1b[0m', parent=pdf)
    51  - dbdt1 = Node("Related Phone Numbers", parent=fileshow)
    52  - if (dbdata == "True" or dbdata == "true"):
    53  - dbdt11 = Node('\x1b[6;30;42m'+dbdata+ '\x1b[0m', parent=dbdt1)
    54  - else:
    55  - dbdt11 = Node('\x1b[1;31;40m'+'False'+ '\x1b[0m', parent=dbdt1)
    56  - thrcwd1 = Node("Related Domains", parent=fileshow)
    57  - if (tcrwd == "True" or tcrwd == "true"):
    58  - thrcwd11 = Node('\x1b[6;30;42m'+tcrwd+ '\x1b[0m', parent=thrcwd1)
    59  - else:
    60  - thrcwd11 = Node('\x1b[1;31;40m'+'False'+ '\x1b[0m', parent=thrcwd1)
    61  - pstbn1 = Node("Pastebin Dumps", parent=fileshow)
    62  - if (pastebindumps == "True" or pastebindumps == "true"):
    63  - pstbn11 = Node('\x1b[6;30;42m'+pastebindumps+ '\x1b[0m', parent=pstbn1)
    64  - else:
    65  - pstbn11 = Node('\x1b[1;31;40m'+'False'+ '\x1b[0m', parent=pstbn1)
    66  - goo1 = Node("Google Search", parent=fileshow)
    67  - if (googlesearch == "True" or googlesearch == "true"):
    68  - goo11 = Node('\x1b[6;30;42m'+googlesearch+ '\x1b[0m', parent=goo1)
    69  - else:
    70  - goo11 = Node('\x1b[1;31;40m'+'False'+ '\x1b[0m', parent=goo1)
    71  - dns1 = Node("DNS Lookup", parent=fileshow)
    72  - if (dns == "True" or dns == "true"):
    73  - dns11 = Node('\x1b[6;30;42m'+dns+ '\x1b[0m', parent=dns1)
    74  - else:
    75  - dns11 = Node('\x1b[1;31;40m'+'False'+ '\x1b[0m', parent=dns1)
    76  - 
    77  - for pre, fill, node in RenderTree(fileshow):
    78  - print("%s%s" % (pre, node.name))
    79  - print("")
    80  - except:
    81  - print("Tree Error!")
    82  - 
  • ■ ■ ■ ■ ■ ■
    modules/DNS.py
    1  -import requests
    2  -from prettytable import PrettyTable
    3  -from insides.bcolors import bcolors
    4  - 
    5  -def DNS(mail,_verbose=None):
    6  - if _verbose != None:
    7  - try:
    8  - print(f"{bcolors.WARNING} -- DNS Records [ Cloudflare ]{bcolors.ENDC}")
    9  - domain = mail.split("@")[1]
    10  - dnstable = PrettyTable([f"{bcolors.WARNING}Record Type{bcolors.ENDC}","Answer"])
    11  - recordTypes = ["NS", "A", "AAAA", "TXT", "MX"]
    12  - for recordType in recordTypes:
    13  - params = (
    14  - ('name', domain),
    15  - ('type', recordType),
    16  - ('cd', 'false'),
    17  - )
    18  - 
    19  - r = requests.get('https://cloudflare-dns.com/dns-query', headers={ 'accept': 'application/dns-json' }, params=params).json().get("Answer") or []
    20  - 
    21  - if recordType == "NS" and r == []:
    22  - print(f"{bcolors.FAIL}NS can not found! [ DNS Lookup ]{bcolors.ENDC}")
    23  - return
    24  - 
    25  - for record in r:
    26  - value = record.get('data')
    27  - dnstable.add_row([recordType, value])
    28  - print(dnstable)
    29  - except:
    30  - print(f"{bcolors.FAIL}Cloudflare DoH error!{bcolors.ENDC}")
  • ■ ■ ■ ■ ■ ■
    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/Googling.go
     1 +package modules
     2 + 
     3 +import (
     4 + "github.com/fatih/color"
     5 + googlesearch "github.com/rocketlaunchr/google-search"
     6 +)
     7 + 
     8 +func Pastebin_search(email string) {
     9 + q := "intext:" + string('"') + email + string('"') + " site:pastebin.com"
     10 + res, _ := googlesearch.Search(nil, q)
     11 + size := len(res)
     12 + for i := 0; i < size; i++ {
     13 + color.Green(res[i].URL)
     14 + }
     15 + q = "intext:" + string('"') + email + string('"') + " site:throwbin.io"
     16 + res, _ = googlesearch.Search(nil, q)
     17 + size2 := len(res)
     18 + for i := 0; i < size2; i++ {
     19 + color.Green(res[i].URL)
     20 + }
     21 + if size == 0 && size2 == 0 {
     22 + color.Red("[-] Not Found")
     23 + }
     24 +}
     25 + 
     26 +func Related_domains_google(email string) {
     27 + res, _ := googlesearch.Search(nil, email)
     28 + size := len(res)
     29 + if size > 0 {
     30 + println("From google search:")
     31 + } else {
     32 + color.Red("[-] Not Found!")
     33 + }
     34 + for i := 0; i < size; i++ {
     35 + color.Green("[+] " + res[i].URL)
     36 + }
     37 +}
     38 + 
  • ■ ■ ■ ■ ■ ■
    modules/Googling.py
    1  -from googlesearch import search
    2  -from insides.bcolors import bcolors
    3  - 
    4  - 
    5  -def Googling(mail,_verbose=None):
    6  - if _verbose != None:
    7  - try:
    8  - print(f"{bcolors.WARNING} -- Google Searching... [Pastebin & Throwbin]{bcolors.ENDC}")
    9  - print(f"{bcolors.FAIL}!{bcolors.ENDC}"+"Google Search may not work properly.\n")
    10  - urls = search(f'site:throwbin.io intext:"{mail}"') + search(f'site:pastebin.com intext:"{mail}"')
    11  - if len(urls):
    12  - for x in urls:
    13  - print(f"{bcolors.OKGREEN}|-- {bcolors.ENDC}"+x)
    14  - else:
    15  - print(f"{bcolors.FAIL}No Google Search result found!{bcolors.ENDC}")
    16  - except:
    17  - print(f"{bcolors.FAIL}Google Search error!{bcolors.ENDC}")
    18  - 
  • ■ ■ ■ ■ ■ ■
    modules/Hunter.py
    1  -from bs4 import BeautifulSoup
     1 +import argparse
    2 2  import json
    3 3  import requests
    4  -from insides.bcolors import bcolors
    5  -from insides.commonMails import commonMails
    6 4   
    7 5   
    8  -def Hunter(mail, hunterAPIKey, _verbose=None):
    9  - if _verbose != None:
    10  - try:
    11  - domain = mail.split("@")[1]
    12  - if (domain in commonMails):
    13  - print(f"{bcolors.FAIL}Unacceptable domain :{bcolors.ENDC} {domain}")
    14  - else:
    15  - res = requests.get(f"https://api.hunter.io/v2/domain-search?domain={domain}&api_key={hunterAPIKey}").json()
    16  - if len(res['data']['emails']):
    17  - print(f"{bcolors.BOLD}Related emails:{bcolors.ENDC}")
    18  - for i in res['data']['emails'][:100]:
    19  - print(i["value"])
    20  - else:
    21  - print(f"{bcolors.FAIL}No related mails found!{bcolors.ENDC}")
    22  - except:
    23  - print(f"{bcolors.FAIL}Hunter.io error!{bcolors.ENDC}")
     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()
    24 50   
  • ■ ■ ■ ■ ■ ■
    modules/LeakedDB.py
    1  -import requests
    2  -from insides.bcolors import bcolors
    3  -from prettytable import PrettyTable
    4  - 
    5  -def LeakedDB(mail,_verbose=None):
    6  - if _verbose != None:
    7  - try:
    8  - res = requests.get(f"https://scylla.sh/search?q=email:{mail}&size=50&start=0", headers={'Accept': 'application/json'}).json()
    9  - table = PrettyTable(["Domain","Email",f"{bcolors.FAIL}Password{bcolors.ENDC}"])
    10  - if len(res):
    11  - for s in res:
    12  - table.add_row([s["fields"]["domain"],s["fields"]["email"],s["fields"].get("password") or s["fields"].get("passhash") or "No Pass Data"])
    13  - print(table)
    14  - else:
    15  - print(f"{bcolors.FAIL}No leaked accounts found!{bcolors.ENDC}")
    16  - except Exception as e:
    17  - print(e)
    18  - print(f"{bcolors.FAIL}Leaked DB Connection Error!{bcolors.ENDC}")
    19  - 
  • ■ ■ ■ ■ ■ ■
    modules/Lookup.go
     1 +package modules
     2 + 
     3 +import (
     4 + "encoding/json"
     5 + "fmt"
     6 + "net"
     7 + "os"
     8 + "strings"
     9 + 
     10 + "github.com/fatih/color"
     11 + "github.com/olekukonko/tablewriter"
     12 + "github.com/valyala/fasthttp"
     13 +)
     14 + 
     15 +func DNS_lookup(email string) {
     16 + splt := strings.Split(email, "@")
     17 + 
     18 + data := [][]string{}
     19 + iprecords, _ := net.LookupIP(splt[1])
     20 + for _, ip := range iprecords {
     21 + row := []string{"IP", ip.String()}
     22 + data = append(data, row)
     23 + }
     24 + nameserver, _ := net.LookupNS(splt[1])
     25 + for _, ns := range nameserver {
     26 + row := []string{"NS", ns.Host}
     27 + data = append(data, row)
     28 + }
     29 + mxrecords, _ := net.LookupMX(splt[1])
     30 + for _, mx := range mxrecords {
     31 + row := []string{"MX", mx.Host}
     32 + data = append(data, row)
     33 + }
     34 + txtrecords, _ := net.LookupTXT(splt[1])
     35 + for _, txt := range txtrecords {
     36 + row := []string{"TXT", txt}
     37 + data = append(data, row)
     38 + }
     39 + 
     40 + table := tablewriter.NewWriter(os.Stdout)
     41 + table.SetHeader([]string{"Name", "Record"})
     42 + 
     43 + for _, v := range data {
     44 + table.Append(v)
     45 + }
     46 + table.Render() // Send output
     47 +}
     48 + 
     49 +func IPapi(email string) {
     50 + splt := strings.Split(email, "@")
     51 + ips, _ := net.LookupIP(splt[1])
     52 + ip4api := ""
     53 + for _, ip := range ips {
     54 + if ipv4 := ip.To4(); ipv4 != nil {
     55 + ip4api = ipv4.String()
     56 + }
     57 + }
     58 + if ip4api != "" {
     59 + req := fasthttp.AcquireRequest()
     60 + resp := fasthttp.AcquireResponse()
     61 + defer fasthttp.ReleaseRequest(req)
     62 + defer fasthttp.ReleaseResponse(resp)
     63 + 
     64 + req.SetRequestURI("https://ipapi.co/" + ip4api + "/json/")
     65 + 
     66 + fasthttp.Do(req, resp)
     67 + 
     68 + 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"]))
     83 + }
     84 +}
     85 + 
  • ■ ■ ■ ■ ■ ■
    modules/PDFcheck.py
    1  -from googlesearch import search
    2  -from datetime import datetime
    3  -import requests,re,PyPDF2,tabula,os
    4  - 
    5  -def PDFcheck(mail,_verbose=None):
    6  - domain = mail.split("@")[1]
    7  - term = "site:"+domain+" filetype:PDF intext:"+'"'+"email"+'"'
    8  - emails = ""
    9  - try:
    10  - data = search(term, num_results=5)
    11  - for i in data:
    12  - r = requests.get(i, stream=True)
    13  - with open('data.pdf', 'wb') as f:
    14  - f.write(r.content)
    15  - pdfFileObj = open('data.pdf', 'rb')
    16  - for pageNumber in range(1,3):
    17  - tabula.convert_into("data.pdf","out.txt",pages=pageNumber,silent=True)
    18  - file = open("out.txt","r",encoding="utf-8")
    19  - read = file.read()
    20  - findPDFs= re.findall('[\w\.-]+@[a-z0-9\.-]+', read)
    21  - try:
    22  - if(findPDFs[0] is not None):
    23  - for pdfs in findPDFs:
    24  - print(pdfs)
    25  - emails = emails + "\n" + pdfs
    26  - with open((datetime.today().strftime('%Y-%m-%d-'+domain)+".txt"), "w") as f:
    27  - f.write(emails)
    28  - f.close()
    29  - except:
    30  - pass
    31  - pdfFileObj.close()
    32  - file.close()
    33  - if os.path.exists("data.pdf"):
    34  - os.remove("data.pdf")
    35  - if os.path.exists("out.txt"):
    36  - os.remove("out.txt")
    37  - except:
    38  - print("PDF Search error!")
    39  - 
  • ■ ■ ■ ■ ■ ■
    modules/Psbdmp.py
    1  -from bs4 import BeautifulSoup
    2  -import json, requests
    3  -from insides.bcolors import bcolors
    4  - 
    5  -def Psbdmp(mail,_verbose=None):
    6  - if _verbose != None:
    7  - try:
    8  - print(f"{bcolors.WARNING} -- Scanning Pastebin Dumps...{bcolors.ENDC}\n")
    9  - res = requests.get(f"https://psbdmp.ws/api/search/{mail}",headers={ "Accept": "application/json" }).json().get('data') or []
    10  - if len(res):
    11  - for i in res:
    12  - print(f"{bcolors.OKGREEN}|-- {bcolors.ENDC}"+"https://pastebin.com/"+i['id'])
    13  - else:
    14  - print(f"{bcolors.FAIL}No psbdump records found!{bcolors.ENDC}")
    15  - except:
    16  - print(f"{bcolors.FAIL}Psbdump Error!{bcolors.ENDC}")
    17  - 
  • ■ ■ ■ ■ ■ ■
    modules/RelatedDomains.py
    1  -from bs4 import BeautifulSoup
    2  -import json, requests
    3  -from insides.bcolors import bcolors
    4  - 
    5  -def RelatedDomains(mail,_verbose=None):
    6  - if _verbose != None:
    7  - try:
    8  - res = requests.get(f"https://www.threatcrowd.org/searchApi/v2/email/report/?email={mail}").json()
    9  - domains = res.get('domains') or []
    10  - if len(domains):
    11  - print(f"{bcolors.BOLD}Related Domains:{bcolors.ENDC}")
    12  - for domain in domains:
    13  - print(domain)
    14  - else:
    15  - print(f"{bcolors.FAIL}No related domains found!{bcolors.ENDC}")
    16  - except:
    17  - print(f"{bcolors.FAIL}Threatcrowd Error!{bcolors.ENDC}")
    18  - 
  • ■ ■ ■ ■ ■ ■
    modules/RelatedNumbers.py
    1  -from bs4 import BeautifulSoup
    2  -import requests, re
    3  -from insides.bcolors import bcolors
    4  - 
    5  -def RelatedNumbers(mail, _verbose=None):
    6  - if _verbose != None:
    7  - try:
    8  - html = requests.get(f"https://domainbigdata.com/email/{ mail }").content
    9  - soup=BeautifulSoup(html,"html.parser")
    10  - rgx = str(soup)
    11  - phones = re.findall('<td colspan="2">\+.*.</td>', rgx)
    12  - for phone in phones:
    13  - number = phone.replace("<td colspan="+'"'+'2'+'"'+'>', "").replace("</td>","")
    14  - print(number)
    15  - if len(phones) == 0:
    16  - print(f"{bcolors.FAIL}No phone numbers found!{bcolors.ENDC}")
    17  - except:
    18  - print(f"{bcolors.FAIL}Phone Number Data Error!{bcolors.ENDC}")
    19  - 
  • ■ ■ ■ ■ ■ ■
    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  -from bs4 import BeautifulSoup
    2  -import json, requests
    3  -from insides.bcolors import bcolors
    4 1  from socialscan.util import Platforms, sync_execute_queries
     2 +import argparse
    5 3   
    6  -def SocialScan(mail,_verbose=None):
    7  - if _verbose != None:
    8  - try:
    9  - queries = [mail]
    10  - platforms = [Platforms.GITHUB, Platforms.TWITTER, Platforms.INSTAGRAM, Platforms.PINTEREST, Platforms.SPOTIFY]
    11  - results = sync_execute_queries(queries, platforms)
    12  - for result in results:
    13  - print(f"{bcolors.BOLD}{result.platform}:{bcolors.ENDC}{bcolors.WARNING} {result.message} (Success: {result.success}, Available: {result.available}){bcolors.ENDC}")
    14  - except:
    15  - print(f"{bcolors.FAIL}SocialScan Error!{bcolors.ENDC}")
     4 + 
     5 +class bcolors:
     6 + OKGREEN = "\033[92m"
     7 + FAIL = "\033[91m"
     8 + ENDC = "\033[0m"
     9 + 
     10 + 
     11 +def parse_args():
     12 + parser = argparse.ArgumentParser()
     13 + parser.add_argument("-e", "--email", type=str, required=True, help="Email")
     14 + return parser.parse_args()
     15 + 
     16 + 
     17 +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 + 
     38 + 
     39 +main()
    16 40   
  • ■ ■ ■ ■ ■ ■
    modules/ThreatCrowd.go
     1 +package modules
     2 + 
     3 +import (
     4 + "encoding/json"
     5 + "fmt"
     6 + "strings"
     7 + 
     8 + "github.com/fatih/color"
     9 + "github.com/valyala/fasthttp"
     10 +)
     11 + 
     12 +func doRequest(url string, kind string) {
     13 + req := fasthttp.AcquireRequest()
     14 + resp := fasthttp.AcquireResponse()
     15 + defer fasthttp.ReleaseRequest(req)
     16 + defer fasthttp.ReleaseResponse(resp)
     17 + 
     18 + req.SetRequestURI(url)
     19 + 
     20 + fasthttp.Do(req, resp)
     21 + 
     22 + bodyBytes := resp.Body()
     23 + var dat map[string]interface{}
     24 + if err := json.Unmarshal(bodyBytes, &dat); err != nil {
     25 + panic(err)
     26 + }
     27 + if dat["response_code"] == "1" {
     28 + q := dat[kind]
     29 + str := fmt.Sprintf("%v", q)
     30 + splt := strings.Split(str, " ")
     31 + length := len(splt)
     32 + if length > 0 {
     33 + for i := 0; i < length; i++ {
     34 + if i == 0 {
     35 + color.Green("[+] " + splt[i][1:])
     36 + } else if i == (length - 1) {
     37 + color.Green("[+] " + splt[i][:len(splt[i])-1])
     38 + } else {
     39 + color.Green("[+] " + splt[i])
     40 + }
     41 + }
     42 + } else {
     43 + color.Red("[-] Not found!")
     44 + }
     45 + } else {
     46 + color.Red("[-] Not found!")
     47 + }
     48 +}
     49 + 
     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")
     58 +}
     59 + 
     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")
     63 +}
     64 + 
  • ■ ■ ■ ■ ■ ■
    modules/Verify.go
     1 +package modules
     2 + 
     3 +import (
     4 + emailverifier "github.com/AfterShip/email-verifier"
     5 + "github.com/fatih/color"
     6 +)
     7 + 
     8 +var (
     9 + verifier = emailverifier.NewVerifier()
     10 +)
     11 + 
     12 +func Verify_email(email string) {
     13 + ret, err := verifier.Verify(email)
     14 + if err != nil {
     15 + color.Red("[-] Verify email address failed, error is: ", err)
     16 + 
     17 + }
     18 + if !ret.Syntax.Valid {
     19 + color.Red("[-] Email address syntax is invalid!")
     20 + }
     21 + color.Green("[+] Email verified!")
     22 + 
     23 +}
     24 + 
  • ■ ■ ■ ■ ■ ■
    modules/VerifyMail.py
    1  -import requests
    2  -from verify_email import verify_email
    3  -from insides.bcolors import bcolors
    4  - 
    5  - 
    6  -def VerifyMail(verifyAPIKey, mail, _verbose=None):
    7  - if _verbose != None:
    8  - res = requests.get(f"https://app.verify-email.org/api/v1/{verifyAPIKey}/verify/{mail}").json()
    9  - print(f"[{bcolors.HEADER}#{bcolors.ENDC}] Verify-Email.org result : {res.get('status_description')}")
    10  - if verify_email(mail):
    11  - print(f"[{bcolors.HEADER}#{bcolors.ENDC}] Built-in Mail Verify result : {bcolors.OKGREEN}OK{bcolors.ENDC}")
    12  - else:
    13  - print(f"[{bcolors.HEADER}#{bcolors.ENDC}] Built-in Mail Verify result : {bcolors.FAIL}FAILED{bcolors.ENDC}")
  • ■ ■ ■ ■ ■ ■
    mosint.py
    1  -# https://github.com/alpkeskin
    2  -import json, re
    3  -from insides.bcolors import bcolors
    4  -from insides.Header import Header
    5  - 
    6  -def parse_args():
    7  - import argparse
    8  - parser = argparse.ArgumentParser()
    9  - parser.add_argument('-e', '--email', type=str, required=True, help="Email")
    10  - return parser.parse_args()
    11  - 
    12  - 
    13  -# TODO: Clean boolean in string.
    14  - 
    15  -def main():
    16  - args = parse_args()
    17  - mail = args.email
    18  - 
    19  - EMAIL_REGEX = r'(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)'
    20  - 
    21  - if not re.match(EMAIL_REGEX, mail):
    22  - print(f"{bcolors.FAIL}Email format is wrong!{bcolors.ENDC}")
    23  - exit()
    24  - 
    25  - with open('config.json', "r") as configFile:
    26  - conf = json.loads(configFile.read())
    27  - 
    28  - for i in conf:
    29  - verifyApi = (i['verify-email.org API Key'])
    30  - socialscan = (i['Social Scan'])
    31  - leakeddb = (i['Leaked DB'])
    32  - breachedsites = (i['Breached Sites[leak-lookup.com API Key]'])
    33  - hunterApi = (i['hunter.io API Key'])
    34  - checkPDF = (i['PDF Check for Related Emails'])
    35  - dbdata = (i['Related Phone Numbers'])
    36  - tcrwd = (i['Related Domains'])
    37  - pastebindumps = (i['Pastebin Dumps'])
    38  - googlesearch = (i['Google Search'])
    39  - dns = (i['DNS Lookup'])
    40  - 
    41  - from insides.Banner import Banner
    42  - Banner()
    43  - 
    44  - from modules.ConfigTree import ConfigTree
    45  - ConfigTree(verifyApi,socialscan,leakeddb,breachedsites,hunterApi,checkPDF,dbdata,tcrwd,pastebindumps,googlesearch,dns,_verbose=True)
    46  - 
    47  - print("")
    48  - 
    49  - if (verifyApi != ""):
    50  - from modules.VerifyMail import VerifyMail
    51  - title = "VERIFICATION SERVICE"
    52  - Header(title)
    53  - VerifyMail(verifyApi,mail,_verbose=True)
    54  - 
    55  - if (socialscan == "True" or socialscan == "T" or socialscan == "true"):
    56  - from modules.SocialScan import SocialScan
    57  - title = "SOCIAL SCAN"
    58  - Header(title)
    59  - SocialScan(mail,_verbose=True)
    60  - 
    61  - if (leakeddb == "True" or leakeddb == "T" or leakeddb == "true"):
    62  - from modules.LeakedDB import LeakedDB
    63  - title = "LEAKED DB [Password dumps]"
    64  - Header(title)
    65  - LeakedDB(mail,_verbose=True)
    66  - 
    67  - if (breachedsites != ""):
    68  - from modules.BreachedSites import BreachedSites
    69  - title = "BREACHED SITES"
    70  - Header(title)
    71  - BreachedSites(mail,breachedsites,_verbose=True)
    72  - 
    73  - if (hunterApi != ""):
    74  - from modules.Hunter import Hunter
    75  - title = "RELATED EMAILS"
    76  - Header(title)
    77  - Hunter(mail,hunterApi,_verbose=True)
    78  - 
    79  - if (checkPDF == "True" or checkPDF == "T" or checkPDF == "true"):
    80  - from modules.PDFcheck import PDFcheck
    81  - title = "RELATED EMAILS IN PDFs"
    82  - Header(title)
    83  - PDFcheck(mail,_verbose=True)
    84  - 
    85  - if (dbdata == "True" or dbdata == "T" or dbdata == "true"):
    86  - from modules.RelatedNumbers import RelatedNumbers
    87  - title = "RELATED PHONE NUMBERS"
    88  - Header(title)
    89  - RelatedNumbers(mail,_verbose=True)
    90  - 
    91  - if (tcrwd == "True" or tcrwd == "T" or tcrwd == "true"):
    92  - from modules.RelatedDomains import RelatedDomains
    93  - title = "RELATED DOMAINS"
    94  - Header(title)
    95  - RelatedDomains(mail,_verbose=True)
    96  - 
    97  - if (pastebindumps == "True" or pastebindumps == "T" or pastebindumps == "true"):
    98  - from modules.Psbdmp import Psbdmp
    99  - title = "PASTEBIN DUMPS"
    100  - Header(title)
    101  - Psbdmp(mail,_verbose=True)
    102  - 
    103  - if (googlesearch == "True" or googlesearch == "T" or googlesearch == "true"):
    104  - from modules.Googling import Googling
    105  - title = "GOOGLING"
    106  - Header(title)
    107  - Googling(mail,_verbose=True)
    108  - 
    109  - if (dns == "True" or dns == "T" or dns == "true"):
    110  - from modules.DNS import DNS
    111  - title = "DNS LOOKUP"
    112  - Header(title)
    113  - DNS(mail,_verbose=True)
    114  - 
    115  -main()
    116  -
    117  - 
  • ■ ■ ■ ■ ■
    requirements.txt
    1  -tabula_py==2.2.0
    2  -google==3.0.0
     1 +requests==2.26.0
    3 2  socialscan==1.4.1
    4  -requests==2.22.0
    5  -anytree==2.8.0
    6  -prettytable==0.7.2
    7  -beautifulsoup4==4.9.3
    8  -PyPDF2==1.26.0
    9  -tabula==1.0.5
    10  -verify_email==2.4.3
     3 +emailrep==0.0.5
    11 4   
Please wait...
Page is in error, reload to recover