@@ -1948,11 +1948,11 @@ retry:
19481948 builder .WriteRune (']' )
19491949 }
19501950
1951- var faviconMMH3 , faviconPath , faviconURL string
1951+ var faviconMMH3 , faviconMD5 , faviconPath , faviconURL string
19521952 var faviconData []byte
19531953 if scanopts .Favicon {
19541954 var err error
1955- faviconMMH3 , faviconPath , faviconData , faviconURL , err = r .HandleFaviconHash (hp , req , resp .Data , true )
1955+ faviconMMH3 , faviconMD5 , faviconPath , faviconData , faviconURL , err = r .HandleFaviconHash (hp , req , resp .Data , true )
19561956 if err == nil {
19571957 builder .WriteString (" [" )
19581958 if ! scanopts .OutputWithNoColor {
@@ -2199,6 +2199,7 @@ retry:
21992199 Technologies : technologies ,
22002200 FinalURL : finalURL ,
22012201 FavIconMMH3 : faviconMMH3 ,
2202+ FavIconMD5 : faviconMD5 ,
22022203 FaviconPath : faviconPath ,
22032204 FaviconURL : faviconURL ,
22042205 Hashes : hashesMap ,
@@ -2257,24 +2258,24 @@ func calculatePerceptionHash(screenshotBytes []byte) (uint64, error) {
22572258 return pHash .GetHash (), nil
22582259}
22592260
2260- func (r * Runner ) HandleFaviconHash (hp * httpx.HTTPX , req * retryablehttp.Request , currentResp []byte , defaultProbe bool ) (string , string , []byte , string , error ) {
2261+ func (r * Runner ) HandleFaviconHash (hp * httpx.HTTPX , req * retryablehttp.Request , currentResp []byte , defaultProbe bool ) (string , string , string , []byte , string , error ) {
22612262 // Check if current URI is ending with .ico => use current body without additional requests
22622263 if path .Ext (req .URL .Path ) == ".ico" {
2263- hash , err := r .calculateFaviconHashWithRaw (currentResp )
2264- return hash , req .URL .Path , currentResp , "" , err
2264+ MMH3Hash , MD5Hash , err := r .calculateFaviconHashWithRaw (currentResp )
2265+ return MMH3Hash , MD5Hash , req .URL .Path , currentResp , "" , err
22652266 }
22662267
22672268 // search in the response of the requested path for element and rel shortcut/mask/apple-touch icon
22682269 // link with .ico extension (which will be prioritized if available)
22692270 // if not, any of link from other icons can be requested
22702271 potentialURLs , err := extractPotentialFavIconsURLs (currentResp )
22712272 if err != nil {
2272- return "" , "" , nil , "" , err
2273+ return "" , "" , "" , nil , "" , err
22732274 }
22742275
22752276 clone := req .Clone (context .Background ())
22762277
2277- var faviconHash , faviconPath , faviconURL string
2278+ var faviconMMH3 , faviconMD5 , faviconPath , faviconURL string
22782279 var faviconData []byte
22792280 errCount := 0
22802281 if len (potentialURLs ) == 0 && defaultProbe {
@@ -2309,25 +2310,26 @@ func (r *Runner) HandleFaviconHash(hp *httpx.HTTPX, req *retryablehttp.Request,
23092310 errCount ++
23102311 continue
23112312 }
2312- hash , err := r .calculateFaviconHashWithRaw (resp .Data )
2313+ MMH3Hash , MD5Hash , err := r .calculateFaviconHashWithRaw (resp .Data )
23132314 if err != nil {
23142315 continue
23152316 }
23162317 faviconURL = clone .URL .String ()
23172318 faviconPath = potentialURL
2318- faviconHash = hash
2319+ faviconMMH3 = MMH3Hash
2320+ faviconMD5 = MD5Hash
23192321 faviconData = resp .Data
23202322 break
23212323 }
2322- return faviconHash , faviconPath , faviconData , faviconURL , nil
2324+ return faviconMMH3 , faviconMD5 , faviconPath , faviconData , faviconURL , nil
23232325}
23242326
2325- func (r * Runner ) calculateFaviconHashWithRaw (data []byte ) (string , error ) {
2326- hashNum , err := stringz .FaviconHash (data )
2327+ func (r * Runner ) calculateFaviconHashWithRaw (data []byte ) (string , string , error ) {
2328+ hashNum , md5Hash , err := stringz .FaviconHash (data )
23272329 if err != nil {
2328- return "" , errorutil .NewWithTag ("favicon" , "could not calculate favicon hash" ).Wrap (err )
2330+ return "" , "" , errorutil .NewWithTag ("favicon" , "could not calculate favicon hash" ).Wrap (err )
23292331 }
2330- return fmt .Sprintf ("%d" , hashNum ), nil
2332+ return fmt .Sprintf ("%d" , hashNum ), md5Hash , nil
23312333}
23322334
23332335func extractPotentialFavIconsURLs (resp []byte ) ([]string , error ) {
0 commit comments