How to modify AOSP to capture network Traffic - android-source

I want to modify AOSP to capture the network traffic and file operation behavior of APPs installed on my ROM.
I have installed the rom to my nexus_6p.
I don`t know how to modify AOSP to capture(OR log) the network traffic cause i am not very well in android development.
Please tell me where or how to modify it. If there is any article, you can also post it. Thank you
I am not a malicious developer , this is just my project which detects suspicious apk and this project Will not be made public.
Thanks again!

No need to modify the AOSP source, you can run an app that will do this. Android has a mechanism for routing traffic to an app called VpnService (it's not actually a vpn).
There are apps that already do this, for example tPacketCapture.
If you're interested in developing such an app yourself, you may find these questions of interest:
Android VpnService, packets forwarding
Sending a raw packet to a NetworkInterface in Android doesn't work?

You can achieve your goal by modifying the AOSP.
You have to do something to these following components which produce network traffic.
OkHttpRequest
Webview.apk
If you need any further help, I would attach here detailed technical tips or step-by-step manual.

Related

Where can I find the android open accessory API / libraries / firmware examples?

In the docs regarding custom accessories, there is a link to what it claims is the firmware source code but this link only points back to the top page for the Android Peripherals and Accessories (no source code). All the pages under "Custom Accessories" give vague instructions on how to connect but no API, libraries or examples. For example, under the Determine accessory mode support section, it claims:
During the initial connection, the accessory should check the version, vendor ID, and product ID of the connected device's USB device descriptor.
How do I initialize a connection and what methods or what libraries would I call to get the version and other info?
No amount of googling has enabled me to find the source code, libraries or examples to anything related to this "ADK" other than a few outdated Arduino pages that also point to bad links. The closest SO question I've found is here and answers also contain broken or piped links.
Is this project dead or something? What is the standard way of communicating with IO via Android these days?
Just following up here as I found what I was after, though not terribly pleased with the result.
The demo code linked in the docs points to an "adk" which appears to be a demo of the Android Open Accessory protocol developed for use on the Arduino ADK board which was intended to interact with Android. The source code can be found here:
https://android.googlesource.com/device/google/accessory/
though it is terribly out of date. You'll have a terrible time trying to get that to compile with modern gradle.
There are a couple of more active communities working with USB and Android:
This one being great, but only for Host Mode (not accessory mode):
https://github.com/mik3y/usb-serial-for-android
There was another slightly less outdated example of how to implement the AOA between two android phones, which I refactored and got working using modern gradle build tools:
https://github.com/topherbuckley/USB-accessory-sample
After seeing how abandoned the project was for so long, I instead focused my efforts on using Android in Host Mode only, but implementing USB Power Delivery on any hardware such that I can use the Android phone in Host Mode and swap the Power Role via USB-PD after initializing the connection. In this way I can avoid the AOA and still get the same end result using modern software/hardware/firmware.

Enabling Kinect In a Browser using NaCl

While working on a project with the kinect, I had an idea of integrating it onto a web browser directly from the device. I was wondering if someone has done this before or if there exists some form of information that can shed some light.
In More Detail:
I've been dissecting the Kinect Fusion application that is provided with the kinect and I was wondering what it would take to have a browser do a direct to device 3d scanning. I've discovered NaCl which claims that it can run native code, but I don't know how well it would run Microsoft native code (from the Kinect SDK version 2 //what I'm using.) also just looking at NaCl with no prior experience(with NaCl), I currently cannot imagine what steps to take to actually activate the kinect and have it start feeding the image render to the browser.
I know there exists some libraries that allow the kinect to work on other operating systems and was wondering if those libraries would allow me to have a general bitmapping to send the pp::graphics2d stuff for nacl(for the image display), for which I would then need to figure out how to actually present that onto the browser itself then have it run the native code in the background to create the 3d image then save it to the local computer.
I figured "let me tap the power of the stack." I'm afraid of an overflow, but you can't break eggs without making a few omelettes. Any information would be appreciated! If more information is needed, ask and I shall try my best to answer.
This is unlikely to work, as Native Client doesn't allow you to access OS-specific libraries.
Here's a library which uses NPAPI to allow a web page to communicate with the native kinect library: https://github.com/doug/depthjs. NPAPI will be deprecated soon, so this is not a long-term solution.
It looks like there is an open-source library for communicating with the kinect: https://github.com/OpenKinect/libfreenect. It would be a decent amount of work, but it looks like it should be possible to reverse-engineer the protocol from this library and perform the communication in JavaScript, via the chrome.usb apis.
Try EuphoriaNI. The library and some samples are available at http://kinectoncloud.com/. Currently, only the version for AS3 is posted on the site though. The version for the Web, of course, requires you to install a service on your computer (it's either that or a browser plug-in... and nobody likes those :)

iOS / Mac Bonjour service not found on network

I have an iOS app that publishes a Bonjour service. On my network, the Mac app recognizes the service and everything runs smoothly. On some networks however, the Bonjour service is not "seen" by the Mac. I can't reproduce this on my own network. I have had users check for the service using Bonjour Browser and it's not found. Is there a way to diagnose this problem further? I thought it might be a firewall / router issue but some users have very simple Apple-based networks (Airport). Any ideas on what could be causing this?
Have you tried implementing the
- (void)netService:(NSNetService *)sender didNotPublish:(NSDictionary *)errorDict
method? it can occasionally provide useful information although I have found the NSNetService to have strange behaviour sometimes also. Stopping the NSNetService and re-publishing is an ugly option which seemed to work for me to some extent.
Make sure you implement ...didNotPublish... as above. Some routers filter out multicast packets, and unfortunately if you don't control the network there's not an awful lot you can do about it.
Another followup: modifying the device name seems to resolve the issue. One user noted that his iPad was discovered but not his iPhone. Bonjour Browser confirmed the presence of the iPad service with no iPhone service. Renaming the iPhone resolved the issue. This is truly an odd behavior.

How can I integrate CalDAV and CardDAV

I am trying to allow people (from a URL) to connect to a calender/contacts from their iPhone, Blackbury or Android phone - what is the best way to do this?
I've had a bit of a read and it seems that CalDAV and CardDAV are the best way to integrate calenders/contacts, but how exactly can I do this? The internet seems to lack a standard way of how you can integrate this into a number of devices.
Which mobile devices support them? And is it possible to just provide a URL and then the calender/contacts just automatically sync!?
All of this assumes you have some sort of Groupware server setup somewhere which acts as the repository for this information.
For opensource you might want to look at a product called Sogo. Apple also do a caldav/carddav server written in python. They expect you to buy a mac server but you can download the code and run it from a pc or linux box. There's a heap of paid-for groupware.
You might want to check out the "opensource" client software written by the same kids who develop Sogo caled funambol. This claims to be x-mobile (all the ones youve mentioned anyway).
The idea behind all the *DAV protocols is that yes everything is done by Uri (this was actually specced by Tim Berners Lee in his draft for the web).
I've just been through this very same process and found only emerging standards, of which *DAV are the de facto ones IMO. HTC use MS active sync on my HD2 to sync my Gmail. Go figure!
Bedework is CalDAV/CardDAV server that allows you to hook your iPhone/iCal calendar and events.
I have used it and it gives you an url to sign in with in you phone calendar. The Bedework is a server you could install on you machine (it is provided with documentation; this is a good point to start with).
Android natively does not support Bedework. In order for Android to support the CalDAV you have to install an application that supports CalDAV, but I do not know if they work with Bedewrok or not.
In the case of android you could try using the CalendarProvider and the ContactProvider. You could refer to this : http://developer.android.com/guide/topics/providers/calendar-provider.html

Objective-c iphone programming with cisco routers?

I've seen some apps that connect to routers via ssh.
Can anyone recommend any documentation on interacting with Cisco IOS configs and notifications? I'd love to write some custom in-house code!
Most of the configuring/querying can be done via SNMP, so you don't have to have a SSH client/command parser built in you application. What's supported depends on router/ios version. You can check here: SNMP OID Browser. SNMP can sometimes be overwhelming, but in time it can be of great use to you. My first suggestion is to find a SNMP browser (eg. from solarwinds) so you can inspect what info you can get from the router. Then you can use NET-SNMP library to do the actual querying/configuring of the router, or if you are willing to pay you can try IP*Works.