import java.io.*; import java.util.*; import java.net.*; import java.applet.*; import java.util.regex.Matcher; import java.util.regex.Pattern; public class getGPSLocation extends Applet{ //public class getGPSLocation{ //public static void main(String[] args) { public void init(){ String result = null; if (isWindows()) { System.out.println("\nThis is Windows Machine"); result=getWindows(); } else if (isMac()) { System.out.println("\nThis is Mac Machine"); result=getMac(); } else { System.out.println("\nYour OS is not support!!"); } //System.out.println(result); } public static String getWindows(){ String result = null; try { ArrayList ssidList = new ArrayList(); ArrayList bssidList = new ArrayList(); ArrayList rssiList = new ArrayList(); Process p = Runtime.getRuntime().exec("netsh wlan show networks mode=bssid"); BufferedReader in = new BufferedReader( new InputStreamReader(p.getInputStream())); String line = null; String signal = null; String ssidStr = null; while ((line = in.readLine()) != null) { Pattern p1 = Pattern.compile("(SSID\\s\\d+\\s:)\\s([\\w\\s]*)"); Matcher m1 = p1.matcher(line); if(m1.find()){ ssidStr = m1.group(2); ssidStr = ssidStr.replaceAll(" ","%20"); ssidList.add(ssidStr); } Pattern p2 = Pattern.compile("(BSSID\\s1\\s*:)\\s((.?)*)"); Matcher m2 = p2.matcher(line); if(m2.find()){ bssidList.add(m2.group(2)); } Pattern p3 = Pattern.compile("(Signal\\s*):\\s((.?)*)"); Matcher m3 = p3.matcher(line); if(m3.find()){ signal = m3.group(2); signal = signal.replaceAll("%",""); signal = signal.replaceAll(" ",""); signal = "-"+signal; rssiList.add(signal); } } int arraySize=ssidList.size(); if(arraySize==0){ result="I don't know where the target is"; } else{ result=googleLookup(bssidList,ssidList,rssiList); } } catch (IOException e) { e.printStackTrace(); } return result; } public static String googleLookup(ArrayList bssidList,ArrayList ssidList,ArrayList rssiList){ String result = null; try { int j=0; String queryString = "https://maps.googleapis.com/maps/api/browserlocation/json?browser=firefox&sensor=true"; while(j0){ result+="Location is not accurate\n"; System.out.println("Location is not accurate"); } else{ if(output.indexOf("lat")>0){ output = output.replace("\"lat\" : ",""); output = output.replaceAll("^\\s+", ""); geoCoordinates = output; result+="Latitude: "; result+=output; System.out.println("Latitude: "+output); } if(output.indexOf("lng")>0){ output = output.replace("\"lng\" : ",""); output = output.replaceAll("^\\s+", ""); geoCoordinates += output; result+="Longitude: "; result+=output; System.out.println("Longitude: "+output); } } } //Reverse geocoordinates to street address String reverseGeo = "https://maps.googleapis.com/maps/geo?q="+geoCoordinates+"&output=json&sensor=true_or_false"; System.out.println(reverseGeo); URL url1 = new URL(reverseGeo); URLConnection urlc1 = url1.openConnection(); urlc1.setRequestProperty("User-Agent", "Mozilla 5.0 (Windows; U; "+ "Windows NT 5.1; en-US; rv:1.8.0.11) "); BufferedReader reader1 = new BufferedReader(new InputStreamReader(urlc1.getInputStream())); for (String output1; (output1 = reader1.readLine()) != null;) { if(output1.indexOf("address")>0){ output1 = output1.replace("\"address\": ",""); output1 = output1.replace("\",",""); output1 = output1.replace("\"",""); output1 = output1.replaceAll("^\\s+", ""); result+="Address is "; result+=output1; System.out.println("Address is "+output1); } } String mapAddress = "http://maps.google.com/maps?q="+geoCoordinates+"+%28You+are+located+here%29&iwloc=A&hl=en"; result+="\n"+mapAddress; System.out.println("\n"+mapAddress); } catch (IOException e) { e.printStackTrace(); } return result; } public static String getMac(){ String result = null; try { Process p = Runtime.getRuntime().exec("/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s"); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = null; String ssidStr = null; String signal = null; String queryString = "https://maps.googleapis.com/maps/api/browserlocation/json?browser=firefox&sensor=true"; ArrayList ssidList = new ArrayList(); ArrayList bssidList = new ArrayList(); ArrayList rssiList = new ArrayList(); line = in.readLine(); while ((line = in.readLine()) != null) { line = line.replaceAll("^\\s+", ""); //Pattern p1 = Pattern.compile("((.?)*\\s\\w*):(\\w*:\\w*:\\w*:\\w*:\\w*)\\s((.?)*)\\s(\\d+)"); Pattern p1 = Pattern.compile("((.?)+)\\s(..:..:..:..:..:..)\\s(-\\d*)"); Matcher m1 = p1.matcher(line); if(m1.find()){ ssidStr = m1.group(1); ssidStr = ssidStr.replaceAll(" ","%20"); ssidList.add(ssidStr); //System.out.println("ssid: "+ssidStr); bssidList.add(m1.group(3)); //System.out.println("bssid: "+m1.group(3)); signal = m1.group(4); signal = signal.replaceAll(" ",""); //System.out.println("signal: "+signal); rssiList.add(signal); } } int arraySize=ssidList.size(); if(arraySize==0){ result="I don't know where the target is"; System.out.println("I don't know where the target is"); } else{ result=googleLookup(bssidList,ssidList,rssiList); } } catch (IOException e) { e.printStackTrace(); } return result; } public static boolean isWindows() { String os = System.getProperty("os.name").toLowerCase(); // windows return (os.indexOf("win") >= 0); } public static boolean isMac() { String os = System.getProperty("os.name").toLowerCase(); // Mac return (os.indexOf("mac") >= 0); } public static boolean isLinux() { String os = System.getProperty("os.name").toLowerCase(); // linux or unix return (os.indexOf("nix") >= 0 || os.indexOf("nux") >= 0); } }