Script Bash para executar o comando na raiz no shell ADB

0

Estou tentando despejar as partições de dispositivos Android com o netcat. Eu criei 3 scripts bash para apoiar o processo. Eu tenho problemas no segundo que para despejar a partição específica através do netcat. Na linha de comando eu costumava digitar os seguintes comandos:

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

Com base nos comandos acima, tentei criar um script básico com os detalhes abaixo:

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

Mas o resultado é um arquivo de texto com tamanho zero. Eu tentei alterar as aspas para identificar a variável, mas o resultado ainda era o mesmo.

Obrigado antecipadamente.

    
por aph4nc 27.08.2015 / 13:50

1 resposta

1

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

O problema é que desta forma o pipe é executado no shell adb não privilegiado, e não no shell raiz gerado por su ; isso faz com que o pipe seja executado sem privilégios de root e com o arquivo de tamanho 0 (provavelmente porque o comando if não consegue ler um dispositivo de bloco sem privilégios de root).

Execute o comando diretamente no shell raiz gerada por su usando a opção su , que permite executar um comando diretamente no shell gerado:

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