Question Bash Script pour exécuter la commande dans la racine dans ADB Shell


J'essaie de vider les partitions des appareils Android avec netcat. J'ai créé 3 scripts bash pour supporter le processus. J'ai des problèmes sur la seconde qui consiste à décharger la partition spécifique via netcat. Sur la ligne de commande, je tapais les commandes suivantes:

  1. shell adb
  2. su
  3. (à la racine) dd if = / dev / block / mmcblk0 | / sdcard / nc -l -p 8888

Sur la base des commandes ci-dessus, j'ai essayé de créer un script bash avec des détails ci-dessous:

   #!/bin/bash
   adb shell "su
   dd if=/dev/block/mmcblk0 | /dev/examiner/nc -l -p 8888"

Mais le résultat est un fichier texte de taille nulle. J'ai essayé de changer le guillemet pour identifier la variable, mais le résultat était toujours le même.

Merci d'avance.


0
2017-08-27 11:50


origine


j'imagine /dev/examiner ses ncle chemin dans le système de fichiers Ubuntu? Cela expliquerait que - kos
Non. / Dev / examiner / nc est le chemin de l'application nc sur le périphérique Android. J'ai essayé de mettre le fichier nc dans la carte SD. Mais le résultat est toujours le même. - aph4nc
Ah, et de toute façon lire mieux la question n'aurait pas expliqué ça du tout. Cependant, je pense que le problème est que la commande est exécutée dans le non privilégié adb shell, et pas dans la coquille engendrée par su, ce qui conduit à l'exécution du tube sans privilèges root. Essayer adb shell "su -c 'dd if=/dev/block/mmcblk0 | /dev/examiner/nc -l -p 8888''' - kos
Ça marche! Merci mon compagnon! J'apprécie vraiment cela! - aph4nc
Heureux que cela a aidé :) Je vais faire une réponse à partir de mon commentaire alors, s'il vous plaît acceptez-le - kos


Réponses:


#!/bin/bash
adb shell "su
dd if=/dev/block/mmcblk0 | /dev/examiner/nc -l -p 8888"

Le problème est que de cette façon, le tuyau est exécuté dans le non privilégié adb shell, et non dans le shell racine généré par su; ceci conduit à l’exécution du tube sans privilèges root et au fichier de longueur 0 (probablement dû au if commande échouant à lire un périphérique bloc sans privilèges root).

Exécutez la commande directement dans le shell racine généré par su en utilisant su's -c option, qui permet d’exécuter une commande directement dans le shell généré:

#!/bin/bash
adb shell "su -c 'dd if=/dev/block/mmcblk0 | /dev/examiner/nc -l -p 8888'"

1
2017-08-27 13:01