package datastructures; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Base64; public class Fingerprint { private String sampleSetID; private String allHeaders; private Integer contrastLevel; private String user_agent; private String accept_headers; private String platform; private String platformFlash; private String pluginDetails; private String timeZone; private String screenDetails; private String screenDetailsFlash; private String screenDetailsCSS; private String languageFlash; private String fonts; private String fontsJS_CSS; private String fontsCSS; private String charSizes; private boolean cookiesEnabled; private Boolean superCookieLocalStorage; private Boolean superCookieSessionStorage; private Boolean superCookieUserData; private Boolean hstsEnabled; private Boolean indexedDBEnabled; private String doNotTrack; private Long clockDifference; private String dateTime; private String mathTan; private boolean usingTor; private String tbbVersion; private String ipAddress; private Boolean adsBlockedGoogle; private Boolean adsBlockedBanner; private Boolean adsBlockedScript; private Integer likeShareFacebook; private Integer likeShareTwitter; private Integer likeShareReddit; private String canvas; private String webGLVendor; private String webGLRenderer; private Integer touchPoints; private Boolean touchEvent; private Boolean touchStart; private String audioFingerprintPXI; private String audioFingerprintPXIFullBuffer; private String audioFingerprintNtVc; private String audioFingerprintCC; private String audioFingerprintHybrid; public Fingerprint() { sampleSetID = null; allHeaders = null; contrastLevel = null; user_agent = null; accept_headers = null; platform = null; platformFlash = null; pluginDetails = null; timeZone = null; screenDetails = null; screenDetailsFlash = null; screenDetailsCSS = null; languageFlash = null; fonts = null; fontsJS_CSS = null; fontsCSS = null; charSizes = null; cookiesEnabled = false; superCookieLocalStorage = null; superCookieSessionStorage = null; superCookieUserData = null; hstsEnabled = null; indexedDBEnabled = null; doNotTrack = null; clockDifference = null; dateTime = null; mathTan = null; usingTor = false; tbbVersion = null; ipAddress = null; adsBlockedGoogle = null; adsBlockedBanner = null; adsBlockedScript = null; likeShareFacebook = null; likeShareTwitter = null; likeShareReddit = null; canvas = null; webGLVendor = null; webGLRenderer = null; touchPoints = null; touchEvent = null; touchStart = null; audioFingerprintPXI = null; audioFingerprintPXIFullBuffer = null; audioFingerprintNtVc = null; audioFingerprintCC = null; audioFingerprintHybrid = null; } /** * Get the hash of this fingerprint. * @return * @throws NoSuchAlgorithmException */ public String getFingerprintHash() throws NoSuchAlgorithmException{ MessageDigest digest = MessageDigest.getInstance("SHA-1"); digest.reset(); if(this.getContrastLevel() != null){ digest.update(this.getContrastLevel().byteValue()); } if(this.getUser_agent() != null){ digest.update(this.getUser_agent().getBytes()); } if(this.getAccept_headers() != null){ digest.update(this.getAccept_headers().getBytes()); } if(this.getPlatform() != null){ digest.update(this.getPlatform().getBytes()); } if(this.getPlatformFlash() != null){ digest.update(this.getPlatformFlash().getBytes()); } if(this.getPluginDetails() != null){ digest.update(this.getPluginDetails().getBytes()); } if(this.getTimeZone() != null){ digest.update(this.getTimeZone().getBytes()); } /*if(this.getScreenDetails() != null){ digest.update(this.getScreenDetails().getBytes()); }*/ if(this.getScreenDetailsFlash() != null){ digest.update(this.getScreenDetailsFlash().getBytes()); } /*if(this.getScreenDetailsCSS() != null){ digest.update(this.getScreenDetailsCSS().getBytes()); }*/ if(this.getLanguageFlash() != null){ digest.update(this.getLanguageFlash().getBytes()); } if(this.getFonts() != null){ digest.update(this.getFonts().getBytes()); } if(this.getFontsJS_CSS() != null){ digest.update(this.getFontsJS_CSS().getBytes()); } if(this.getFontsCSS() != null){ digest.update(this.getFontsCSS().getBytes()); } /*if(this.getCharSizes() != null){ digest.update(this.getCharSizes().getBytes()); }*/ digest.update(Boolean.toString(this.isCookiesEnabled()).getBytes()); if(this.getSuperCookieLocalStorage() != null){ digest.update(Boolean.toString(this.getSuperCookieLocalStorage()).getBytes()); } if(this.getSuperCookieSessionStorage() != null){ digest.update(Boolean.toString(this.getSuperCookieSessionStorage()).getBytes()); } if(this.getSuperCookieUserData() != null){ digest.update(Boolean.toString(this.getSuperCookieUserData()).getBytes()); } if(this.getIndexedDBEnabled() != null){ digest.update(Boolean.toString(this.getIndexedDBEnabled()).getBytes()); } if(this.getHstsEnabled() != null){ digest.update(Boolean.toString(this.getHstsEnabled()).getBytes()); } if(this.getDoNotTrack() != null){ digest.update(this.getDoNotTrack().getBytes()); } if(this.getClockDifference() != null){ digest.update(Long.toString(this.getClockDifference()).getBytes()); } if(this.getDateTime() != null){ digest.update(this.getDateTime().getBytes()); } if(this.getMathTan() != null){ digest.update(this.getMathTan().getBytes()); } digest.update(Boolean.toString(this.isUsingTor()).getBytes()); if(this.getTbbVersion() != null){ digest.update(this.getTbbVersion().getBytes()); } if(this.getAdsBlockedGoogle() != null){ digest.update(Boolean.toString(this.getAdsBlockedGoogle()).getBytes()); } if(this.getAdsBlockedBanner() != null){ digest.update(Boolean.toString(this.getAdsBlockedBanner()).getBytes()); } if(this.getAdsBlockedScript() != null){ digest.update(Boolean.toString(this.getAdsBlockedScript()).getBytes()); } if(this.getLikeShareFacebook() != null){ digest.update(Integer.toString(this.getLikeShareFacebook()).getBytes()); } if(this.getLikeShareTwitter() != null){ digest.update(Integer.toString(this.getLikeShareTwitter()).getBytes()); } if(this.getLikeShareReddit() != null){ digest.update(Integer.toString(this.getLikeShareReddit()).getBytes()); } /*if(this.getCanvas() != null){ digest.update(this.getCanvas().getBytes()); }*/ if(this.getWebGLVendor() != null){ digest.update(this.getWebGLVendor().getBytes()); } if(this.getWebGLRenderer() != null){ digest.update(this.getWebGLRenderer().getBytes()); } if(this.getTouchPoints() != null){ digest.update(Integer.toString(this.getTouchPoints()).getBytes()); } if(this.getTouchEvent() != null){ digest.update(Boolean.toString(this.getTouchEvent()).getBytes()); } if(this.getTouchStart() != null){ digest.update(Boolean.toString(this.getTouchStart()).getBytes()); } /*if(this.getAudioFingerprintPXI() != null){ digest.update(this.getAudioFingerprintPXI().getBytes()); }*/ /*if(this.getAudioFingerprintPXIFullBuffer() != null){ digest.update(this.getAudioFingerprintPXIFullBuffer().getBytes()); }*/ /*if(this.getAudioFingerprintNtVc() != null){ digest.update(this.getAudioFingerprintNtVc().getBytes()); }*/ /*if(this.getAudioFingerprintCC() != null){ digest.update(this.getAudioFingerprintCC().getBytes()); }*/ /*if(this.getAudioFingerprintHybrid() != null){ digest.update(this.getAudioFingerprintHybrid().getBytes()); }*/ return Base64.getEncoder().encodeToString(digest.digest()); } public String getSampleSetID() { return sampleSetID; } public void setSampleSetID(String sampleSetID) { this.sampleSetID = sampleSetID; } public String getAllHeaders() { return allHeaders; } public void setAllHeaders(String allHeaders) { this.allHeaders = allHeaders; } public Integer getContrastLevel() { return contrastLevel; } public void setContrastLevel(Integer contrastLevel) { this.contrastLevel = contrastLevel; } public String getUser_agent() { return user_agent; } public void setUser_agent(String user_agent) { this.user_agent = user_agent; } public String getAccept_headers() { return accept_headers; } public void setAccept_headers(String accept_headers) { this.accept_headers = accept_headers; } public String getPlatform() { return platform; } public void setPlatform(String platform) { this.platform = platform; } public String getPlatformFlash() { return platformFlash; } public void setPlatformFlash(String platformFlash) { this.platformFlash = platformFlash; } public String getPluginDetails() { return pluginDetails; } public void setPluginDetails(String pluginDetails) { this.pluginDetails = pluginDetails; } public String getTimeZone() { return timeZone; } public void setTimeZone(String timeZone) { this.timeZone = timeZone; } public String getScreenDetails() { return screenDetails; } public void setScreenDetails(String screenDetails) { this.screenDetails = screenDetails; } public String getScreenDetailsFlash() { return screenDetailsFlash; } public void setScreenDetailsFlash(String screenDetailsFlash) { this.screenDetailsFlash = screenDetailsFlash; } public String getScreenDetailsCSS() { return screenDetailsCSS; } public void setScreenDetailsCSS(String screenDetailsCSS) { this.screenDetailsCSS = screenDetailsCSS; } public String getLanguageFlash() { return languageFlash; } public void setLanguageFlash(String languageFlash) { this.languageFlash = languageFlash; } public String getFonts() { return fonts; } public void setFonts(String fonts) { this.fonts = fonts; } public String getFontsJS_CSS() { return fontsJS_CSS; } public void setFontsJS_CSS(String fontsJS_CSS) { this.fontsJS_CSS = fontsJS_CSS; } public String getFontsCSS() { return fontsCSS; } public void setFontsCSS(String fontsCSS) { this.fontsCSS = fontsCSS; } public String getCharSizes() { return charSizes; } public void setCharSizes(String charSizes) { this.charSizes = charSizes; } public boolean isCookiesEnabled() { return cookiesEnabled; } public void setCookiesEnabled(boolean cookiesEnabled) { this.cookiesEnabled = cookiesEnabled; } public Boolean getSuperCookieLocalStorage() { return superCookieLocalStorage; } public void setSuperCookieLocalStorage(Boolean superCookieLocalStorage) { this.superCookieLocalStorage = superCookieLocalStorage; } public Boolean getSuperCookieSessionStorage() { return superCookieSessionStorage; } public void setSuperCookieSessionStorage(Boolean superCookieSessionStorage) { this.superCookieSessionStorage = superCookieSessionStorage; } public Boolean getSuperCookieUserData() { return superCookieUserData; } public void setSuperCookieUserData(Boolean superCookieUserData) { this.superCookieUserData = superCookieUserData; } public Boolean getHstsEnabled() { return hstsEnabled; } public void setHstsEnabled(Boolean hstsEnabled) { this.hstsEnabled = hstsEnabled; } public Boolean getIndexedDBEnabled() { return indexedDBEnabled; } public void setIndexedDBEnabled(Boolean indexedDBEnabled) { this.indexedDBEnabled = indexedDBEnabled; } public String getDoNotTrack() { return doNotTrack; } public void setDoNotTrack(String doNotTrack) { this.doNotTrack = doNotTrack; } public Long getClockDifference() { return clockDifference; } public void setClockDifference(Long clockDifference) { this.clockDifference = clockDifference; } public String getDateTime() { return dateTime; } public void setDateTime(String dateTime) { this.dateTime = dateTime; } public String getMathTan() { return mathTan; } public void setMathTan(String mathTan) { this.mathTan = mathTan; } public boolean isUsingTor() { return usingTor; } public void setUsingTor(boolean usingTor) { this.usingTor = usingTor; } public String getTbbVersion() { return tbbVersion; } public void setTbbVersion(String tbbVersion) { this.tbbVersion = tbbVersion; } public String getIpAddress() { return ipAddress; } public void setIpAddress(String ipAddress) { this.ipAddress = ipAddress; } public Boolean getAdsBlockedGoogle() { return adsBlockedGoogle; } public void setAdsBlockedGoogle(Boolean adsBlockedGoogle) { this.adsBlockedGoogle = adsBlockedGoogle; } public Boolean getAdsBlockedBanner() { return adsBlockedBanner; } public void setAdsBlockedBanner(Boolean adsBlockedBanner) { this.adsBlockedBanner = adsBlockedBanner; } public Boolean getAdsBlockedScript() { return adsBlockedScript; } public void setAdsBlockedScript(Boolean adsBlockedScript) { this.adsBlockedScript = adsBlockedScript; } public Integer getLikeShareFacebook() { return likeShareFacebook; } public void setLikeShareFacebook(Integer likeShareFacebook) { this.likeShareFacebook = likeShareFacebook; } public Integer getLikeShareTwitter() { return likeShareTwitter; } public void setLikeShareTwitter(Integer likeShareTwitter) { this.likeShareTwitter = likeShareTwitter; } public Integer getLikeShareReddit() { return likeShareReddit; } public void setLikeShareReddit(Integer likeShareReddit) { this.likeShareReddit = likeShareReddit; } public String getCanvas() { return canvas; } public void setCanvas(String canvas) { this.canvas = canvas; } public String getWebGLVendor() { return webGLVendor; } public void setWebGLVendor(String webGLVendor) { this.webGLVendor = webGLVendor; } public String getWebGLRenderer() { return webGLRenderer; } public void setWebGLRenderer(String webGLRenderer) { this.webGLRenderer = webGLRenderer; } public Integer getTouchPoints() { return touchPoints; } public void setTouchPoints(Integer touchPoints) { this.touchPoints = touchPoints; } public Boolean getTouchEvent() { return touchEvent; } public void setTouchEvent(Boolean touchEvent) { this.touchEvent = touchEvent; } public Boolean getTouchStart() { return touchStart; } public void setTouchStart(Boolean touchStart) { this.touchStart = touchStart; } public String getAudioFingerprintPXI() { return audioFingerprintPXI; } public void setAudioFingerprintPXI(String audioFingerprintPXI) { this.audioFingerprintPXI = audioFingerprintPXI; } public String getAudioFingerprintPXIFullBuffer() { return audioFingerprintPXIFullBuffer; } public void setAudioFingerprintPXIFullBuffer(String audioFingerprintPXIFullBuffer) { this.audioFingerprintPXIFullBuffer = audioFingerprintPXIFullBuffer; } public String getAudioFingerprintNtVc() { return audioFingerprintNtVc; } public void setAudioFingerprintNtVc(String audioFingerprintNtVc) { this.audioFingerprintNtVc = audioFingerprintNtVc; } public String getAudioFingerprintCC() { return audioFingerprintCC; } public void setAudioFingerprintCC(String audioFingerprintCC) { this.audioFingerprintCC = audioFingerprintCC; } public String getAudioFingerprintHybrid() { return audioFingerprintHybrid; } public void setAudioFingerprintHybrid(String audioFingerprintHybrid) { this.audioFingerprintHybrid = audioFingerprintHybrid; } }