Projects STRLCPY extractify Commits 635659b6
🤬
  • ■ ■ ■ ■ ■ ■
    go.mod
     1 +module github.com/SharokhAtaie/extractify
     2 + 
     3 +go 1.21
     4 + 
     5 +require (
     6 + github.com/projectdiscovery/goflags v0.1.33
     7 + github.com/projectdiscovery/gologger v1.1.12
     8 + github.com/projectdiscovery/utils v0.0.70
     9 +)
     10 + 
     11 +require (
     12 + github.com/andybalholm/brotli v1.0.6 // indirect
     13 + github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect
     14 + github.com/aymerick/douceur v0.2.0 // indirect
     15 + github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08 // indirect
     16 + github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect
     17 + github.com/go-resty/resty/v2 v2.11.0 // indirect
     18 + github.com/golang/snappy v0.0.4 // indirect
     19 + github.com/gorilla/css v1.0.0 // indirect
     20 + github.com/json-iterator/go v1.1.12 // indirect
     21 + github.com/klauspost/compress v1.11.4 // indirect
     22 + github.com/klauspost/pgzip v1.2.5 // indirect
     23 + github.com/logrusorgru/aurora v2.0.3+incompatible // indirect
     24 + github.com/mholt/archiver/v3 v3.5.1 // indirect
     25 + github.com/microcosm-cc/bluemonday v1.0.26 // indirect
     26 + github.com/miekg/dns v1.1.55 // indirect
     27 + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
     28 + github.com/modern-go/reflect2 v1.0.2 // indirect
     29 + github.com/nwaples/rardecode v1.1.3 // indirect
     30 + github.com/pierrec/lz4/v4 v4.1.2 // indirect
     31 + github.com/pkg/errors v0.9.1 // indirect
     32 + github.com/projectdiscovery/blackrock v0.0.1 // indirect
     33 + github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca // indirect
     34 + github.com/ulikunitz/xz v0.5.11 // indirect
     35 + github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
     36 + golang.org/x/exp v0.0.0-20221019170559-20944726eadf // indirect
     37 + golang.org/x/mod v0.8.0 // indirect
     38 + golang.org/x/net v0.17.0 // indirect
     39 + golang.org/x/sys v0.15.0 // indirect
     40 + golang.org/x/tools v0.6.0 // indirect
     41 + gopkg.in/djherbis/times.v1 v1.3.0 // indirect
     42 + gopkg.in/yaml.v3 v3.0.1 // indirect
     43 +)
     44 + 
  • ■ ■ ■ ■ ■ ■
    go.sum
     1 +github.com/andybalholm/brotli v1.0.1/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
     2 +github.com/andybalholm/brotli v1.0.6 h1:Yf9fFpf49Zrxb9NlQaluyE92/+X7UVHlhMNJN2sxfOI=
     3 +github.com/andybalholm/brotli v1.0.6/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
     4 +github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ=
     5 +github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
     6 +github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
     7 +github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
     8 +github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08 h1:ox2F0PSMlrAAiAdknSRMDrAr8mfxPCfSZolH+/qQnyQ=
     9 +github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08/go.mod h1:pCxVEbcm3AMg7ejXyorUXi6HQCzOIBf7zEDVPtw0/U4=
     10 +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
     11 +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
     12 +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
     13 +github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 h1:iFaUwBSo5Svw6L7HYpRu/0lE3e0BaElwnNO1qkNQxBY=
     14 +github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=
     15 +github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
     16 +github.com/go-resty/resty/v2 v2.11.0 h1:i7jMfNOJYMp69lq7qozJP+bjgzfAzeOhuGlyDrqxT/8=
     17 +github.com/go-resty/resty/v2 v2.11.0/go.mod h1:iiP/OpA0CkcL3IGt1O0+/SIItFUbkkyw5BGXiVdTu+A=
     18 +github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
     19 +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
     20 +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
     21 +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
     22 +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
     23 +github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY=
     24 +github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=
     25 +github.com/jpillora/go-tld v1.2.1 h1:kDKOkmXLlskqjcvNs7w5XHLep7c8WM7Xd4HQjxllVMk=
     26 +github.com/jpillora/go-tld v1.2.1/go.mod h1:plzIl7xr5UWKGy7R+giuv+L/nOjrPjsoWxy/ST9OBUk=
     27 +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
     28 +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
     29 +github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
     30 +github.com/klauspost/compress v1.11.4 h1:kz40R/YWls3iqT9zX9AHN3WoVsrAWVyui5sxuLqiXqU=
     31 +github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
     32 +github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
     33 +github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE=
     34 +github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
     35 +github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8=
     36 +github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
     37 +github.com/mholt/archiver/v3 v3.5.1 h1:rDjOBX9JSF5BvoJGvjqK479aL70qh9DIpZCl+k7Clwo=
     38 +github.com/mholt/archiver/v3 v3.5.1/go.mod h1:e3dqJ7H78uzsRSEACH1joayhuSyhnonssnDhppzS1L4=
     39 +github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58=
     40 +github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs=
     41 +github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo=
     42 +github.com/miekg/dns v1.1.55/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY=
     43 +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
     44 +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
     45 +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
     46 +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
     47 +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
     48 +github.com/nwaples/rardecode v1.1.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=
     49 +github.com/nwaples/rardecode v1.1.3 h1:cWCaZwfM5H7nAD6PyEdcVnczzV8i/JtotnyW/dD9lEc=
     50 +github.com/nwaples/rardecode v1.1.3/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=
     51 +github.com/pierrec/lz4/v4 v4.1.2 h1:qvY3YFXRQE/XB8MlLzJH7mSzBs74eA2gg52YTk6jUPM=
     52 +github.com/pierrec/lz4/v4 v4.1.2/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
     53 +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
     54 +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
     55 +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
     56 +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
     57 +github.com/projectdiscovery/blackrock v0.0.1 h1:lHQqhaaEFjgf5WkuItbpeCZv2DUIE45k0VbGJyft6LQ=
     58 +github.com/projectdiscovery/blackrock v0.0.1/go.mod h1:ANUtjDfaVrqB453bzToU+YB4cUbvBRpLvEwoWIwlTss=
     59 +github.com/projectdiscovery/goflags v0.1.33 h1:6B/YkHMfnClSb+ibbS4GnSVXINSYxLNXGhEk5lwwogQ=
     60 +github.com/projectdiscovery/goflags v0.1.33/go.mod h1:nEe5PoL5ICWiVKBAfHXnPiAlIMK7VwetJkm5CViht4M=
     61 +github.com/projectdiscovery/gologger v1.1.12 h1:uX/QkQdip4PubJjjG0+uk5DtyAi1ANPJUvpmimXqv4A=
     62 +github.com/projectdiscovery/gologger v1.1.12/go.mod h1:DI8nywPLERS5mo8QEA9E7gd5HZ3Je14SjJBH3F5/kLw=
     63 +github.com/projectdiscovery/utils v0.0.70 h1:jWu74QImD4t7WoPE5Pq/0jwDv/ya4UqRwyUtt9ivIKI=
     64 +github.com/projectdiscovery/utils v0.0.70/go.mod h1:rbCLTm6m8Kyk7CDziKQCDKKdz899DUBGc2t9FRK+OZs=
     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/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
     69 +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
     70 +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
     71 +github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
     72 +github.com/ulikunitz/xz v0.5.9/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
     73 +github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
     74 +github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
     75 +github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo=
     76 +github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos=
     77 +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
     78 +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
     79 +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
     80 +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
     81 +golang.org/x/exp v0.0.0-20221019170559-20944726eadf h1:nFVjjKDgNY37+ZSYCJmtYf7tOlfQswHqplG2eosjOMg=
     82 +golang.org/x/exp v0.0.0-20221019170559-20944726eadf/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
     83 +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
     84 +golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
     85 +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
     86 +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
     87 +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
     88 +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
     89 +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
     90 +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
     91 +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
     92 +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
     93 +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
     94 +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
     95 +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
     96 +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
     97 +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
     98 +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
     99 +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
     100 +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
     101 +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
     102 +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
     103 +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
     104 +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
     105 +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
     106 +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
     107 +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
     108 +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
     109 +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
     110 +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
     111 +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
     112 +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
     113 +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
     114 +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
     115 +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
     116 +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
     117 +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
     118 +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
     119 +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
     120 +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
     121 +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
     122 +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
     123 +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
     124 +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
     125 +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
     126 +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
     127 +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
     128 +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
     129 +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
     130 +gopkg.in/djherbis/times.v1 v1.3.0 h1:uxMS4iMtH6Pwsxog094W0FYldiNnfY/xba00vq6C2+o=
     131 +gopkg.in/djherbis/times.v1 v1.3.0/go.mod h1:AQlg6unIsrsCEdQYhTzERy542dz6SFdQFZFv6mUY0P8=
     132 +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
     133 +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
     134 + 
  • ■ ■ ■ ■ ■ ■
    main.go
     1 +package main
     2 + 
     3 +import (
     4 + "crypto/tls"
     5 + "fmt"
     6 + "github.com/SharokhAtaie/extractify/scanner"
     7 + "github.com/go-resty/resty/v2"
     8 + "github.com/projectdiscovery/goflags"
     9 + "github.com/projectdiscovery/gologger"
     10 + fileutil "github.com/projectdiscovery/utils/file"
     11 + sUtils "github.com/projectdiscovery/utils/slice"
     12 + urlutil "github.com/projectdiscovery/utils/url"
     13 + "io"
     14 + "log"
     15 + "os"
     16 + "strings"
     17 + "time"
     18 +)
     19 + 
     20 +type options struct {
     21 + file string
     22 + url string
     23 + list string
     24 + endpoint bool
     25 + secret bool
     26 + parameter bool
     27 + all bool
     28 + urls bool
     29 + header string
     30 + verbose bool
     31 +}
     32 + 
     33 +func main() {
     34 + opt := &options{}
     35 + 
     36 + flagSet := goflags.NewFlagSet()
     37 + flagSet.SetDescription("A tool for extract Endpoints, URLs, Parameters and Secrets from contents")
     38 + 
     39 + flagSet.CreateGroup("Inputs", "Inputs",
     40 + flagSet.StringVarP(&opt.url, "url", "u", "", "URL for scanning"),
     41 + flagSet.StringVarP(&opt.list, "list", "l", "", "List of URLs for scanning"),
     42 + flagSet.StringVarP(&opt.file, "file", "f", "", "Local file data for scanning"),
     43 + )
     44 + 
     45 + flagSet.CreateGroup("Extract", "Extracts",
     46 + flagSet.BoolVarP(&opt.endpoint, "endpoints", "ee", false, "Extract endpoints"),
     47 + flagSet.BoolVarP(&opt.urls, "urls", "eu", false, "Extract urls"),
     48 + flagSet.BoolVarP(&opt.parameter, "parameters", "ep", false, "Extract parameters"),
     49 + flagSet.BoolVarP(&opt.secret, "secrets", "es", false, "Extract secrets"),
     50 + flagSet.BoolVarP(&opt.all, "all", "ea", false, "Extract all"),
     51 + )
     52 + 
     53 + flagSet.CreateGroup("Others", "Others",
     54 + flagSet.StringVarP(&opt.header, "header", "H", "", "Set custom header"),
     55 + flagSet.BoolVarP(&opt.verbose, "verbose", "v", false, "Verbose mode"),
     56 + )
     57 + 
     58 + if err := flagSet.Parse(); err != nil {
     59 + log.Fatalf("Could not parse flags: %s\n", err)
     60 + }
     61 + 
     62 + if opt.url == "" && opt.list == "" && opt.file == "" && !fileutil.HasStdin() {
     63 + PrintUsage()
     64 + return
     65 + }
     66 + 
     67 + if opt.file != "" {
     68 + bin, err := os.ReadFile(opt.file)
     69 + if err != nil {
     70 + gologger.Error().Msgf("failed to read file %v got %v", opt.list, err)
     71 + }
     72 + 
     73 + gologger.Info().Msgf("Processing %s", opt.file)
     74 + secrets, urls, endpoints, parameters := Run(bin, opt.file)
     75 + 
     76 + HandleResults(opt.endpoint, opt.parameter, opt.urls, opt.secret, opt.all, secrets, urls, endpoints, parameters)
     77 + return
     78 + }
     79 + 
     80 + var URLs []string
     81 + 
     82 + URLs = append(URLs, opt.url)
     83 + 
     84 + if fileutil.FileExists(opt.list) {
     85 + bin, err := os.ReadFile(opt.list)
     86 + if err != nil {
     87 + gologger.Error().Msgf("failed to read file %v got %v", opt.list, err)
     88 + }
     89 + URLs = strings.Fields(string(bin))
     90 + }
     91 + 
     92 + if fileutil.HasStdin() {
     93 + bin, err := io.ReadAll(os.Stdin)
     94 + if err != nil {
     95 + gologger.Error().Msgf("failed to read file %v got %v", opt.list, err)
     96 + }
     97 + 
     98 + URLs = strings.Fields(string(bin))
     99 + }
     100 + 
     101 + for _, url := range URLs {
     102 + 
     103 + Data, err := Request(url, opt.header, opt.verbose)
     104 + if err != nil {
     105 + gologger.Error().Msgf("%s [%s]\n\n", err, url)
     106 + continue
     107 + }
     108 + gologger.Info().Msgf("Processing %s\n\n", url)
     109 + 
     110 + secrets, urls, endpoints, parameters := Run(Data, url)
     111 + 
     112 + HandleResults(opt.endpoint, opt.parameter, opt.urls, opt.secret, opt.all, secrets, urls, endpoints, parameters)
     113 + }
     114 +}
     115 + 
     116 +func Run(Data []byte, Source string) ([]scanner.SecretMatched, []string, []string, []string) {
     117 + var sortedUrls []string
     118 + var sortedEndpoints []string
     119 + 
     120 + SecretMatchResult := scanner.SecretsMatch(Source, Data)
     121 + 
     122 + EndpointMatchResult := scanner.EndpointsMatch(Data)
     123 + 
     124 + for _, v := range EndpointMatchResult {
     125 + if len(v) >= 4 && v[:4] == "http" || len(v) >= 5 && v[:5] == "https" {
     126 + sortedUrls = append(sortedUrls, v)
     127 + continue
     128 + } else {
     129 + sortedEndpoints = append(sortedEndpoints, v)
     130 + }
     131 + }
     132 + 
     133 + ParameterMatchResults := scanner.ParameterMatch(string(Data))
     134 + 
     135 + return SecretMatchResult, sortedUrls, sortedEndpoints, sUtils.Dedupe(ParameterMatchResults)
     136 +}
     137 + 
     138 +func HandleResults(endpoint, parameter, url, secret, all bool, secrets []scanner.SecretMatched, urls, endpoints, parameters []string) {
     139 + if endpoint {
     140 + HandleEndpoint(endpoints)
     141 + } else if parameter {
     142 + HandleParameter(parameters)
     143 + } else if url {
     144 + HandleURL(urls)
     145 + } else if secret {
     146 + HandleSecret(secrets)
     147 + } else if all {
     148 + HandleSecret(secrets)
     149 + HandleURL(urls)
     150 + HandleEndpoint(endpoints)
     151 + HandleParameter(parameters)
     152 + } else {
     153 + HandleSecret(secrets)
     154 + }
     155 +}
     156 + 
     157 +func HandleSecret(secrets []scanner.SecretMatched) {
     158 + if len(secrets) > 0 {
     159 + gologger.Info().Msgf("Secrets")
     160 + for _, secret := range secrets {
     161 + fmt.Printf("Name: %s\nMatch: %s\n\n", secret.Secret.Name, secret.Match)
     162 + }
     163 + } else {
     164 + gologger.Info().Msgf("No results for Secrets\n\n")
     165 + }
     166 +}
     167 + 
     168 +func HandleEndpoint(endpoints []string) {
     169 + if len(endpoints) > 0 {
     170 + gologger.Info().Msgf("Endpoints")
     171 + for _, endpoint := range endpoints {
     172 + fmt.Println(endpoint)
     173 + }
     174 + fmt.Println("")
     175 + } else {
     176 + gologger.Info().Msgf("No results for Endpoints\n\n")
     177 + }
     178 +}
     179 + 
     180 +func HandleURL(urls []string) {
     181 + if len(urls) > 0 {
     182 + gologger.Info().Msgf("Urls")
     183 + for _, URL := range urls {
     184 + fmt.Println(URL)
     185 + }
     186 + fmt.Println("")
     187 + } else {
     188 + gologger.Info().Msgf("No results for URLs\n\n")
     189 + }
     190 +}
     191 + 
     192 +func HandleParameter(parameters []string) {
     193 + if len(parameters) > 0 {
     194 + gologger.Info().Msgf("Parameters")
     195 + for _, param := range parameters {
     196 + fmt.Println(param)
     197 + }
     198 + fmt.Println("")
     199 + } else {
     200 + gologger.Info().Msgf("No results for Parameters\n\n")
     201 + }
     202 +}
     203 + 
     204 +func ParseURL(url string) (*urlutil.URL, error) {
     205 + urlx, err := urlutil.ParseURL(url, true)
     206 + if err != nil {
     207 + gologger.Debug().Msgf("failed to parse url %v got %v", url, err)
     208 + }
     209 + return urlx, err
     210 +}
     211 + 
     212 +func Request(URL string, Header string, Verbose bool) ([]byte, error) {
     213 + 
     214 + u, _ := ParseURL(URL)
     215 + 
     216 + if u.Host == "" {
     217 + return nil, fmt.Errorf("%s", "Domain is not valid")
     218 + }
     219 + 
     220 + if u.Scheme == "" {
     221 + URL = "https://" + u.Host
     222 + }
     223 + 
     224 + client := resty.New().
     225 + SetTimeout(2*time.Second).
     226 + SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Firefox/120.0").
     227 + SetHeader("Accept", "*/*").
     228 + SetHeader("Origin", u.Scheme+"://"+u.Host).
     229 + SetTLSClientConfig(&tls.Config{InsecureSkipVerify: true}).
     230 + SetRedirectPolicy(resty.FlexibleRedirectPolicy(3))
     231 + 
     232 + if Header != "" {
     233 + headers := strings.Split(Header, ":")
     234 + if len(headers) == 2 {
     235 + client.SetHeader(headers[0], strings.TrimSpace(headers[1]))
     236 + } else {
     237 + gologger.Fatal().Msgf("Custom header is not valid. Example (\"X-header: Value\")")
     238 + }
     239 + }
     240 + 
     241 + if Verbose {
     242 + client.SetDebug(true)
     243 + }
     244 + 
     245 + resp, err := client.R().
     246 + Get(URL)
     247 + 
     248 + if err != nil {
     249 + return nil, err
     250 + }
     251 + 
     252 + return resp.Body(), nil
     253 +}
     254 + 
     255 +func PrintUsage() {
     256 + gologger.Print().Msgf("Input Flags:\n")
     257 + gologger.Print().Msgf("\t-url, -u URL for scanning")
     258 + gologger.Print().Msgf("\t-list, -l List of URLs for scanning")
     259 + gologger.Print().Msgf("\t-file, -f Local file data for scanning")
     260 + gologger.Print().Msgf("\tOr list of urls from stdin")
     261 +}
     262 + 
Please wait...
Page is in error, reload to recover