[*] Emulating binary name: pppd
[*] Emulator used: qemu-mipsel
[*] Using root directory: /logs/s115_usermode_emulator/firmware/unblob_extracted/firmware_extract/DIR-600_fw_revb5_214b01_ALL_de_20130122/dir600b_v2.14_d1mg.bin_extract/1179788-3612812.squashfs_v4_le_extract (1/1)
[*] Using CPU config: NONE
[*] Emulating binary: /usr/sbin/pppd
[*] Emulating binary ./usr/sbin/pppd with parameter NONE
[*] Emulating binary ./usr/sbin/pppd with parameter -v
./usr/sbin/pppd: unrecognized option 'NONE'
pppd version 2.4.2b3
Usage: ./usr/sbin/pppd [ options ], where options are:
<device> Communicate over the named device
<speed> Set the baud rate to <speed>
<loc>:<rem> Set the local and/or remote interface IP
addresses. Either one may be omitted.
asyncmap <n> Set the desired async map to hex <n>
auth Require authentication from peer
connect <p> Invoke shell command <p> to set up the serial line
crtscts Use hardware RTS/CTS flow control
defaultroute Add default route through interface
file <f> Take options from file <f>
modem Use modem control lines
mru <n> Set MRU value to <n> for negotiation
See pppd(8) for more options.
[*] Emulating binary ./usr/sbin/pppd with parameter -V
./usr/sbin/pppd: unrecognized option '-v'
pppd version 2.4.2b3
Usage: ./usr/sbin/pppd [ options ], where options are:
<device> Communicate over the named device
<speed> Set the baud rate to <speed>
<loc>:<rem> Set the local and/or remote interface IP
addresses. Either one may be omitted.
asyncmap <n> Set the desired async map to hex <n>
auth Require authentication from peer
connect <p> Invoke shell command <p> to set up the serial line
crtscts Use hardware RTS/CTS flow control
defaultroute Add default route through interface
file <f> Take options from file <f>
modem Use modem control lines
mru <n> Set MRU value to <n> for negotiation
See pppd(8) for more options.
[*] Emulating binary ./usr/sbin/pppd with parameter -h
./usr/sbin/pppd: unrecognized option '-V'
pppd version 2.4.2b3
Usage: ./usr/sbin/pppd [ options ], where options are:
<device> Communicate over the named device
<speed> Set the baud rate to <speed>
<loc>:<rem> Set the local and/or remote interface IP
addresses. Either one may be omitted.
asyncmap <n> Set the desired async map to hex <n>
auth Require authentication from peer
connect <p> Invoke shell command <p> to set up the serial line
crtscts Use hardware RTS/CTS flow control
defaultroute Add default route through interface
file <f> Take options from file <f>
modem Use modem control lines
mru <n> Set MRU value to <n> for negotiation
See pppd(8) for more options.
[*] Emulating binary ./usr/sbin/pppd with parameter -help
pppd version 2.4.2b3
Usage: ./usr/sbin/pppd [ options ], where options are:
<device> Communicate over the named device
<speed> Set the baud rate to <speed>
<loc>:<rem> Set the local and/or remote interface IP
addresses. Either one may be omitted.
asyncmap <n> Set the desired async map to hex <n>
auth Require authentication from peer
connect <p> Invoke shell command <p> to set up the serial line
crtscts Use hardware RTS/CTS flow control
defaultroute Add default route through interface
file <f> Take options from file <f>
modem Use modem control lines
mru <n> Set MRU value to <n> for negotiation
See pppd(8) for more options.
[*] Emulating binary ./usr/sbin/pppd with parameter --help
./usr/sbin/pppd: unrecognized option '-help'
pppd version 2.4.2b3
Usage: ./usr/sbin/pppd [ options ], where options are:
<device> Communicate over the named device
<speed> Set the baud rate to <speed>
<loc>:<rem> Set the local and/or remote interface IP
addresses. Either one may be omitted.
asyncmap <n> Set the desired async map to hex <n>
auth Require authentication from peer
connect <p> Invoke shell command <p> to set up the serial line
crtscts Use hardware RTS/CTS flow control
defaultroute Add default route through interface
file <f> Take options from file <f>
modem Use modem control lines
mru <n> Set MRU value to <n> for negotiation
See pppd(8) for more options.
[*] Emulating binary ./usr/sbin/pppd with parameter --version
pppd version 2.4.2b3
Usage: ./usr/sbin/pppd [ options ], where options are:
<device> Communicate over the named device
<speed> Set the baud rate to <speed>
<loc>:<rem> Set the local and/or remote interface IP
addresses. Either one may be omitted.
asyncmap <n> Set the desired async map to hex <n>
auth Require authentication from peer
connect <p> Invoke shell command <p> to set up the serial line
crtscts Use hardware RTS/CTS flow control
defaultroute Add default route through interface
file <f> Take options from file <f>
modem Use modem control lines
mru <n> Set MRU value to <n> for negotiation
See pppd(8) for more options.
[*] Emulating binary ./usr/sbin/pppd with parameter version
pppd version 2.4.2b3
./usr/sbin/pppd: unrecognized option 'version'
pppd version 2.4.2b3
Usage: ./usr/sbin/pppd [ options ], where options are:
<device> Communicate over the named device
<speed> Set the baud rate to <speed>
<loc>:<rem> Set the local and/or remote interface IP
addresses. Either one may be omitted.
asyncmap <n> Set the desired async map to hex <n>
auth Require authentication from peer
connect <p> Invoke shell command <p> to set up the serial line
crtscts Use hardware RTS/CTS flow control
defaultroute Add default route through interface
file <f> Take options from file <f>
modem Use modem control lines
mru <n> Set MRU value to <n> for negotiation
See pppd(8) for more options.
For reproducing the EMBA user-mode emulation mechanism, the following commands could be used as starting point:
- Start EMBA docker container with the firmware directory as log directory:
# EMBA="." FIRMWARE="/home/runner/work/emba/emba/DIR-600_fw_revb5_214b01_ALL_de_20130122.zip" LOG="/absolute/path/to/EMBA/log/directory" docker-compose run emba
- Change your working directory to the root directory of your firmware:
# cd /logs/s115_usermode_emulator/firmware/unblob_extracted/firmware_extract/DIR-600_fw_revb5_214b01_ALL_de_20130122/dir600b_v2.14_d1mg.bin_extract/1179788-3612812.squashfs_v4_le_extract
- Copy the static compiled user-mode emulator to your current working directory
# cp $(which qemu-mipsel) .
- Start the emulation with the following command:
# jchroot . -- ./qemu-mipsel ./usr/sbin/pppd <parameters like -v or --help>
WARNING: EMBA is doing some more magic in the background. Probably it is not that easy, but give it a try.