Sometime ago I said I was going to attempt an Android project.
I got my phone for XMAS and after installing a terminal program I realised how limited the command line is.
I do NOT intend to __root__ the phone at this point but I can read and write to certain folders.
The biggest problem is the vast majority of the commands are missing - OUCH!
awk, printf, sed, hexdump, xxd, od, and many many others we take for granted are not available...
I DO have a subset of builtins of which echo -n -e -E is but one.
The terminal program has a large subset of the terminal escape codes so this is a bonus.
This set me on a quest to start my own commands using what I have got to play with.
This DEMO hex dumper for example is a starter.
This is as bizarre as shell scripting can possibly get.
It is SSLLOOWW but gives me the ability to read in small amounts of binary data for ideas in my head.
I have no idea yet whether this works on my phone but I will let you all know in due course.
The phones's default shell [sh] is bash...
** My question is can this be speeded up as it takes around a minute or so to read a random 256 byte file on this MBP. **
This DEMO works like this:-
1) 256 single byte files are generated from 0x00 to 0xFF named as 00.HEX to FF.HEX.
2) $1 is the full path and filename required for viewing.
3) The file $1 is read byte by byte and compared against the single byte files cat(ted) using a brute force method.
4) With the exception of two values, NULL and NEWLINE, these binary values are are printed onto STDOUT only for this DEMO.
5) Read the code for NULL and NEWLINE.
6) The HEX values are extracted from the filenames, NOT, the bytes themselves... <wink>
This was the only way I could think of to get binary into my machine with a small subset of the shell command available...
There is nothing on the net about this... ;o/
LBNL the first display is a random file generated to show it works in binary mode and the second is a hexdump of itself.
Note that hexdump is there for comparison only...
Results, edited to __remove__ the ultra long string created:-
This User Gave Thanks to wisecracker For This Post:
I'm quite confused that the 'difficult', as in structured, output is printed increadible fast, where as the 'long single string' takes that long.
I tried a bit and.. well you not gonna like it...
I actualy just commented out all your translating, so the script ends alot faster.
What i do not understand is, how do you get it formated in the first place?
Is that read doing it?
Not sure if this could be displayed on a moblie phone display.
Not quite sure what you are doing as a newline character is difficult to __read__ using read.
Binary 0, (zero), is another difficult task along with tab and space. Tab and space are relatively easy but binary 0x00 and 0x0A using echo was NOT at all easy. It IS now though... ;oD
With the printf command things become relatively simple and binary can be read into HEX values with relative ease.
BUT, and this is a big but, echo is a different animal when printf does NOT exist.
The echo commands ARE needed to transfer trenslated data into say another file or into a variable. Translating a binary file to HEX is seriously difficult using just the echo command so brute force was really the only way using part of the filenames as the HEX value, by comparing the real binaries against the contents of these filenames... <wink>
I am still technically a novice at shell scripting but my pet love is handling pure binary and banging the metal and I consider myself semi-pro at this level.
This was promoted from beginners to advanced by one of the big guns on here and might be worth a read about binary 0x00:-
LBNL the first display is a random file generated to show it works in binary mode and the second is a hexdump of itself.
Note that hexdump is there for comparison only...
hexdump inside the code is there purely to prove that the HEX created but the complex code is the same by comparing each value...
Android does NOT have the od, xxd or hexdump hex dumpers and hexdump inside this DEMO instance needs to be removed. Remember it is purely for comparison purposes.
As it stands it is purely a DEMO to show that binary can be read using what Android has as default...
As I said it IS SLOW but does what it says on the tin...
I only need to read a single byte for my usage and this works just fine.
Next is to make it pipe-able, have switches to display like hexdump -C filename ...
Dunno if any of this is possible for Android but I am willing to try... <wink>
This is the finished hex dumper for my new Android phone and it is running just great.
Believe it or not it is marginally quicker than the OSX version... <shock>
The absolute address(es) I had to create manually...
ENVARC is this file too...
Note that TMPDIR does not exist in Android so why not use it... ;o)
Also tr and dos2unix do not exist either so this is another tool for the phone generated from minimal Android tools...
This is a dos2unix work-alike...
Hi guys...
I haven't done any real Python code since I started messing with Shell Scripting in January 2012 when I started AudioScope.
Well I fished a little project out of my ANCIENT AMIGA files which created a raw hexdump of any binary file within reason for a stock A1200(HD).
Well... (0 Replies)
Hi guys,
Been messing around with shell programming for a couple of days and I found something that was pretty odd in the behavior of the echo command. Below is an example-:
When I type the following in my /home directory from my lxterminal in Debian-:
echo "`ls -l`"
I get the... (2 Replies)
I came across and unexpected behavior with redirections in tcsh. I know, csh is not best for redirections, but I'd like to understand what is happening here.
I have following script (called out_to_streams.csh):
#!/bin/tcsh -f
echo Redirected to STDOUT > /dev/stdout
echo Redirected to... (2 Replies)
echo `echo ` doesn't echoes anything. And it's logic. But
echo `echo `echo ` ` does echoes "echo". What's the logic of it? the `echo `echo ` inside of the whole (first) echo, echoes nothing, so the first echo have to echo nothing but echoes "echo"
(too much echoing :P):o (2 Replies)
Hi Guys,
I need to print a value in the same line , But when we use the echo instead the loops (while), the value goes to the next line..
Can you help me in this..
Thanks For your help in advance. (6 Replies)
Bit of a weird one i suppose, i want to use an echo inside an echo... For example...
i have a script that i want to use to take users input and create another script. Inside this script it creates it also needs to use echos...
echo "echo "hello"" >$file
echo "echo "goodbye"" >$file
... (3 Replies)
Hi All,
Need help in resoving the issue . Can anyone let me know how to get fix length using unix shellscript.
For Ex: echo "NUMBER OF RECORDS "${NO_OF_ROWS}"\nFILE CREATION DATE&TIME "${PROD_DT}"
output should be :
NUMBER OF RECORDS 2546
CREATIN DATE&TIME 2009-12-01
Each... (14 Replies)
So in my shell i execute:
{ while true; do echo string; sleep 1; done } | read line This waits one second and returns.
But
{ while true; do /bin/echo string; sleep 1; done } | read line continues to run, and doesn't stop until i kill it explicitly.
I have tried this in bash as well as zsh,... (2 Replies)
I tried echo ^[[r and it takes the cursor to first line in the telnet window...
and echo ^[[32m changes font color to green .... Also echo ^[[00ff takes cursor to first command line in the current window (Note : ^ is entered as Ctrl + V and first [ as Escape character)
Wud like to know how... (1 Reply)
Hi,
When I do /usr/ucb/echo "message \n" in bone shell program , \n never works as new line feeder. It just showed it as part of my message.
Is there something wrong with my system?
Thanks! (3 Replies)