I installed Nox Player emulator on my Windows PC and used both Fiddler Classic and Charles Proxy to capture traffic from the emulator. I have installed the certificate of Fiddler and Charles Proxy too. By using Frida I'm able to intercept all the traffic of all apps except one app. When I opened the app it run well without any errors but no single traffic was captured. I modified the .apk file by removing the pin-set in network_secufity_config.xml but no luck. Other apps can be intercepted but not this app. Is there any setup I missed or the app has extra protection?
This similar question has almost the same problem
Either it's not HTTP traffic, or it's not viewable.
If it's not HTTP Traffic, you might need a different tool like Wireshark.
If it is HTTPS traffic that the proxy can't decrypt, it might be PKP. To capture it you might want to produce the stack trace around basic connection classes, see who's producing the calls, and find how to decrypt it within frida. If you're using OS level platforms like Magisk, there are ways to always trust the certificates at the system level, which might save you a hustle.
Related
Been using Charles Proxy for years now but recently I've been having issues setting up my Android device.
Certificates have been installed on the Android device. I've confirmed they are in fact listed as trusted certificates in my certificates list. Everything is setup correctly, but SSL traffic continues to be blocked.
I've tried reaching out for support, but they don't ever respond.
Has anybody had this issue before?
I was having all my traffic blocked. The issue was that "Allow list" (in Tools menu) was enabled, so only traffic to allowed locations were going through. After disabling that, issue got fixed.
Everything is setup correctly, but SSL traffic continues to be blocked.
Sometimes I used to see red cross on SSL requests coming from Android. I was unable to read the content. It started working fine for me after I setup the SSP Proxy Settings option. I checked the Enable SSL Proxying option as shown in the image and added the wildcard URL's that I want to filter. Eg: *.your-server-url.com
Update:
Also I don't think you can do it in release build of your application.
And for Android N and above there have been these changes you'll need to include in your project for it to work: https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
Hope this helps a bit.
I have a big problem because I have a pc with a little amount of RAM and I can't use my RESTlet server on Eclipse and an Android client on Android Studio together... I read on the internet some solutions at my problem but maybe I wrong somethings because it doesn't work. How can I use the localhost (with or without the cable is the same) with my pc (for the server) and my phone (for the client) to debug and use my project?
Check out ngrok. It's a great addition to any developer's toolbox.
This app allows you to make your localhost accessible to the internet through a secure channel.
You'll download a small application for your PC, which will then give you a temporary and random URL, through which you can access the web server on your local machine.
This way, your phone will be able to reach your PC over WiFi, cell data, etc. You just need to have a way to configure the destination URL in your phone app to set it to the URL that ngrok gives you.
Another solution would be to create a Windows VM on any of the Cloud providers (such as AWS, Azure, Google, etc.), remote desktop into that machine, install Eclipse, copy your code and and run your API server there. And then use your own PC to run your Android simulator and point the destination URL to your VM's IP or domain name. This solution would be somewhat more complicated to set up and will require you to move your code around, expose the right ports, install a bunch of software on the VM, etc. Not to mention, this will probably cost you a little bit of money. So for testing and debugging purposes, that ngrok solution should work great.
In your url instead of "localhost" copy and paste your PC ip v4 address.You can get it on Windows from command prompt ipconfig command
I am trying my hands on the android app development and need your suggestions to mitigate my current situation.
My organization has disabled USB for the desktop and I wouldn't be able to connect my phone through USB to test my application as I code.
I have installed genymotion but since it is behind proxy, in all the ways I could configure it, it gives proxy authentication error.
The avd is comparitively slower and the app which am trying needs internet connectivity at every step. I have tried these too and my impression is that we can make
the avd work for connecting to internet through its webbrowser but it cannot connect to internet within the apps. I might be wrong here. Please let me know if it is not the case.
Is there any other way where we can install the app in the phone as and when we code to test it..?
One option can be to export an apk file everytime and install them on the phone by sending this apk through a mail. But this will be a cumbersome activity if we have to test as and when we code.
Any suggestions on this..?
PS: I do not want to hack the desktop to enable the USB.Also using an external laptop with USB enabled is out of option in my case.
Many thanks.
Another way is using AirDroïd. You just need to install it on your test device, and you can manage it with a webapp :
your.static.ip.xx:8888
You can install your app with that way, it's really easy, you don't need any account in a local network.
For testing... no idea without usb, or without the emulator. Maybe you can log everything in a text file & get it (with airdroid for example).
EDIT
I think if you create an account you can use it external of you network.
http://web.airdroid.com/
Just create an account, & log on web & on the app, you could use it on the external way.
Why are you even bothering to use the desktop PC when your organization has made it unsuitable for development.
It will be hard work, but you could do all your development on the Android device itself, using AIDE
(Actually AIDE is pretty practical as a IDE if you have a large screen tablet, and pair it with a full size bluetooth keyboard).
Quote: "Inside your project bin folder there is an apk file. If you copy that file to a device you can then install the app from it.
When I am in your situation I throw my apk into dropbox and send out links for people to download it."
from this link
I doubt that if your company has disabled USB they still allow Bluetooth, but because you did not state it specifically:
If you can use Bluetooth, the best way would be to use it for running and debugging your App.
There are some Tutorials on the web.
For Example: http://zcourts.com/2013/07/19/android-debugging-over-bluetooth-without-root/
Does anyone know how to set up fiddler to monitor/sniff traffic from bluestacks? I've seen others mentioning that it can be done, but need some direction on configuring fiddler or configuring bluestacks to get it going. Currently fiddler is returning a message, some tunnel to message. Perhaps I would need to configure the port/proxy for bluestacks. If this is the case, does anyone know how this is to be done or can point me in the right direction?
You can capture Bluestacks traffic using:
Wireshark (problem: we can't see https (SSL) traffic)..
We can use ProxyCap software and setup all BlueStacks executables to work via our Fiddler local proxy. But we have an issue here - We can't import Fiddler Certificate into BlueStacks (at least I didn't found a way yet)..
one possible solution would be to:
KILL BlueStacks processes.
Find BlueStacks Root.fs file (in my case it's located here: c:\ProgramData\BlueStacks\Android)
edit that file using linux tools (it's an image .. we can do fdisk Root.fs to see partitions.. then mout it with loop rw .. and modify.. but that's need more digging).
one important note: we need to find a way to block BlueStacks autoupdates (and discard our changes in Root.fs)
Supposedly, BlueStacks doesn't support proxy settings (https://android.stackexchange.com/questions/27224/how-to-configure-bluestack-appplayer-to-use-proxy-settings-when-connecting-to-ne) which would imply that its traffic would not go through Fiddler.
However, you say "Fiddler is returning a message some tunnel to message" which implies to me that maybe they were incorrect and the traffic is going through Fiddler and the client merely needs to be configured to trust the Fiddler root certificate.
Can you share a screenshot of the Fiddler UI showing the "Tunnel to" in question?
If all you need is to set a browser within Bluestacks proxy, this proxy setting app worked for me:
https://play.google.com/store/apps/details?id=com.lechucksoftware.proxy.proxysettings
I'm able to securely stream audio from one PC to another via SSH using:
ssh <username>#<host> 'dd bs=1k if=/dev/audio' > /dev/audio
Is there any similar way to do this from a terminal running on an Android phone? I tried testing this from a terminal emulator running on a Droid X, but the standard "/dev/audio" device is missing.
Note, I realize this could probably be accomplished by writing a custom app, but I'd like to avoid that overhead.
Another way would be to install a streaming server (i.e. icecast) on the Linux box and connect to it from your Android using any Internet Radio Client.
IIRC, icecast support authentication and SSL.
No, there is no way to do this. By default android phones do not run SSH, nor do they have /dev/audio available (I'm actually uncertain where the audio path on most android devices terminates).
I see a custom app in your future.