GithubHelp home page GithubHelp logo

gps-simulator's Introduction

GPS-Simulator

GPS-Simulator is Windows app which allows you to spoofing a location on iOS device.

This app using imobiledevice-net library and bingfor spoofing a location on device.

Preview

Features

  • Spoofing iOS device location without jailbrake or app install.
  • Easy to set device location from the map, just by double clicking the map
  • Supported GPX track auto walking with 3 different speed.

Preview

How to Build

Requirements

Build the app

  1. Open the GPS-Simulator.sln from VisualStudio
  2. Install latest version of imobiledevice-net as a NuGet package

PM> Install-Package imobiledevice-net

  1. add reference of Bin Maps WPF control

In the Add Reference dialog box, click the Browse tab.

Browse to the location of the Bing Maps WPF Control installation. Typically, the control is installed in the Program Files or Program Files (x86) folders on the drive that contains your operating system. Open the Libraries folder, select the Microsoft.Maps.MapControl.WPF.dll file and then click OK.

  1. Click the build

Usage

  • Start spoofing

    1. Connect the iOS device to your computer. (Ensure your device is privisoned correctly)
    2. Install Traditional win32 version iTunes. (NOT the version from Windows Store)
    3. Double click on the map to your desired location.
  • Auto walking

    1. Load a GPX track file
    2. Set the walking speed (fast walking / running / driving)
    3. Click start

    Note: it will auto repeat the track.

  • Provsion the device

    1. Click the more button in "Device" section.
    2. Click start to auto privision your device.

    Note: This feature is still under development it works for some devices, it might have bugs. if you have trouble to provision the device, try to use the manual way as below:

    1. download the correct DeveloperDiskImage.dmg and DeveloperDiskImage.dmg.signature file from Apple website (in macOS Xcode will automatically download it for your device, you can get from there if you have a Mac)
    2. connect your device and unlock the device (ensure the device is showing up in the iTunes)
    3. use command "ideviceimagemounter.exe DeveloperDiskImage.dmg"

Acknowledgements

GPS-Simulator uses the following libraries:

gps-simulator's People

Contributors

cabird avatar intothedarkness avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

gps-simulator's Issues

Feature Request

I have a few feature requests. I'm not a programmer by any stretch of the imagination.

  • Add additional speeds to Walking.
    • I made a few alterations to the code on my end and added four additional speed settings. A bit of realignment was needed to make the alterations on the MainWindow.
    • (Anyone can copy and paste this code if they want to make the change themselves.)
MainWindow.xaml (starting on line 45)
<TabItem Header="Walking">
     <Grid>
                    <Button x:Name ="walking" Content="Start" HorizontalAlignment="Left" Height="26" Margin="0,410,0,0" VerticalAlignment="Top" Width="219" Click="walk_Button_Click"/>
                    <Button x:Name ="option" Content="Load GPX" HorizontalAlignment="Left" Height="26" Margin="0,380,0,0" VerticalAlignment="Top" Width="219" Click="option_Button_Click"/>
                    <Button x:Name ="stop_button" Content="Stop" HorizontalAlignment="Left" Height="26" Margin="0,440,0,0" VerticalAlignment="Top" Width="219" Click="stop_Button_Click"/>
                    <CheckBox x:Name="gps_drift" Content="GPS Drifting" HorizontalAlignment="Left" Height="19" Margin="10,22,0,0" VerticalAlignment="Top" Width="173"/>
                    <GroupBox Header="Speed" HorizontalAlignment="Left" Height="180" Margin="0,184,0,0" VerticalAlignment="Top" Width="219">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="85*"/>
                                <ColumnDefinition Width="128*"/>
                            </Grid.ColumnDefinitions>
                            <RadioButton x:Name ="walking_speed" Content="Walk - 8 mph" HorizontalAlignment="Left" Height="23" Margin="10,17,0,0" VerticalAlignment="Top" Click="walking_speed_click" Width="122" Grid.ColumnSpan="2"/>
                            <RadioButton x:Name ="running_speed" Content="Run - 16 mph" HorizontalAlignment="Left" Height="22" Margin="10,37,0,0" VerticalAlignment="Top" Click="running_speed_click" Width="122" Grid.ColumnSpan="2"/>
                            <RadioButton x:Name ="driving_speed" Content="Drive - 65 mph" HorizontalAlignment="Left" Height="22" Margin="10,57,0,0" VerticalAlignment="Top" Click="driving_speed_click" Width="122" Grid.ColumnSpan="2"/>
                            <RadioButton x:Name ="fastdriving_speed" Content="Fast Drive - 85 mph" HorizontalAlignment="Left" Height="22" Margin="10,77,0,0" VerticalAlignment="Top" Click="fastdriving_speed_click" Width="144" Grid.ColumnSpan="2"/>
                            <RadioButton x:Name ="light_speed" Content="Light Speed - 100 mph" HorizontalAlignment="Left" Height="22" Margin="10,97,0,0" VerticalAlignment="Top" Click="light_speed_click" Width="171" Grid.ColumnSpan="2"/>
                            <RadioButton x:Name ="ridiculous_speed" Content="Ridiculous Speed - 150 mph" HorizontalAlignment="Left" Height="22" Margin="10,117,0,0" VerticalAlignment="Top" Click="ridiculous_speed_click" Width="171" Grid.ColumnSpan="2"/>
                            <RadioButton x:Name ="ludicrous_speed" Content="Ludicrous Speed - 200 mph" HorizontalAlignment="Left" Height="22" Margin="10,137,0,-2" VerticalAlignment="Top" Click="ludicrous_speed_click" Width="171" Grid.ColumnSpan="2"/>
                        </Grid>

On the walking_tab.cs code

walking_tab.cs (starting on line 153)
         private void driving_speed_click(object sender, RoutedEventArgs e)
        {
            timer_callback.walking_speed = c_fast_walking_speed * 12;
        }
        
        private void fastdriving_speed_click(object sender, RoutedEventArgs e)
        {
            timer_callback.walking_speed = c_fast_walking_speed * 15.545;
        }

        private void light_speed_click(object sender, RoutedEventArgs e)
        {
            timer_callback.walking_speed = c_fast_walking_speed * 18.288;
        }

        private void ridiculous_speed_click(object sender, RoutedEventArgs e)
        {
            timer_callback.walking_speed = c_fast_walking_speed * 27.432;
        }

        private void ludicrous_speed_click(object sender, RoutedEventArgs e)
        {
            timer_callback.walking_speed = c_fast_walking_speed * 36.576;
        }

A few other features would be:

  • GPX path editing
  • point to point walking without having to save a GPX file for every non-teleporting movement

Thanks,
Converjance

GPX

Can you create instructions on how to make your own GPX?

Fixes

Hi,

  1. With this new version, the provision button is set too far down the screen to the point where I only have half the button because my screen resolution is lower than what you have it set to. Is there any way you can set the provision button based on the maximum height of the window?

  2. I don't believe reverse works. It hasn't worked properly for me.

  3. I tried to use stop at end and when it gets to the end, it warps me back to the starting point and starts again. Can this be changed so that it stops walking at the end completely or add a button for circular routes so that it works with this properly

  4. Any way to use Google maps instead of the current maps as coordinates from certain websites do not 100% correlate, sometimes it can be a few meters off or somethings a couple of hundred meters off. For example, I tried to catch a Deino at these coordinates, but it isn't the same location on your app when compared to google maps. It was found at the google maps location. 43.832570,-79.416628

  5. Add favourite locations

Possible Updates

Hi, would it be possible to add the following:

  1. End at location (Ends walking once it reaches it's location)
  2. Walk back from current location (If you've only walked half the route and need it to go back to the starting point)
  3. Set personal speeds (I understand that there are walk, run and drive -- but let's say my roads here are 60km/h, then switches to 70km/h, I would prefer to set those speeds or if I want the walk setting to be faster or slower or the run setting to be faster or slower. I would still enjoy the three toggle, but have a 4th option with a fill in box for custom speed)
  4. Add a button for stop and drift, not sure how to code that but when you're in one place, the GPS will still drift to different locations
  5. Allow changing default startup location? I've accidentally doubleclicked on the default map before with my trackpad and it warped me to Seattle when I'm from Ontario, Canada

Restore iphone location

Thanks for the excellent app and it works as expect on my Windows 10 with iPhone XS iOS 13.6.

My question is that is it possible to restore iPhone's location after unplug from the PC without restarting iPhone?

thanks.

stop spoofing

Hi there, really useful app here. I would like to stop spoofingmy device without rebooting. So I made some research and below solution seems working. I am not good at c# or ios api at all, so it may not be the best way but seems works

added to device_tab:

private void stop_Spoof_Click(object sender, RoutedEventArgs e)
   { 
        location_service.GetInstance(this).stop_service(location_service.GetInstance(this).Devices[0]);
    }

added to device_con:

public void stop_service(DeviceModel itm)
  {
     var size = BitConverter.GetBytes(1u);
     Array.Reverse(size);
     var num = 1u;
     iDevice.idevice_new(out var device, itm.UDID);
     var ret_handshake = lockdown.lockdownd_client_new_with_handshake(device, out var client,
            "devicelocation");

    if (ret_handshake != 0)
        {
            return;
        }

     var ret_start_service = lockdown.lockdownd_start_service(client,
               "com.apple.dt.simulatelocation", out var service2);
      if (ret_start_service != 0)
          {
            return;
          }

        var se = service.service_client_new(device, service2, out var client2);
        if (se != 0)
        {
            return;
        }

        se = service.service_send(client2, size, 4u, ref num);
        if (se != 0)
        {
            return;
        }

    }

added to MainWindow:

<Button x:Name ="device_prov_Copy" Content="stop spoof" HorizontalAlignment="Left" Height="26" Margin="0,695,0,0" VerticalAlignment="Top" Width="221" Click="stop_Spoof_Click"/>

Error when teleporting and spoofing not working

Hello, thanks for the amazing work on the app hovewer I haven't been able to get it to work.
My phone is detected and provisionned correctly, hovewer when i load a GPX from the included list, the dot correcty moves along the path in the app however in my pogo app i am still at my usual location, not moving. Also when i tried the teleport function i got this error after double clicking a spot on the map:

Line 122: using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
Error:
System.Net.WebException. Distant server returned an error : (400) Incorrect request.

To note I am using the 4G on my phone to act as router for internet access on the computer. Could that mess up with the app somehow?

Thank you for your help.

Provisioning Issue possible fix

Plugging in my iPhone 12 turns it into a tethered network for my PC, disabling cellular data (4/5g) instantly fixes any provisioning issues and allows GPS spoofing.

iOS 16.6

I couldn't find any DDI for that image, so it's not related to that (for me)

Crash when clicking on the map ( device provisionned & unlocked)

When i click on the map or search an address, the app crash without any error.

Entering gps coordinates will work but i can’t double click on the map or create paths it always crash.

Do i need to install something?

the device is successfully provisionned (ios 14.4) and i can see the map

iOS DDI

Hello,

Wondering if the new 14.1 update will be added to the repo soon?
Love the sim.

Thanks alot.

Spoofing doesn't work, no errors

Hi,

I tried to use this wonderful program, but unfortunately location on my phone is not spoofed.
Any idea what I am doing wrong?

  • I provisioned phone via command line with ideviceimagemounter.exe tool, I got image for iOS 14.2 somewhere on internet, provisioning was successful, also in application (Device -> Provision) says »Device is already properly provisioned!«.
  • I installed iTunes from Store, since last 32bit version available online can’t be installed on my 64bit OS. Phone connection is OK, Device tab says {phone} is connected.

Thank you for your help,
Kindest regards, k.

The prerequisite SDKs are not available to download rom MS site

In the instructions of How to Build, these 2 requirements are not available anymore.
I cannot find it anywhere. Anyone can help?

Download and install the Bing Maps Windows Presentation Foundation Control
Download and install the Windows Presentation Foundation Control SDK. (WPF)

Feature request

Hi, thanks for the amazing app.
I would like to make some requests that will improve usability in my use case. Please take a look.

  1. Register a start location: I have a specific place I want to visit whenever I use the app. Optimally, I just open the app and click Teleport to make a teleport, without entering the numbers in the boxes. I tried to enter coords values in a config file, but it only changes the start location of the map without a location marker, which is not ready to start a teleport. For example, is it possible to change the behavior of Teleport button; when you click it without a marker or entering the coords in boxes, then it reads default values in config file and teleport there, rather than showing invalid coordinates warning? In addition, if I could register multiple places, that would be fantastic too.

  2. Enable Stop Spoofing button without a Teleport. I want to stop spoofing of a device just after I connect to my computer. Note that the device was previously applied a teleport and disconnected from the computer. The current behavior is, connect a device (already provisioned), then since Stop Spoofing button is disabled by default, open teleport tab, click random place and teleport, then open device tab and click Stop Spoofing button. The current assumption is users do not disconnect spoofed devices from their computer, which does not applied to users like me. I believe the Stop Spoofing button should be enabled if the connected device is already provisioned.

Thanks for your consideration in advance!

How do you manually provision device?

I've got the correct DeveloperDiskImage.dmg and DeveloperDiskImage.dmg.signature file but I'm not sure about the "ideviceimagemounter.exe". Could you please elaborate?

Cant use gpx file

Whenever I try to use a gpx file I get this:

System.ArgumentOutOfRangeException
HResult=0x80131502
Message=Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
Source=mscorlib
StackTrace:
at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
at System.Collections.Generic.List1.get_Item(Int32 index) at System.Collections.ObjectModel.Collection1.get_Item(Int32 index)
at GPS_Simulator.MainWindow.draw_gpx_route() in C:\Users\night\Desktop\GPS-Simulator-master\GPS-Simulator\MainWindow.xaml.cs:line 210
at GPS_Simulator.MainWindow.OptionDlg() in C:\Users\night\Desktop\GPS-Simulator-master\GPS-Simulator\MainWindow.xaml.cs:line 129
at GPS_Simulator.MainWindow.option_Button_Click(Object sender, RoutedEventArgs e) in C:\Users\night\Desktop\GPS-Simulator-master\GPS-Simulator\MainWindow.xaml.cs:line 302
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
at System.Windows.Controls.Primitives.ButtonBase.OnClick()
at System.Windows.Controls.Button.OnClick()
at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
at System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e)
at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
at System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e)
at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at System.Windows.Application.Run(Window window)
at System.Windows.Application.Run()
at GPS_Simulator.App.Main()

Also, in what unit of measurement is altitude in? Sometimes it is 0 when it measures differently using other sources.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.