Geocaching.com hack, 10-04-2017, 18:27
Voor wie er mee wil spelen en er verstand van heeft:
Citaat:Ever wished you could find premium geocaches on a free account? When on a "Premium Members Only" page of geocaching.com , this script will give you coordinates in the form of longitude and latitude which can then be typed into your GPS. Have fun cache finding. Under certain scenarios, it can also display the last ten caching logs, so you can find out if the person before you DNF'd it if you aren't brave enough to try a DNF'd cache. Although, you still won't be able to log the cache online, only offline, so you won't gain any points for using this script. If you're just geocaching for fun and want to stay a free member, this script is perfect for you.
Citaat:// ==UserScript==
// @name Geocaching Free Premium
// @author Tommy Smith
// @description Find the coordinates of a Premium Geocache from geocaching.com . May only be temporary. Not intended for use with GC Little Helper.
// @version 2.5
// @include http*://geocaching.com/geocache/*
// @include http*://*.geocaching.com/geocache/*
// @include http*://geocaching.com/seek/*
// @include http*://*.geocaching.com/seek/*
// @namespace https://greasyfork.org/users/2469
// ==/UserScript==
// Geocache info page
if ((window.location.pathname.indexOf("/geocache/") == -1 && window.location.pathname.indexOf("/seek/cache_details.aspx") == -1 && window.location.pathname.indexOf("/seek/cache_pmo.aspx") == -1) || !document.getElementsByClassName("PMBannerWrapper")[0]) {
} else {
if (!document.getElementsByClassName("SignedInProfileLink")[0]) {
document.getElementsByClassName("PMBannerWrapper")[0].innerHTML = "Geocaching Free Premium
by Tommy Smith
Uh oh! You need to be logged in on a free account in order for this script to work.";
document.getElementById("ctl00_ContentBody_memberComparePanel").style.display = "none";
} else {
// we need to find out the guid for the Geocache here. There may be multiple ways of doing this but I only know of one.
// I'm going to exploit the "Log Find"'s vulnerability in this case. If that is fixed, then cross your fingers I find a different way!
console.log("Phase one initiated...");
var iframe = document.createElement('iframe');
if (window.location.search.indexOf("wp=") != -1) {
iframe.src = "http://geocaching.com/seek/log.aspx?wp="+window.location.search.substring(0, window.location.search.indexOf("wp=")-2)+"#fpfpfpfpfp";
} else {
iframe.src = "http://geocaching.com/seek/log.aspx?wp="+window.location.pathname.split("/")[window.location.pathname.split("/").length-1].substring(0, window.location.pathname.split("/")[window.location.pathname.split("/").length-1].indexOf("_"))+"#fpfpfpfpfp";
}
iframe.id = "fpfpfpfpfp1";
iframe.width = 0;
iframe.height = 1;
iframe.frameborder = 0;
iframe.scrolling = "no";
document.getElementsByTagName('body')[0].appendChild(iframe);
console.log("Phase one complete!");
}
}
// log find page
if (window.location.pathname.indexOf("/seek/log.aspx") != -1 && window.location.hash.indexOf("fpfpfpfpfp") != -1) {
if (!document.getElementById("ctl00_ContentBody_LogBookPanel1_WaypointLink")) {
console.log("Phase two failed. The guid finder has been patched by geocaching.com . This script is now outdated (either that or it just is not working, sorry)");
} else {
// assumes guid is constant length of 36
console.log("Phase two initiated...");
var iframe = document.createElement('iframe');
iframe.src = "http://geocaching.com/seek/sendtogps.aspx?fpfpfpfpfp&guid="+document.getElementById("ctl00_ContentBody_LogBookPanel1_WaypointLink").href.substring(document.getElementById("ctl00_ContentBody_LogBookPanel1_WaypointLink").href.length-36);
iframe.id = "fpfpfpfpfp2";
iframe.width = 0;
iframe.height = 1;
iframe.frameborder = 0;
iframe.scrolling = "no";
document.getElementsByTagName('body')[0].appendChild(iframe);
console.log("Phase two complete!");
}
}
// Send to GPS Page
if (window.location.pathname.indexOf("/seek/sendtogps.aspx") != -1 && window.location.search.indexOf("fpfpfpfpfp") != -1) {
console.log("Phase three initiated...");
var dataarray = new Array("0", "0");
var output = "Geocaching Free Premium
by Tommy Smith
";
- Either the free premium script is still loading or an error has occured in phase three.
- What's that you say? There is nothing loading??
- This can\'t be good.
window.parent.parent.document.getElementsByClassName("PMBannerWrapper")[0].innerHTML = output;
// I hate typeof, but I guess it is my only option since Firefox is being stupid
if (typeof PN_GetGeocaches == "undefined") {
if (!document.getElementById("dataString")) {
if (!document.getElementById("falkDataString")) {
if (!document.getElementById("hiddenText")) {
console.log("user is using a Rand McNally device");
dataarray[0] = "" + / ";(GC.+?)<\/name>/.exec(document.getElementById("forisDataString").value)[1] + "
dataarray[1] = "" + / ";
dataarray[2] = ""; Geocache Description:
" + /hort_description.+?>([\s\S]*?)<\/groundspeakhort_description/.exec(document.getElementById("forisDataString").value)[1] + "
} else {
console.log("user is using Magellan device");
dataarray[0] = "" + / ";(GC.+?)<\/name>/.exec(document.getElementById("hiddenText").value)[1] + "
dataarray[1] = "" + / ";
dataarray[2] = ""; Geocache Description:
" + /hort_description.+?>([\s\S]*?)<\/groundspeakhort_description/.exec(document.getElementById("hiddenText").value)[1] + "
}
} else {
console.log("user is using a Falk device");
dataarray[0] = "" + / ";(GC.+?)<\/name>/.exec(document.getElementById("falkDataString").value)[1] + "
dataarray[1] = "" + / ";
dataarray[2] = ""; Geocache Description:
" + /hort_description.+?>([\s\S]*?)<\/groundspeakhort_description/.exec(document.getElementById("falkDataString").value)[1] + "
}
} else {
console.log("user is using Garmin device");
dataarray[0] = "" + / ";(GC.+?)<\/name>/.exec(document.getElementById("dataString").value)[1] + "
dataarray[1] = "" + / ";
dataarray[2] = ""; Geocache Description:
" + /hort_description.+?>([\s\S]*?)<\/groundspeakhort_description/.exec(document.getElementById("dataString").value)[1] + "
}
} else {
console.log("user is using DeLorme Device");
dataarray[0] = "" + PN_GetGeocaches()[0].id + " ";
dataarray[1] = "" + PN_GetGeocaches()[0].latitude + " " + PN_GetGeocaches()[0].longitude + " ";
dataarray[2] = ""; Geocache Description:
" + PN_GetGeocaches()[0].shortdesc + "
for(i=0;idataarray[(i+3)] = " "; " + PN_GetGeocaches()[0].logs[i].type + "" + PN_GetGeocaches()[0].logs[i].date + "" + PN_GetGeocaches()[0].logs[i].notes + "
}
}
output = "Free Premium Geocaching
by Tommy Smith
";
";
for(i=0;i<3;i++){
output += dataarray[i];
}
output += "
if (dataarray.length > 3) {
output += "";
";
for(i=3;ioutput += " " + dataarray[i] + " ";
}
output += "
}
output += "Free Premium Geocaching notes
-Tommy";
- Previous logs are available to DeLorme device users only at the moment. Hints and long descriptions are impossible to crack, I'm afraid.
- Note that the coordinates are in decimal format, when normally on the site they are in Degrees Minutes format. You can convert to Degrees Minutes using a tool such as EarthPoint.
- If nothing happens, do try refreshing the page.
window.parent.parent.document.getElementsByClassName("PMBannerWrapper")[0].innerHTML = output;
window.parent.parent.document.getElementsByClassName("PMBannerWrapper")[0].style.borderStyle = "none";
window.parent.parent.document.getElementById("ctl00_ContentBody_memberComparePanel").style.display = "none";
window.parent.document.getElementById("fpfpfpfpfp2").style.display = "none";
window.parent.parent.document.getElementById("fpfpfpfpfp1").style.display = "none";
window.parent.parent.document.getElementById("fpfpfpfpfp1").src = "about:blank";
console.log("Phase three complete!");
}
---------------------------------------------------------------------------------------------------To hide is the beginning, to solve is the challenge, to seek is the adventure.