특정 커널 모듈을 등록해야 합니다(https://github.com/504ensicsLabs/LiME) 우분투 18.04에서
sudo insmod /path/to/lime.ko path=~/dump.raw format=raw
파이썬 스크립트에서. .bashrc 환경을 사용해 보았지만
os.system() ; subprocess.run()/call()/Popen() - shell=True/False
명령줄에서 실행했을 때 모듈 오류에 알 수 없는 기호가 표시되어 모두 실패했습니다. Python 스크립트는 루트 권한으로 실행됩니다. 내가 놓친 게 무엇입니까? 하위 프로세스와 직접 쉘의 차이점은 무엇입니까? 설치하려는 모듈의 특수한 특성과 관련이 있습니까? 오류는 다음과 같습니다
insmod: error inserting 'path/to/lime.ko': Unknown symbol in module
답변1
이것이 문제의 원인인지는 모르겠지만 ~
in은 cmd path=~/dump.raw
해당 옵션이 활성화되지 않은 경우(해당 옵션에 대해) 쉘에 의해서만 확장됩니다(그리고 남은 것이 유효한 변수 이름처럼 보이는 경우에만). )로 호출될 때 활성화되고 해당 옵션이 활성화되면 셸에 의해 활성화됩니다.bash
mksh
bash
=
posix
bash
posix
sh
zsh
magicequalsubst
다른 껍질에는 없습니다. 의 경우 sh
POSIX에는 echo path=~
출력이 필요합니다 path=~
.
따라서 sh
빌드에 기본적으로 해당 모드가 활성화되어 있지 않으면 mksh
셸을 사용하여 내부에서 실행하는 경우 홈 디렉터리로 확장되지 않습니다.posix
python
sh
~
여기서는 다음을 사용하세요.
sudo insmod /path/to/lime.ko path="$HOME/dump.raw" format=raw
대신에. 또는 쉘이 호출되지 않으면 python
환경 변수 값을 검색하여 HOME
매개변수를 구성합니다.path=....
확장 주제에 대한 자세한 내용은 ~
다음을 참조하세요.~ 항상 $HOME과 같나요?