Tag Archives: suckup-de

SSH-Server auf deinem Android (CyanogenMod)

In dem “CyanogenMod” (CM) ist bereits ein SSH-Server eingebaut (Dropbear), dieser ist jedoch standardmäßig abgeschaltet. Hier zeige ich kurz wie du diesen unter Linux / Windows nutzen kannst und dich somit ohne Kabel mit deinem Android (funktioniert nach meinen Tests, nur im lokalen W-Lan) verbinden kannst …  ;-)

 

1.) Android: Vorbereitungen

adb shell

(adb shell)

mkdir /data/dropbear
cd /data/dropbear
dropbearkey -t dss -f dropbear_dss_host_key
dropbearkey -t rsa -f dropbear_rsa_host_key

 

2.1) Linux: Vorbereitungen (Debian / Ubuntu)

2.1.1) Installiere den SSH-Client

sudo aptitude install ssh-client

2.1.2) SSH-Schlüssel generieren

ssh-keygen -t rsa

2.1.3) Übertrage den SSH-Schlüssel (öffentlich / public) zu Android

adb push ~/.ssh/id_rsa.pub /data/dropbear/.ssh/authorized_keys

 

2.2) Windows: Vorbereitungen
PuTTY Download Page

2.2.1) Download “PuTTYgen”

2.2.2) SSH-Schlüssel generieren

Klick auf “Generate” und füge die Zeichenkette, welche du nun im Fenster von puttygen siehst (Beispiel: “ssh-rsa AAAAB3…hclQ==rsa-key-20100227″) in eine Text-Datei auf deinem Desktop ein -> “id_rsa.pub” und speichere (beschütze) deinen “private key”!!!

2.2.3) Übertrage den SSH-Schlüssel (öffentlich / public) zu Android

adb push  C:\Users\[USER]\Desktop\id_rsa.pub /data/dropbear/.ssh/authorized_keys

 

3.) Android: SSH-Server aktivieren

adb shell

(adb shell)

chmod 600 /data/dropbear/.ssh/authorized_keys
echo "/system/xbin/busybox sh" > /data/dropbear/.profile
chmod 755 /data/dropbear /data/dropbear/.ssh
chmod 644 /data/dropbear/dropbear*host_key
chown root.root /data/dropbear/.ssh/authorized_keys
killall dropbear
dropbear -v -s -g

 

4.1) Linux: Verbindung herstellen

-> SSH mit public-key Authentifizierung

 

4.2) Windows: Verbindung herstellen

PuTTY Download Page

4.2.1) Download “putty”

4.2.2) Verbindung zu Android aufbauen

Connection: > “SSH” > “Auth” > wähle deinen gespeicherten “private key” aus …

Session: > gib die IP-Adresse von deinem Android ein und drücke auf Enter

 

 

weitere Infos findest du hier:
Howto: Connect to Device with SSH – CyanogenMod Wiki

1 Star2 Stars3 Stars4 Stars5 Stars (6 votes, average: 4.83 out of 5)

Optimized Android-Apps mit Linux erstellen

Ich habe meine apps mit dem folgenden Bash-Skript optimiert, welches die Bild- & Sound-Dateien komprimiert, so dass die Apps kleiner werden und weniger Speicher verbrauchen… :-)

Habe die optimierten Apps zu meinem Update-Pack für Spica hinzugefügt -> cyanogenmod + x

 

1.) Bash-Skript in einer Textdatei unter Linux speichern (Tweak_app.sh) & Ausführrechte setzen (chmod +x Tweak_app.sh)

2.) “optipng”, “pngcrush”, “sox” installieren (z.B. für Debian: apt-get install optipng pngcrush sox)

3.) android-sdk herunterladen & sudo cp …..android-sdk/android-sdk/zipalign /usr/bin/

4.) Folgendes Verzeichnis anlegen und zu optimierende Apps darin speichern (./place-apk-here-to-batch-optimize/)

5.) Tweak-Skript ausführen (./Tweak_app.sh) -> Fertig


#!/bin/bash

LOG_FILE="apk.log"

if [ \! -f `whereis optipng | cut -f 2 -d ' '` ] ; then
	echo "ERROR: install optipng (apt-get install optipng)"
	exit 1;
fi;
if [ \! -f `whereis pngcrush | cut -f 2 -d ' '` ] ; then
	echo "ERROR: install pngcrush (apt-get install pngcrush)"
	exit 1;
fi;
if [ \! -f `whereis sox | cut -f 2 -d ' '` ] ; then
	echo "ERROR: install sox (apt-get install sox)"
	exit 1;
fi;
if [ \! -f `whereis zipalign | cut -f 2 -d ' '` ] ; then
	echo "ERROR: install zipalign (sudo cp ...android-sdk/android-sdk/zipalign /usr/bin/)"
	exit 1;
fi;	

rm -rf ./place-apk-here-to-batch-optimize/original/*
if [ -e $LOG_FILE ]; then
	rm $LOG_FILE;
fi;
touch $LOG_FILE
mkdir -p ./place-apk-here-to-batch-optimize/original
find ./place-apk-here-to-batch-optimize -iname "*.apk" | while read APK_FILE ;
do
	echo "Optimizing $APK_FILE"
	7za x -o"./place-apk-here-to-batch-optimize/original" $APK_FILE
	find ./place-apk-here-to-batch-optimize/original -iname "*.png" | while read PNG_FILE ;
		do
		if [ `echo "$PNG_FILE" | grep -c "\.9\.png$"` -eq 0 ] ; then
			optipng -o99 "$PNG_FILE"
			pngcrush -rem alla -reduce -brute "$PNG_FILE" tmp_img_file.png;
			mv -f tmp_img_file.png $PNG_FILE;
		fi
	done;
	find ./place-apk-here-to-batch-optimize/original -iname "*.ogg" | while read OGG_FILE ;
		do
        	sox "$OGG_FILE" -C 0 tmp_audio_file.ogg
        	mv -f tmp_audio_file.ogg $OGG_FILE
    	done;
	7za a -tzip "./place-apk-here-to-batch-optimize/temp.zip" ./place-apk-here-to-batch-optimize/original/* -mx9
	FILE=`basename "$APK_FILE"`
	DIR=`dirname "$APK_FILE"`
	mv -f ./place-apk-here-to-batch-optimize/temp.zip "$DIR/optimized-$FILE"
	zipalign -v -c 4 "$DIR/optimized-$FILE";
	ZIPCHECK=$?;
	if [ $ZIPCHECK -eq 1 ]; then
		echo "ERROR $FILE" >> $LOG_FILE;
		#rm "$DIR/optimized-$FILE"
	elif [ $ZIPCHECK -eq 0 ]; then
		echo "OK $FILE" >> $LOG_FILE;
	else
		echo "ERROR $FILE" >> $LOG_FILE;
		#rm "$DIR/optimized-$FILE"
	fi;
	rm -rf ./place-apk-here-to-batch-optimize/original/*
done;
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

C-Programm – String (char) kopieren

Hier einige Möglichkeiten, einen String zu kopieren … :-)

#include <stdio.h>
#include <string.h>

/* --- 1. strcpy mit Arrays --- */
char *strcpy1(char ziel[], const char quelle[]) {
    int zahl = 0;
    // solange Zeichen von der Quelle vorhanden sind,
    // also quelle[zahl] ungleich 0 ist ...
    // (letztes Zeichen eines Strings ist immer \0 -> =0 -> false)
    while(quelle[zahl]) {
    // der Buchstabe aus dem Quell-Array wird
    // an die selbe Stelle ([zahl]) im Ziel-Array geschrieben
        ziel[zahl] = quelle[zahl];
    // zahl wird um 1 erhöht (zahl=zahl+1)-> nächster Buchstabe
        zahl++;
    }
    // der neue Sting wird abgeschlossen
    ziel[zahl] = '\0';
    return(ziel);
}

/* --- 2. strcpy mit Arrays --- */
char *strcpy2(char ziel[], const char quelle[]) {
    int zahl = 0;
    // solange der Buchstabe aus dem Quell-Array an die selbe Stelle ([zahl])
    // im Ziel-Array geschrieben werden kann, also quelle[zahl] ungleich 0 ist ...
    // (letztes Zeichen eines Strings ist immer \0 -> =0 -> false)
    while((ziel[zahl] = quelle[zahl]))
    // zahl wird um 1 erhöht (zahl=zahl+1) -> nächster Buchstabe
        zahl++;
    return(ziel);
}

/* --- 3. strcpy mit Zeigern --- */
char *strcpy3(char *ziel, const char *quelle) {
    // solange der Buchstabe vom Quell-Zeiger auf die selbe Stelle
    // vom Ziel-Zeiger zeigt ...
    // (letztes Zeichen eines Strings ist immer \0 -> =0 -> false)
    while((*ziel = *quelle)) {
    // Zeiger um einen erhöhen -> nächste Speicherstelle -> nächster Buchstabe 
        ziel++;
        quelle++;
    }
    return(ziel);
}

/* --- 4. strcpy mit Zeigern --- */
char *strcpy4(char *ziel, const char *quelle) {
    // solange der Buchstabe vom Quell-Zeiger auf die selbe Stelle
    // vom Ziel-Zeiger zeigt, so werden diese jedesmal um 1 erhöht ...
    // (letztes Zeichen eines Strings ist immer \0 -> =0 -> false)
    while((*ziel++ = *quelle++));
    return(ziel);
}


int main(void) {
    char *gruss = "Hallo Welt";
    char gruss1[100];
    char gruss2[100];
    char gruss3[100];
    char gruss4[100];
    char gruss5[100];

/* --- 1. strcpy mit Arrays --- */
    strcpy1(gruss1, gruss);
    printf("%s\n", gruss1);
/* --- 2. strcpy mit Arrays --- */
    strcpy2(gruss2, gruss);
    printf("%s\n", gruss2);
/* --- 3. strcpy mit Zeigern --- */
    strcpy3(gruss3, gruss);
    printf("%s\n", gruss3);
/* --- 4. strcpy mit Zeigern --- */
    strcpy4(gruss4, gruss);
    printf("%s\n", gruss4);
/* --- 5. strcpy -> <string.h> --- */
    strcpy(gruss5, gruss);
    printf("%s\n", gruss5);

    return(0);
}
1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)