/* Android IMSI-Catcher Detector | (c) AIMSICD Privacy Project
* -----------------------------------------------------------
* LICENSE: http://git.io/vki47 | TERMS: http://git.io/vki4o
* -----------------------------------------------------------
*/
package com.secupwn.aimsicd.utils;
import android.os.AsyncTask;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class LocationServices {
private static void writeData(OutputStream out, int cid, int lac, int mnc, int mcc)
throws IOException {
DataOutputStream dataOutputStream = new DataOutputStream(out);
dataOutputStream.writeShort(0x0E); // Fct code
dataOutputStream.writeInt(0); // requesting 8 byte session
dataOutputStream.writeInt(0);
dataOutputStream.writeShort(0); // country code string
dataOutputStream.writeShort(0); // client descriptor string
dataOutputStream.writeShort(0); // version tag string
dataOutputStream.writeByte(0x1B); // Fct code
dataOutputStream.writeInt(0); // MNC?
dataOutputStream.writeInt(0); // MCC?
dataOutputStream.writeInt(3); // RAT = Radio Access Type (3=GSM, 5=UMTS)
dataOutputStream.writeShort(0); // length of provider name
// provider name string
dataOutputStream.writeInt(cid); // CID
dataOutputStream.writeInt(lac); // LAC
dataOutputStream.writeInt(mnc); // MNC
dataOutputStream.writeInt(mcc); // MCC
dataOutputStream.writeInt(-1); // always -1
dataOutputStream.writeInt(0); // rx level
dataOutputStream.flush();
}
public static class LocationAsync extends AsyncTask<Integer, Void, float[]> {
public AsyncResponse delegate = null;
@Override
protected float[] doInBackground(Integer... params) {
/*try {
String mmapUrl = "http://www.google.com/glm/mmap";
URL url = new URL(mmapUrl);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setDoOutput(true);
httpConn.connect();
OutputStream outputStream = httpConn.getOutputStream();
writeData(outputStream,
params[0], //CID
params[1], //LAC
params[2], //MNC
params[3]); //MCC
InputStream inputStream = httpConn.getInputStream();
DataInputStream dataInputStream = new DataInputStream(inputStream);
dataInputStream.readShort();
dataInputStream.readByte();
int code = dataInputStream.readInt();
if (code == 0) {
float latitude = dataInputStream.readInt() / 1000000f;
float longitude = dataInputStream.readInt() / 1000000f;
return new float[] {latitude, longitude};
}
} catch (IOException e) {
e.printStackTrace();
}*/
return new float[] {0.0f, 0.0f};
}
@Override
protected void onPostExecute(float[] floats) {
delegate.processFinish(floats);
}
}
}