Excluí a resposta anterior porque era inadequada.
Aviso: eu tentei esta solução em uma imagem de openbox virtual (ATTITUDE ADJUSTMENT (12.9, r36088)), pode ser um pouco diferente no roteador.
Eu assumo que o arquivo de chave é / root / keyfile e que a cifra usada é aes-xts-plain. Você precisa alterar os valores de acordo com sua configuração.
Se você quiser, posso dizer como ativar as extensões luks no openwrt.
Supondo que seu sistema já suporta cryptsetup e todas as várias cifras, você tem que atuar no nível do hotplug, porque a implementação do cryptosetup do openwrt não parece suportar o / etc / crypttab (provavelmente deve ser recompilado a imagem de inicialização )
instale suporte para hotplug
root@OpenWrt:~# opkg install block-mount
abra o /etc/hotplug.d/usb/10-usb, no meu sistema o arquivo se parece com isto:
#!/bin/sh
# Copyright (C) 2009 OpenWrt.org
case "$ACTION" in
add)
# update LEDs
;;
remove)
# update LEDs
;;
esac
Eu editei o arquivo:
#!/bin/sh
# Copyright (C) 2009 OpenWrt.org
case "$ACTION" in
add)
# update LEDs
exec logger "PRD:" ${PRODUCT};
;;
remove)
# update LEDs
;;
esac
de um terminal conectado ao roteador, antes de inserir o disco, siga os registros:
root@OpenWrt:~# logread -f|grep PRD
Conecte o disco USB, você verá uma linha como:
Oct 29 10:43:48 OpenWrt user.notice root: PRD: 13fe/3600/100
Anote a sequência depois de PRD: ela é usada para identificar seu disco para descriptografar
Agora, o mecanismo hotplug primeiro chama os scripts localizados em /etc/hotplug.d/usb e depois o script 40-mount em /etc/hotplug.d/block. Os dados do dispositivo e o ponto de montagem são passados por meio de variáveis de ambiente, mas não consegui entender como é possível se comunicar com o script de 40 montagens que queremos montar a partição criptografada usando variáveis env. Então eu optei por um menos elegante, mas ainda funcional. Eu modifiquei o arquivo /etc/hotplug.d/usb/10-usb
#!/bin/sh
# Copyright (C) 2009 OpenWrt.org
PRODID="13fe/3600/100"
case "$ACTION" in
add)
# update LEDs
if [ "${PRODUCT}" = "${PRODID}" ];
then
touch /tmp/crypt
fi
;;
remove)
# update LEDs
if [ "${PRODUCT}" = "${PRODID}" ];
then
rm /tmp/crypt
fi
;;
esac
Quando o disco criptografado é inserido, o arquivo / tmp / cryp é criado, esse arquivo é excluído quando o disco é removido. Então eu editei o arquivo /etc/hotplug.d/block/40-mount:
case "$ACTION" in
add)
### AUTO DECRYPT
if [ -e /tmp/crypt ];
then
/usr/sbin/cryptsetup -c aes-xts-plain create -d /root/keyfile cryptousb /dev/$device;
device="mapper/cryptousb"
mountpoint="/mnt/cryptousb"
sleep 10
fi
#### END AUTO DECRYPT
E:
remove)
### AUTO DECRYPT
if [ -e /tmp/crypt ];
then
/usr/sbin/cryptsetup remove cryptousb;
device="mapper/cryptousb"
mountpoint="/mnt/cryptousb"
sleep 10
rm /tmp/crypt
fi
#### END AUTO DECRYPT
Quando o disco é inserido e seu PRODID é reconhecido, antes da montagem, o volume criptografado é aberto e mapeado, o nome do dispositivo e o ponto de montagem são alterados. O sono é necessário para aguardar processo cryptosetup está concluído. Quando você desmonta o volume, o mapa em / dev / mapper é removido.
Espero que isso funcione para você