[DEV] Tar on the Fly and Sockets with Android - Android Software Development

I'm trying to make an application that sends a .tar file through a socket through android. The .tar file is generated on the fly, so in memory, and it is a tar file of the entire /sdcard directory, as we can't assume the phone has enough space to make the .tar file.
In the computer end I make an adb forward tcp:8000 tcp:800; netstat -w 10 localhost:8000 > out.tar;
Then I execute the application through Android Studio, a snippet of the code is:
Code:
Log.i(TAG, "Launching Socket");
Socket sk = new Socket("127.0.0.1", 8000);
Log.i(TAG, "Socket Launched");
TarOutputStream out = new TarOutputStream(new BufferedOutputStream(sk.getOutputStream()));
tarFolder(null, "/sdcard", out);
For some reason when trying to execute the code I get the error:
Code:
java.net.ConnectException: failed to connect to /127.0.0.1 (port 8000): connect failed: ECONNREFUSED (Connection refused)
I know the error is self-explanatory but I can't figure out how to fix it. Any clues? I haven't really worked with sockets in Android before so I don't know if I'm doing the socket part wrong or maybe the pardigm of reidrecting the port 8000 to localhost is just wrong.
I would really appreciate an expert's opinion.
Thank you very much!

arnauec said:
I'm trying to make an application that sends a .tar file through a socket through android. The .tar file is generated on the fly, so in memory, and it is a tar file of the entire /sdcard directory, as we can't assume the phone has enough space to make the .tar file.
In the computer end I make an adb forward tcp:8000 tcp:800; netstat -w 10 localhost:8000 > out.tar;
Then I execute the application through Android Studio, a snippet of the code is:
Code:
Log.i(TAG, "Launching Socket");
Socket sk = new Socket("127.0.0.1", 8000);
Log.i(TAG, "Socket Launched");
TarOutputStream out = new TarOutputStream(new BufferedOutputStream(sk.getOutputStream()));
tarFolder(null, "/sdcard", out);
For some reason when trying to execute the code I get the error:
Code:
java.net.ConnectException: failed to connect to /127.0.0.1 (port 8000): connect failed: ECONNREFUSED (Connection refused)
I know the error is self-explanatory but I can't figure out how to fix it. Any clues? I haven't really worked with sockets in Android before so I don't know if I'm doing the socket part wrong or maybe the pardigm of reidrecting the port 8000 to localhost is just wrong.
I would really appreciate an expert's opinion.
Thank you very much!
Click to expand...
Click to collapse
I finally managed to fix this, the problem was that I was doing a redirection of ports using adb forward, but I wanted to go from the phone to the computer so I was supposed to use adb reverse.
Closing thread.

Related

[UPDATE 2/12/2010] Terminal IDE - Full 'on device' Java / Android IDE

[UPDATE]
BusyBox 1.19.2
Bash 4.2
Midnight Commander 4.8
TMUX 1.5 - That's right, full terminal multiplexer..
Vim 7.3
Terminal IDE ASCII Soft keyboard first round bug fixes complete.
It's the addition of TMUX and MC that really excites..
--------------------------
Well,
As the only people I know who might even be interested in this, I would like to announce the release of Terminal IDE v1.0.
A complete Java / Android Development Environment that runs on the device itself, with a nice telnetd / sshd feature.
For Android. Of course... Eat this you IPhone Hounds..
Woo HOO!!
The application is available on Android Market.
https://market.android.com/details?id=com.spartacusrex.spartacuside
As what I can only describe as 'dark days' finally draw to an end, I am very pleased with this first draft.
PLEASE give it a go, log in over telnet for a smoother ride, and let me know how it goes..
DO THE TUTORIAL! Does it work ?!
I have released the whole project GPLv2! Yeah, Who Knew!?
http://code.google.com/p/terminal-ide/
BOOOOOM!
Spartacus
a link to the app in the market would be usefull.
Interesting. Was just wondering about coding on my tablet.
Pretty freakin sweet
Thanks for putting this out!
Awesome
The full keyboard alone makes it worth downloading, but the IDE as well - wow!
this is best bro.
I randomly found this last night while looking for a decent mobile IDE for my tablet. I was looking for a simple text editor with syntax highlighting and you've taken that extra step to include other tools for ssh, telnet and compilers. Much appreciated.
One question, how do you start the ssh server? sshd doesn't seem to do it. I would like to scp files to my device from my desktop in order to work on my commute.
Thanks
The sshd app is actually called Dropbear.
You also have Dropbearkey.
You use Dropbearkey to generate the sshd certificates you need.
I really need to add a tutorial on setting the sshd keys up
For now Google has a couple of articles on it.
For file transfers you also have busybox FTP but I admit not terribley secure..
Allthough SSH is provided, and I wonder whether an SSH pipe can be created..?
And lastly you can just copy the files over to your sdcard via USB..
Will look into it & add tutorials asap.
Ok. So I now have SSHD working..
But there is a slight issue.. basically when you log in you have to start bash manually.. unless you have the file /etc/shell with the correct shell to use.. Which requires a rooted phone.
Since Terminal IDE is for non-ROOT users, I will have to recompile the code to allow a shell to be specified on the command line.. Soon..
FOR NOW - This is how to connect to the phone via SSH (There are other ways using public keys but this is one way)
So - Once in Terminal IDE
2) You need to create a couple of server ssh keys
Start in $HOME
Code:
cd ~
Create folder
Code:
mkdir .ssh
Give it some secure permissions
Code:
chmod 700 .ssh
Get in there
Code:
cd .ssh
Now create the keys
Code:
dropbearkey -t dss -f dropbear_dss_host_key
dropbearkey -t rsa -f dropbear_rsa_host_key
ok - That's almost it. Just need to start dropbear with the correct parameters now. [Probably want to keep this in a script]
Back HOME
Code:
cd ~
You need to know the UID of your app, which is different per phone - use 'id'
Code:
id
That will tell you your user ID / Group ID. Let's say its 10058.
Now to start DropBear
Code:
dropbear -A -N username -U 10058 -G 10058 -C password -d ~/.ssh/dropbear_dss_host_key -r ~/.ssh/dropbear_rsa_host_key -F -E -p 8090 -P PidFile
This will start it running in the foreground with password set to 'password' on port 8090.
Then you can connect, like telnet, and simply use 'password' for the password.
Now for the issue. It will start a simple shell session in / with no ENVIRONMENT variables or anything..
I'll fix it permanently in a future release, but for now it can be fixed with these 2 commands.
cd into your home dir - Check this is correct on your device
Code:
cd /data/data/com.spartacusrex.spartacuside/files
And start bash with an init file Terminal IDE auto-magically creates..
Code:
./system/bin/bash --init-file ./.init
Everything should now be setup as usual.
Good luck..
Very awesome and thank you sir. Works like a charm.
One thing to clarify for those "braving" this (not that it's all that insane to try)... the '-N' is setting the username (in the case of the example, setting it to 'username').
Also, it gives a permission denied for scp, I'm assuming since it doesn't init/run the shell. Should be fine since FTP is included. Haven't tried this option yet. Not too worried about security at the moment, since I'll only run it on a private network.
May I make a (maybe) small feature request? Is it possible to include a "keep screen awake" option in the options menu? I have my Xoom config'd to turn off the wifi when the screen is off for power saving (can go ~4 days on 1 charge), so it will kill my connections if I let this happen. I know not everyone has this config set, but it'd be a nice option.
NOW, if I wasn't lazy, I could probably add this myself and build since I've dl'd the source. But, lazy and working on a few projects already.
Again, much thanks.
And as if by magic..
Funnily enough I was having the exact same issue last night while using wget to transfer a big file to my device..
NEW VERSION UPLOADED v1.13
Now has 3 non-exclusive lock types available in the options :
- CPU Lock
- SCREEN Lock
- WIFI Lock
Set them as you wish...
Saw that this morning when I was on the bus (Thursday morning here in Hong Kong). Very awesome and much appreciated.
As well, thanks for open-sourcing it. +1 for you sir!
Very cool stuff
Thanks for creating this.
Great app! However I can't compile .java files. I always get an error that it can't unzip a file in /android.policy.jar. Any idea?
Sent from my GT-I9100 using XDA App
Do you think its possible to also support compiling C sources directly in your phone
I've been searching for this ever since I got an android.
THANK YOU.
Says that it's incompatible with my OG Droid. Any idea why?
shpen said:
Says that it's incompatible with my OG Droid. Any idea why?
Click to expand...
Click to collapse
Most likely seems to be due to the ROM you are using and/or the market version
can u post the build.prop here?
/system/build.prop
also, try going back to market 2.x, 3.x market(s) do loads of checks
Does anybody know why I can't compile java files? I always get the following error:
Error reading /system/framework/android_policy.jar cannot read zip file.
Any ideas? Could anyone upload there android_policy.jar because that might cause the error.
Sent from my GT-I9100 using XDA App
Hi Schindler33.
Can I ask, have you followed the tutorials, say the first helloworld example TO THE LETTER?
Does the helloworld example work?
The parameters have to be correct, and as always exact, and the BOOTCLASSPATH variable must be set.
If so, is it a custom ROM?
Does that policy jar file exist and is it readable by non root users?
As much info as possible good..

ADB sync utility - adbsync

Here is a little utility that may appeal to some.
Transferring files over the USB connection is annoying.
At the very least you have to plug in a connection, at the most you have an inactive Nook.
My philosophy has always been that the desktop is the gold standard and portable devices are ephemeral.
Synchronizing between the two is the goal of adbsync.
It will allow synchronization in either direction over ADB (presumably WiFi, but it would work over USB too).
Some examples:
Code:
[color=red]Update Nook[/color]
adbsync C:\Books "sdcard/My Files/Books" /a /v
[color=red]Sync both directions[/color]
adbsync C:\Notes sdcard/Notes /a /h /v
[color=red]Sync both directions but don't overwrite the PC, use another dir[/color]
adbsync C:\Notes sdcard/Notes C:\Fixme /a /h /v
[color=red]Sync both directions including subdirectories[/color]
adbsync C:\Stuff sdcard/Stuff /a /h /s /v
You must have established a connection already to the Nook using adb connect 192.168.XXX.XXX
Download from the signature.
An anomaly has surfaced. Ok, maybe I mean bug. It's a matter of perspective.
When you sync a file, then do a busybox stat on it:
Code:
# busybox stat sdcard/Music/index4b.htm
...
Modify: 2012-07-11 22:55:11.000000000
Then you reboot the Nook (or remount the sdcard) and do a busybox stat on it:
Code:
# busybox stat sdcard/Music/index4b.htm
...
Modify: 2012-07-11 22:55:10.000000000
The file getting one second older causes it to need to be resynced.
The problem
Linux keeps filetimes in one second resolution. It caches them for mounted systems.
When a vfat partition is mounted the filetimes are taken from the partition at the MS-DOS 2 second resolution.
This can cause the filetimes to be truncated to an even number of seconds.
The solution
adbsync now uses as default a 2 second resolution to allow syncing of vfat paritions without further ado.
When syncing ext2, ext3, etc partitions you may use the /1 flag to use 1 second resolution.
Note that the default 2 second resolution will work fine in this situation too.
The new adbsync is in the signature.
There's a new version available (in the signature).
It does a few things better.
It will update subdirectories (using the /s flag) as long as they exist already.
It will signal the conflict if Bogus is a file on the Android but a dir on the Host.
It gives more broken-down statistics.
Thank you so much for creating this utility!!
Renate NST said:
Here is a little utility that may appeal to some.
Click to expand...
Click to collapse
Thank you so much for creating this adbsync utility. I am hoping (and will let you know soon) that it will help me perform large sync tasks (thousands of files, ranking from a few kb up to about 100 mb), with dozens of directories --- which I regularly make minor updates to (unpredictable as to what), and then need to sync these changes to or from various computers where mirrors exist (where I connect my Galaxy Nexus (LTE), and to a large USB Flash/Thumb drive).
I have been through an absolute nightmarish struggle to sync non-multimedia (not music/video) files for several weeks now, as there are no utilities that will give my MTP only (no UMS) ROM partition a drive letter (there is no SDcard, just a sym-link to a folder --- see this thread --- and my last few posts there).
(I have not been able to find much info beyond the typical "adb help all" regarding the adb command "adb sync", and certainly no useful scripts that make it user-friendly.)
Testing is Successful Thus Far (Yeah!!)
Hi Renate,
I am very sorry to bother you again, but I just wanted to let you know that my little test went very well. I think I am going to wind up making use of this tool you wrote perhaps regularly now (for a while) --- thanks again.
Here was the initial "listing" of the test directories I sync'd:
Code:
C:\Android\android-sdk\platform-tools>adbsync D:\WIRELESS\FullPathHere sdcard/SimilarPathHere /d /s /v /2
...
...
Dirs match: 86
Files match: 13
H Host file only: 190
A Android file only: 10
A> Android file newer: 524
Where as this can be a nice time-saving tool for me (to sync lots of directories and files without navigating them all), the only remaining downside is that I am somewhat limited in the available comparisons I can make here - which I think may be resulting in more push/pulls than is truly necessary. In other words, in some cases I may not want to copies ANY files that same size, path, and filename name, even though they may have a different last modified/created dates. In that scenario, I would ONLY want to syn those that are merely absent altogether (and ignore the file created/last modified dates), which would of course be a less inclusive kind of comparison/sync.
Could you perhaps add this feature in to this tool, or else give me some hints so that I can create my own script/tool to also do this?
Thanks so much, I am very impressed and grateful!,
Paul
adb sync seems very limited in application. I've never really tried it.
Well, besides your request for the capability to only sync files that don't exist,
there is the other scenario to only sync files that already exist.
I'll look into how to do this cleanly.
I do have an option (I'm not sure that it's on the uploaded version) to create or ignore directories that don't exist.
Awesome!! (thanks again
Hi Renate,
Thank you for responding
Renate NST said:
I'll look into how to do this cleanly.
Click to expand...
Click to collapse
... thank you! That sounds great. BTW: Did you use the source code for this adb mod in order to write the code for this version?
I do have an option (I'm not sure that it's on the uploaded version) to create or ignore directories that don't exist.
Click to expand...
Click to collapse
...again, I am eternally grateful. If you don't want to post it publicly, you might consider just PM-ing me?
Best Regards,
Paul
Well, I had already done half of half of what you wanted.
The /s flag searches subdirectories.
The /c flag searches and creates subdirectories that don't exist on the android.
adbsync /a /s /c will create new subdirectories on the android.
I haven't made the host part of it work yet.
That is, with adbsync /h /s /c it will not create subdirectories on the host (yet).
Download in the signature.
Any chance to get it for Linux too?
Mmm, there are various GUI file managers that work with ADB.
The whole point of ADB is it connects to your Nook on port 5555
On the other side it takes requests from client programs on your host on port 5037.
When you do an ADB shell you are running adb on the host twice, once as a server and once as a client.
The Nook is running the adbd daemon.
The ADB server on the hosts supports multiple clients.
That's why you can run a shell, a logcat, a pull and my adbsync all at the same time.
Currently my code is too tied to Windows stuff to really port to Linux easily.
Thank you for this application. I absolutely hate MTP transfer mode on newer devices, especially when I have to sync files, but Grsync can't detect MTP. This really help.
Yes, MTP sucks, rsync don't work on it too, I will try to made a bash script for adb to have a software like yours adbsync.
Sent from my GALAXY Cooper
error using adbsync
hi,
using adbsync for a small test i got the erroro message
"Root for android does not exist".
as i know my device is already rooted?
any idea whats wrong?
pbelcl said:
"Root for android does not exist".
Click to expand...
Click to collapse
Hmm, maybe I should have written that error message more specifically as:
"Root directory specified for the android in the second argument does not exist."
Code:
adbsync /a /s /c /v C:\Books sdcard/Books
sdcard/Books must already exist.
On some (non-Nook) devices /sdcard is actually a link to /mnt/sdcard
adbsync will complain that the root for android is not a directory, so do this instead:
Code:
adbsync /a /s /c /v C:\Books mnt/sdcard/Books
If you insist on a (superfluous) leading slash or spaces in a directory, put it in quotes:
Code:
adbsync /a /s /c /v C:\Books "/sdcard/Stupid stuff/Books"
Renate NST said:
Hmm, maybe I should have written that error message more specifically as:
"Root directory specified for the android in the second argument does not exist."
Click to expand...
Click to collapse
Yes that helped, destination folder was missing
So i made a copyjob that syncs various folders from PC to Android Phone.
but sometimes during copying a whole folder structure with subfolders in the middle of copyjob i get an error:
Code:
=>Can't copy to android
some files ar copied and some files not, very strange ?
any hints what's the reason ??
"Can't copy to Android" might be a timeout on transfer.
Are they really big files? Do you have a really slow SD card?
I might have to increase the timeout.
In any case, if you get a "Can't copy" you can just repeat the same command again.
If you use the /l flag it will list all files in either host or device.
By looking at the leftmost field you can see what adbsync thinks of the two.
To see flag usage just type "adbsync".
Renate NST said:
"Can't copy to Android" might be a timeout on transfer.
Are they really big files? Do you have a really slow SD card?
Click to expand...
Click to collapse
You are right, in this case i try to copy some mpg4 video files, are about 200 MB big.
maybe it is possible to select timeout with a parameter for future versions ?
Renate NST said:
In any case, if you get a "Can't copy" you can just repeat the same command again.
Click to expand...
Click to collapse
yes i tried and it worked for the next files
by the way a question:
is it possible to get some logfile what happened during adbsync, when it runs unattanded?
Tried to use ADBSYNC on another PC but i get the error "No ADB server".
This problem occures only at the first run of adbsync!
after one time adb.exe was called, adbsync works perfect.
maybe i have to start adb.exe BEVORE i can run ADBSYNC ??
Awesome! Very handy!
This is awesome! Thanks
Any chance you could add the ability to exclude certain extensions? I end up with my Thumbs.db in image folders.. as well as other files I don't want to sync...?
Renate NST said:
I might have to increase the timeout.
Click to expand...
Click to collapse
is there any possibility to get a trial version with increased timeout?
now i have to start the sync procedure 5-7 times to get all files synced, so it is not very useful for me ;.(

[Guide] Compiling dropbear 2015.67

Hi,
This is a guide on compiling the latest (as of 2015-06-24) dropbear SSH daemon (2015.67) for the Nexus 7 2013 but should also work for other ARM architecture Android devices. The guide is mainly based off the work from the blog http://blog.xulforum.org/index.php?post/2013/12/19/Compiling-Dropbear-for-a-Nexus-7-tablet which is an excellent guide to getting an older version of dropbear running on ARM Android devices.
I've modified the patch made by the original author to work on the latest dropbear version. There are not much changes from ver 2013.58 to 2015.67. The main difference seems to be the support for Elliptical Curve encryption.
** START DISCLAIMER **
I did not write the original codes/patch myself and have not scrutinized it for any security issues. USE IT AT YOUR OWN RISK.
** END DISCLAIMER **
Here's the list of requirements :-
1) Dropbear 2015.67 source code - dropbear-2015.67.tar.bz2 (https://matt.ucc.asn.au/dropbear/releases/dropbear-2015.67.tar.bz2)
2) Patch to compile for Android - dropbear-v67-android-patch-20150630 (https://goo.gl/Obo6kT) OR alternatively, you can use the patch from user serasihay (https://goo.gl/ip6Tkb).
3) A recent Linux distro (I use Ubuntu 14.04.2 LTS).
4) Development tools i.e. C compiler, linker, etc... all the necessary tools to run configure, make, etc..
5) Android NDK (I'm using rev 10e) installed & setup on Linux.
Steps :-
(1) Extract the source code to a directory of its own :-
Code:
tar xjf dropbear-2015.67.tar.bz2
cd dropbear-2015.67
(2) Patch the source :-
Code:
patch -p1 < dropbear-v67-android-patch-20150630
(3) Run configure :-
Code:
./configure --build=x86_64-unknown-linux-gnu --host=arm-linux-androideabi \
--disable-zlib --disable-largefile --disable-loginfunc \
--disable-shadow --disable-utmp --disable-utmpx --disable-wtmp \
--disable-wtmpx --disable-pututline --disable-pututxline --disable-lastlog
(4) Edit config.h, search for USE_DEV_PTMX and add the following line after that :-
Code:
#define USE_DEV_PTMX 1
(5) Run make :-
Code:
STATIC=1 MULTI=1 SCPPROGRESS=0 PROGRAMS="dropbear dropbearkey scp dbclient" make strip
(6) You should end up with a single static binary "dropbearmulti" which you should link dropbear, dbclient/ssh, dropbearkey and scp to.
Code:
./dropbear -h
Dropbear server v2015.67 https://matt.ucc.asn.au/dropbear/dropbear.html
Usage: ./dropbear [options]
-A Android Mode, specify a user explicitly
-N Android Mode, user name
-C Android Mode, password
-R Android Mode, public key file (authorized_keys)
-U Android Mode, UID
-G Android Mode, GID
-b bannerfile Display the contents of bannerfile before user login
(default: none)
-r keyfile Specify hostkeys (repeatable)
defaults:
dss /etc/dropbear/dropbear_dss_host_key
rsa /etc/dropbear/dropbear_rsa_host_key
ecdsa /etc/dropbear/dropbear_ecdsa_host_key
-F Don't fork into background
-E Log to stderr rather than syslog
-m Don't display the motd on login
-w Disallow root logins
-s Disable password logins
-g Disable password logins for root
-B Allow blank password logins
-j Disable local port forwarding
-k Disable remote port forwarding
-a Allow connections to forwarded ports from any host
-p [address:]port
Listen on specified tcp port (and optionally address),
up to 10 can be specified
(default port is 22 if none specified)
-P PidFile Create pid file PidFile
(default /var/run/dropbear.pid)
-i Start for inetd
-W <receive_window_buffer> (default 24576, larger may be faster, max 1MB)
-K <keepalive> (0 is never, default 0, in seconds)
-I <idle_timeout> (0 is never, default 0, in seconds)
-V Version
I will assume you know what to do with the binary file generated so will not elaborate on the process.
Hope it works for you guys. I'll be happy to help out anyone who needs more details.
NOTE: I have posted a similar guide for building dropbear for an x86 Android device in the Zenfone 2 forum (http://forum.xda-developers.com/zenfone2/general/compiling-dropbear-2015-67-zenfone-2-t3142222). The steps are mostly similar.
Cheers.
UPDATE: 2015-06-29
- I've updated the patch to fix dbclient/ssh client using password authentication.
UPDATE: 2015-06-30
- Reverted the patch for the dbclient fix as NDK does not have getpass() function. Looks like dbclient with password auth will seg fault until we can find an alternative to getpass().
UPDATE: 2015-06-30 (2)
- Uploaded yet another update to the patch to include a version of getpass(). Hopefully it works
UPDATE: 2015-07-02
- Added alternate dropbear patch by serasihay (Thanks!). Details of changes can be found here :- http://forum.xda-developers.com/showpost.php?p=61649194&postcount=14
Thank you for the guide, wolfdude!
I'm more interested in the client rather than the server, though.
Have you tried it? Does it work for you? For me, it doesn't.
I'm tying to connect to a remote host using the password authentication, but a segmentation fault occurs just after accepting the key of the remote host. It doesn't get to ask for the password.
The crosscompilation process goes without errors. I copy the binary to the Nexus, I do the symlinks in /system/xbin, etc.
I run the client from Terminal Emulator, and the remote host key is correctly stored in .ssh/known_hosts, inside the app's "app_HOME" directory found in /data.
On the remote server I can see that the connection request is received, the provided user is successfully identified as valid/existing; and the key algorithm exchange seems to succeed, too... But after that the connection is closed by the client... :-?
Hi serasihay,
Yes, I'm getting a Seg Fault too when I use the SSH client and using password auth. When I use an identity file, I don't get a SegFault and it connects successfully. I'm not sure what's causing the Seg Fault. When I get some time, I might have to run it through a debugger to find out. There might be more patches required to get the client working.
Cheers.
Thank you for confirming it, wolfdude.
I also think that there's more code to be patched.
I'm reading to learn how to debug the binary... Never done this on Android...
Thanks again for your time!
Hi Serasihay,
I've updated the patch to fix the seg fault issue. Turns out that the original patch commented out a chunk of code that was required for password authentication. Please test it out and hopefully this works well for you.
Cheers.
It looks like you've uploaded the old patch again by mistake... I diffed both files and they are exactly the same.
Yesterday I made good progress learning how to debug remotely a binary running on an Android device. I had to recompile the binary without striping the symbols, etc.
I'm a bit out of my depth here, but I'll continue trying to understand where's the flaw.
Code:
$ adb forward tcp:5039 tcp:5039
$ ./android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gdb
[...]
(gdb) target remote :5039
(gdb) symbol-file dropbear-2015.67/dropbearmulti
Reading symbols from dropbear-2015.67/dropbearmulti...done.
(gdb) run
The "remote" target does not support "run". Try "help target" or "continue".
(gdb) continue
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x000527cc in strlen (s=0x0) at bionic/libc/arch-arm/bionic/strlen.c:62
62 bionic/libc/arch-arm/bionic/strlen.c: No such file or directory.
(gdb) backtrace
#0 0x000527cc in strlen (s=0x0) at bionic/libc/arch-arm/bionic/strlen.c:62
#1 0x0000aff0 in cli_auth_password ()
#2 0x0000a7ec in cli_auth_try ()
#3 0x0000f534 in cli_sessionloop ()
#4 0x000161a0 in session_loop ()
#5 0x0000f16c in cli_session ()
#6 0x0000d604 in cli_main ()
#7 0x00008228 in main ()
(gdb) frame 1
#1 0x0000aff0 in cli_auth_password ()
(gdb) info frame
Stack level 1, frame at 0xbecbf848:
pc = 0xaff0 in cli_auth_password; saved pc = 0xa7ec
called by frame at 0xbecbf860, caller of frame at 0xbecbf7d0
Arglist at 0xbecbf844, args:
Locals at 0xbecbf844, Previous frame's sp is 0xbecbf848
Saved registers:
r4 at 0xbecbf834, r5 at 0xbecbf838, r6 at 0xbecbf83c, r11 at 0xbecbf840, lr at 0xbecbf844
(gdb)
I guess the code commented out in the patch that you are referring to is the one that, in cli-auth.c, does the following aasignement:
Code:
password = getpass(prompt);
It makes sense, because from the debugging "session" I posted int my previous post, one could deduce that the problem is that a null string is passed to cli_auth_password ()...
But, unhappily, the function getpass is not provided by the Android C library (Bionic). If you try to build with a "corrected" patch, you end up with this error:
Code:
cli-auth.o:cli-auth.c:function getpass_or_cancel: error: undefined reference to 'getpass'
I'll try to find a workaround. Any help will be appreciated!
serasihay said:
I guess the code commented out in the patch that you are referring to is the one that, in cli-auth.c, does the following aasignement:
...
I'll try to find a workaround. Any help will be appreciated!
Click to expand...
Click to collapse
Hi serasihay,
You're on the right track That is indeed the function causing the seg fault. I've updated the post to have the correct URL to the CORRECT patch now. Please try again and let me know how it goes.
Cheers.
Hi wolfdude,
The corrected patch you've uploaded is like the one I already tried. As I was saying in my previous post:
serasihay said:
But, unhappily, the function getpass is not provided by the Android C library (Bionic). If you try to build with a "corrected" patch, you end up with this error:
Code:
cli-auth.o:cli-auth.c:function getpass_or_cancel: error: undefined reference to 'getpass'
Click to expand...
Click to collapse
So, in my opinion, it's a matter of finding an alternative to "getpass", or implementing a new one... I'm reading what would be the better solution.
Thank you again for your time!
Cheers.
Ahh... apologies for not reading correctly. I see what you meant now. I did my compile/build on an x86 android device and I assumed that it would also work for ARM using the NDK. Let us know how you go with the getpass() alternative.
Thanks.
Hi serasihay,
Ok... I've uploaded another patch this time to include a getpass() function which I pinched & modified from the GLIBC library. Hopefully it works as expected. Again... I didn't audit it for any security issues so use at your own risk
Cheers.
Thank you very much for your help and efforts, wolfdude.
I've taken my chances with your new patch... But the code doesn't compile, either.
Now the problem is with the "getline" function:
Code:
cli-auth.o:cli-auth.c:function getpass: error: undefined reference to 'getline'
I'll keep struggling with it as time allows...
Edit:
I've found a working getpass function. The code compiles and allows me to successfuly login to my remote machine!
https://github.com/CyanogenMod/android_external_dropbear/blob/cm-12.0/netbsd_getpass.c
When I get time I'll see if it is secure to include it and what would be the proper way to do so. I'm out of my depth here. Of course, feel free to make a new patch or whatever you consider appropriate, surely you're more experienced than I am!
Good to know you have it working now. I'm no developer too so can't really comment on which ever is better. As long as it works right
Cheers.
I've uploaded the patch that makes the dropbear client work for me.
https://goo.gl/ip6Tkb
Basically, it is the one you uploaded initially, but it corrects the problem with the getpass function by using the one implemented in the file netbsd_getpass.c.
To sum it up, my patch differs from your first one in that:
* Adds two new files, netbsd_getpass.h and netbsd_getpass.c.
* Modifies cli-auth.c to include the netbsd_getpass.h in order to use its getpass function.
* Modifies the Makefile.in so that the netbsd_getpass.c object is compiled and included into the dropbearmulti binary.
* Modifies options.h to change the path of the SSH which is used in scp.c to: _PATH_SSH_PROGRAM "/system/xbin/dbclient"; i.e.: it assumes that you do the appropiate symlink in /system/xbin...
Cheers!
Good stuff! I'll update the original post to have a link to your patch.
Thanks.
I'll be happy if it helps anyone.
Thank you!
If you have openssl ported to Android, there's a simple, useful patch that substitutes crypt with openssl's DES_crypt.
Link to the description (which contains a link to the patch) is here: http://www.gossamer-threads.com/lists/openssh/bugs/55836
Note: DES encryption isn't the best, but it's better than cleartext. I did look through the openssl headers/libs for an AES_crypt or 3DES_crypt but couldn;t find anything
static compile... 'No such file or directory" error
Excellent guide -- wolfdude & serasihay thank-you. I'm new to andriod and was clueless on how to do this.
I have the dbclient running, but only if I compile without the STATIC=1. Whenever I use static I get an "sh: ./dbclient: No such file or directory" error immediately upon execution. Any idea why this is happening?
I'm using a Motorola Moto G (the new Moto G sometimes called the Moto G2). As the non-static is quite a bit smaller and seems to run okay I'm wondering if not using static will bomb on other devices and I'm just lucky with the Moto G.
Hi,
No idea why you can't compile it as static... but if the dynamic executable works for you then it should be ok.
Cheers.
I have tried to compile dropbear with both patches. But everytime it shows ::
gcc -I./libtomcrypt/src/headers/ -I. -I. -Os -W -Wall -Wno-pointer-sign -DDROPBEAR_SERVER -DDROPBEAR_CLIENT -DDBMULTI_dropbear -DDBMULTI_dbclient -DDBMULTI_dropbearkey -DDBMULTI_dropbearconvert -DDBMULTI_scp -DDROPBEAR_MULTI -c -o netbsd_getpass.o netbsd_getpass.c
netbsd_getpass.c: In function 'getpass':
netbsd_getpass.c:68:18: error: '_PASSWORD_LEN' undeclared (first use in this function)
netbsd_getpass.c:68:18: note: each undeclared identifier is reported only once for each function it appears in
netbsd_getpass.c:68:14: warning: unused variable 'buf' [-Wunused-variable]
netbsd_getpass.c:114:1: warning: control reaches end of non-void function [-Wreturn-type]
make: *** [netbsd_getpass.o] Error 1
Click to expand...
Click to collapse

DOOGEE X3 MTK6580 Dual SIM Android 5.1 Smartphone 4.5 Inch 1GB 8GB 5MP Camera

Here the link to the newest roms for the doogee x3
www.needrom.com/category/doogee/x3-doogee/
I am using linux and use the sp flash tool with wine with looks good so far,i have to study it first before starting,but i want to start the thread already.
first problem is unpacking the rar file ..... syntax error nearby unexpected symbol 'newline' after the command #unrar e <DOOGEE-X3-6.0.rar >solved,installing unrar and reboot system(!)...
second problem rooting phone after installing ...BETA-SuperSU-v2.50.zip... recovery said installation aborted...
Than smart phone flash tool wont recognice the doogee x3...
phone is connected through usb and connected as usb storage...(i am googling for advice...)
thanks for some advice
(SOLVED see post from 9okt)rooting DOOGEE X3
After putting BETA-SuperSU-v2.50.zip. on my sdcard i went in recovery mode,volume up and power button pressed, than choosed update system by sdcard,pressed power button,choose BETA-SuperSU-v2.50.zip and pressed power button.... recovery said installation aborted..
what to do...
thanks for some advice
after flashing the recovery i got the following result...
a red line(download DA 100%) and an popup telling ERROR: S_ TIMEOUT (1042)
on the terminal....
[[email protected] SP_Flash_Tool_exe_Linux_v5.1632.00.100]# ./flash_tool.sh
QGtkStyle was unable to detect the current GTK+ theme.
Qt: Session management error: None of the authentication protocols specified are supported
QMetaObject::connectSlotsByName: No matching signal for on_pushButton_browser_clicked()
QThread::setPriority: Cannot set priority, thread is not running
"07-30-2016"
QObject::moveToThread: Cannot move objects with a parent
Connecting to BROM...
Scanning USB port...
Search usb, timeout set as 3600000 ms
[email protected]/devices/pci0000:00/0000:00:13.2/usb2/2-5
[email protected]/devices/pci0000:00/0000:00:13.2/usb2/2-5/2-5:1.0
[email protected]/devices/pci0000:00/0000:00:13.2/usb2/2-5/2-5:1.1
[email protected]/devices/pci0000:00/0000:00:13.2/usb2/2-5/2-5:1.1/tty/ttyACM0
vid is 0e8d
device vid = 0e8d
pid is 2000
device pid = 2000
com portName is: /dev/ttyACM0
Total wait time = -1472583651.000000
USB port is obtained. path name(/dev/ttyACM0), port name(/dev/ttyACM0)
USB port detected: /dev/ttyACM0
BROM connected
Downloading & Connecting to DA...
connect DA end stage: 2, enable DRAM in 1st DA: 0
COM port is open. Trying to sync with the target...
Failed to Connect DA: S_TIMEOUT
Disconnect!
BROM Exception! ( ERROR : S_TIMEOUT (1042)
[HINT]:
)((ConnectDA,../../../flashtool/Conn/Connection.cpp,131))
thanks for some advice...
connecting not as root but as user after setting gtk theme in user dir
Connecting to BROM...
Scanning USB port...
Search usb, timeout set as 3600000 ms
[email protected]/devices/pci0000:00/0000:00:12.2/usb1/1-4
[email protected]/devices/pci0000:00/0000:00:12.2/usb1/1-4/1-4:1.0
[email protected]/devices/pci0000:00/0000:00:12.2/usb1/1-4/1-4:1.1
[email protected]/devices/pci0000:00/0000:00:12.2/usb1/1-4/1-4:1.1/tty/ttyACM0
vid is 0e8d
device vid = 0e8d
pid is 2000
device pid = 2000
com portName is: /dev/ttyACM0
Total wait time = -1472900250.000000
USB port is obtained. path name(/dev/ttyACM0), port name(/dev/ttyACM0)
USB port detected: /dev/ttyACM0
Connect BROM failed: S_COM_PORT_OPEN_FAIL
Disconnect!
BROM Exception! ( ERROR : S_COM_PORT_OPEN_FAIL (1013)
[COM] Failed to open COM port.
[HINT]:
)((ConnectBROM,../../../flashtool/Conn/Connection.cpp,85))
solved,i installed ubuntu followed al the instructions put the flashtool on upgrade connectthe phone and android 6.0 was installed after a few minutes.
devrieshh said:
solved,i installed ubuntu followed al the instructions put the flashtool on upgrade connectthe phone and android 6.0 was installed after a few minutes.
Click to expand...
Click to collapse
I made it in Windows yesterday successfully. There is also a way to flash TWRP on Doogee X3 running Android 6.0.
Look here: http://4pda.ru/forum/index.php?showtopic=713470&st=100#entry51434308
The Problem is, I don't understand russian and I even can't type it. Also the Captcha is a major problem. I think there is an account needed to be able to download the board attachments. Otherwise "404" error. Could anyone Download TWRP for Android 6.0 from this site + the scatter file there ? Would be awesome :highfive:
EDIT: I got it and already installed it. it works ! twrp on doogee x3 running android 6.0. just flash it with sp flash tool. you know how if you had flashed 6.0 already
link: http://www18.zippyshare.com/v/yAM5FXOt/file.html
have fun
EDIT: don't try to root it. doesn't work. neither supersu, kingo root nor kingroot. i tried it and my nvram was corrupt after trying with supersu. had to flash back imei and wifi mac address. i'm back on android 5.1 for this device.
Flashing didnt work,it said coudnt find files or path wasnt right,a red line...
after a wile the flash window got black and wite got frosen,i closed it started to reload and then the flash window didnt showed up and the message in the therminal was ...
:~/Desktop/SP_Flash_Tool_exe_Linux_v5.1520.00.100$ ./flash_tool.sh
QGtkStyle was unable to detect the current GTK+ theme.
QObject::moveToThread: Cannot move objects with a parent
so i dont know what to do now for the moment
solved,reinstalled ubuntu.. flashed TWRP_3.0.2_Doogee-X3_Android-6.0.zip
Ok i managed to root our doogee X3,tryed it with an old root tool used with my samsung gio,flashed with the TWRP 3.0.2.
SOLVED (file is already .img ,not .dat) trying to port cm-13.0-20160817-UNOFFICIAL-TECNO W4-nana (MTK 6580) i got a problem after the ./sdat2img.py command .../S2603_DG_A42_PUBLIC_M_V0.2.8_S160628$ sudo ./sdat2img.py system.transfer.list system.new.dat sys
tem.img
Traceback (most recent call last):
File "./sdat2img.py", line 131, in <module>
main(sys.argv)
File "./sdat2img.py", line 75, in main
version, new_blocks, commands = parse_transfer_list_file(TRANSFER_LIST_FILE)
File "./sdat2img.py", line 43, in parse_transfer_list_file
trans_list = open(TRANSFER_LIST_FILE, 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'system.transfer.list'
anybody know what to do...
doing the same with the cm 13 rom...
/cm-13.0-20160817-UNOFFICIAL-TECNO W4-nana$ sudo ./sdat2img.py cm-13.0-20160817-UNOFFICIAL-TECNO
%20W4-nana .transfer.list system.new.dat system.img
Traceback (most recent call last):
File "./sdat2img.py", line 131, in <module>
main(sys.argv)
File "./sdat2img.py", line 75, in main
version, new_blocks, commands = parse_transfer_list_file(TRANSFER_LIST_FILE)
File "./sdat2img.py", line 43, in parse_transfer_list_file
trans_list = open(TRANSFER_LIST_FILE, 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'cm-13.0-20160817-UNOFFICIAL-TECNO%20W4-nana'
devrieshh said:
Ok i managed to root our doogee X3,tryed it with an old root tool used with my samsung gio,flashed with the TWRP 3.0.2.
Click to expand...
Click to collapse
[at first for everyone to know: it affects Android 6.0 for the Doogee X3. Android 5.1 is no problem.]
root checker told me my device is rooted after I flashed your zip. The problem I experienced was, I got no asking for root triggered by any app which uses root permission. And also when I try to update SuperSU binary inside the app it tells me there is no "su data" and it couldn't update it. I think to get a flawless root permission it would take a while
SOLVED $mkdir working and than.... $ sudo mount -t ext4 -o loop /img-tools/sys.raw working/
so i did succeed to format the system.img to sys.raw but after trying to mount the sys.raw image i got the following response after the in the tortual suggested command
Am I right that you are already working in the directory "/img-tools" and want to mount the sys.raw file in it ? So then, if you determine to mount "/img-tools/sys.raw" that this could be interpreted as mount "/img-tools/img-tools/sys.raw", a directory that doesn't exist ?
Or am I seeing something wrong ?
i have compiled the system.img file to sys.raw and i want the sys.raw folder so that you can swich framework,apps and other folders with roms to port
i want to have the outcom from the sys.raw ext4 file mounted in the /base home/working folder..
see .http://forum.xda-developers.com/chef-central/android/guide-how-to-port-lollipop-marshmallow-t3283452
mounting system.img should do the job ,so you do not have to format it to sys.raw.
i made a map working in the img-tools map,but with the command below i got ...mount point working/ does not exist
base home/img-tools$ sudo mount -t ext4 -o loop system.img working/
mount: mount point working/ does not exist
devrieshh said:
i have compiled the system.img file to sys.raw and i want the sys.raw folder so that you can swich framework,apps and other folders with roms to port
i want to have the outcom from the sys.raw ext4 file mounted in the /base home/working folder..
see .http://forum.xda-developers.com/chef-central/android/guide-how-to-port-lollipop-marshmallow-t3283452
mounting system.img should do the job ,so you do not have to format it to sys.raw.
i made a map working in the img-tools map,but with the command below i got ...mount point working/ does not exist
base home/img-tools$ sudo mount -t ext4 -o loop system.img working/
mount: mount point working/ does not exist
Click to expand...
Click to collapse
I'm more familiar with DOS. But the principle should be the same.
i will try to understand the link you posted...will keep you informed
EDIT: if i'm right, then you are inside the "img-tools" folder and trying with this command to mount system.img to a folder named "working" in it.
e.g.: /base home/img-tools/working
but you want to mount it to the folder /base home/working, right ?
so you have to type it in another way. try: sudo mount -t ext4 -o loop system.img /base home/working/
I'm not sure what Linux expect. maybe the slash before "base home" in my example is not needed.
fixt it http://stackoverflow.com/questions/8663891/how-to-mount-the-android-img-file-under-linux
/Downloads/doogee x3 porting/base/base home/img-tools$ mkdir sys
[email protected]:~/Downloads/doogee x3 porting/base/base home/img-tools$ sudo mount -t ext4 -o loop sys.raw sys/
[email protected]:~/Downloads/doogee x3 porting/base/base home/img-tools$
i had to use my sys.raw file and make a sys map with ...mkdir sys ... command
How to convert .img to .raw... download img-tools extract it in a folder (http://forum.xda-developers.com/chef-central/android/guide-how-to-port-lollipop-marshmallow-t3283452) put the system.img from base rom with it and run the command... ./simg2img system.img sys.raw
I sat the whole night to find any supersu which roots flawless our doogee x3 on android 6.0. and i found it ! i flashed, installed, reflashed about hundred of times another supersu version by version downwards. it's the version 2.61 which works properly ! and yes, you can still use the playstore update of supersu + binary update inside the app without losing root or getting a boot stuck. see linked zip for working supersu you'll better save it safely
http://www89.zippyshare.com/v/iUH99ub0/file.html
EDIT: I'm not sure it could be important, but I kept the system partition as read only as I installed SuperSU. Maybe you want to do it also.
i bought a doogee x5 so i am no longer active in this forum

Kotlin app can't find file even though it exists

I'm working on a Kotlin app where I need to access the Cookies file located at /data/data/com.android.chrome/app_chrome/Default/Cookies. However, when I try to access the file, I get a "file not found" error, even though the file definitely exists at that location.
I've double-checked the file path and made sure there are no typos (I can see the file with adb shell and Amaze File Manager), and I've also checked that the app has permission to access the file (app has root permissions).
First I was trying to open and read the file directly and I got the error:
CODE at https://stackoverflow.com/questions/76064385/kotlin-app-cant-find-file-even-though-it-exists
I though maybe Chrome was running so I couldn't open the file directly so I tried copying it to a temp folder and reading that:
CODE at https://stackoverflow.com/questions/76064385/kotlin-app-cant-find-file-even-though-it-exists
But that still fails:
CODE at https://stackoverflow.com/questions/76064385/kotlin-app-cant-find-file-even-though-it-exists
Is there anything else I can try to troubleshoot this issue?
Something in the code triggers cloudflare and blocks me from posting
Code:
Sorry, you have been blocked
You are unable to access xda-developers.com
Why have I been blocked?
This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution. There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.
What can I do to resolve this?
You can email the site owner to let them know you were blocked. Please include what you were doing when this page came up and the Cloudflare Ray ID found at the bottom of this page.
Cloudflare Ray ID: 7badda7c6b9486c6 • Your IP: Click to reveal • Performance & security by Cloudflare
SQLite definitely won't open the file. So, your decision to copy it was right.
Firstly, try to split the single command string into an array.
The documentation for ProcessBuilder class has an example:
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
Or try to use SuFile from the libsu, for example:
AndroidIDeditor/Util.java at 6a62bac0e3e63502e9a7b538217f65189ff85fa4 · sdex/AndroidIDeditor
Android Device ID changer. Contribute to sdex/AndroidIDeditor development by creating an account on GitHub.
github.com
lioce said:
SQLite definitely won't open the file. So, your decision to copy it was right.
Firstly, try to split the single command string into an array.
The documentation for ProcessBuilder class has an example:
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
Or try to use SuFile from the libsu, for example:
AndroidIDeditor/Util.java at 6a62bac0e3e63502e9a7b538217f65189ff85fa4 · sdex/AndroidIDeditor
Android Device ID changer. Contribute to sdex/AndroidIDeditor development by creating an account on GitHub.
github.com
Click to expand...
Click to collapse
Seems like not even like that can I read the Cookies file from Chrome
Code:
fun copyFile(source: String, destination: String) {
Log.d("CookieSwapLogger", "copyFile '$source' to '$destination'")
val sourceFile = SuFile(source)
if (sourceFile.exists()) {
Log.d("CookieSwapLogger", "sourceFile.exists")
} else {
Log.d("CookieSwapLogger", "sourceFile.notExists")
}
---------------
2023-04-21 18:20:47.440 6347-6347 CookieSwapLogger com.david.cookieswapper D copyFile '/data/data/com.android.chrome/app_chrome/Default/Cookies' to '/data/user/0/com.david.cookieswapper/app_temp/Cookies'
2023-04-21 18:20:47.492 6347-6347 CookieSwapLogger com.david.cookieswapper D sourceFile.notExists

Categories

Resources