쉘스크립트 암호화 (바이너리 파일로 변환) - shc, bash-obfuscate

리눅스/OS 일반|2014. 12. 31. 00:01
반응형

[방법1]

# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz

# tar zxvf shc-3.8.7.tgz

# cd shc-3.8.7

# make

# ./shc -r -v -T -f script.sh

 

최근에 (2021. 11) 확인해보니 간단히 레포지토리에서 받아올 수 있었습니다.

# yum install shc

 

* 참고

- script.sh.x 라고 생성된 파일이 바이너리 파일입니다.

- 스크립트 상단에 반드시 #!/bin/bash 가 있어야 변환됩니다.

- 스크립트 구동 가능 날짜 제한

# shc -e 31/12/2016 -m "The end" -f script.sh

// 2016년 12월 13일 이후에는 "The end" 라는 메세지가 출력되며 구동이 되지 않습니다.

* 단점 : sleep 등 스크립트 내 지연 작업이 있는경우 ps 명령으로 소스가 노출 됨

 

 shc-3.8.7.tgz

 

[방법2]

CentOS 8 에서 테스트 하였습니다.

# npm install -g bash-obfuscate
# bash-obfuscate script.sh -o script_new.sh

 

실제로는 바이너리 파일로 변환하는게 아니고 문자열을 쪼개서 변수에 넣고 변수를 조합하는 식으로 난독화 합니다.

변환 된 파일을 쉘스크립트 처럼 구동 하면 됩니다.

# sh script_new.sh

 

 

반응형

댓글()

iconv 로 파일 캐릭터셋 일괄 변경하기

리눅스/OS 일반|2014. 12. 31. 00:00
반응형

아래 내용으로 파일을 만들어 실행하면 됩니다.

 

#!/bin/sh
files=$(find . -type f -name "*.php")
for file in $files; do

iconv -c -f euckr -t utf8 $file > $file.tmp

mv -f $file.tmp $file

done

exit 0

 

[출처] 곽범생's Blog | 곽범생 (http://kwakyc87.tistory.com/102) 내용

반응형

댓글()

apr-1.4.2 및 apr-util-1.3.9 설치

리눅스/OS 일반|2014. 12. 30. 23:59
반응형

1. apr-1.4.2 설치

 

# cd /usr/local/src

# wget http://archive.apache.org/dist/apr/apr-1.4.2.tar.gz
# tar xvzf apr-1.4.2.tar.gz
# cd apr-1.4.2

# ./configure

 

[./configure 시 에러출력]

config.status: executing libtool commands
rm: cannot remove `libtoolT': No such file or directory
config.status: executing default commands
config.status: include/apr.h is unchanged
config.status: include/arch/unix/apr_private.h is unchanged
 

위와 같은 에러 출력시 아래처럼 파일을 복사해주고 진행을 계속 합니다.

# cp -arp libtool libtoolT
# ./configure

# make

 

[make시 에러 출력]

make[1]: Entering directory `/usr/local/src/APM_setup/apr-1.4.2'
/bin/sh /libtool --silent --mode=compile gcc -g -O2 -pthread   -DHAVE_CONFIG_H -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE   -I./include -I/usr/local/src/APM_setup/apr-1.4.2/include/arch/unix -I./include/arch/unix -I/usr/local/src/APM_setup/apr-1.4.2/include/arch/unix -I/usr/local/src/APM_setup/apr-1.4.2/include  -o passwd/apr_getpass.lo -c passwd/apr_getpass.c && touch passwd/apr_getpass.lo
/bin/sh: /libtool: No such file or directory
make[1]: *** [passwd/apr_getpass.lo] Error 127
make[1]: Leaving directory `/usr/local/src/APM_setup/apr-1.4.2'
make: *** [all-recursive] Error 1
 

위와 같은 에러가 나온다면 아래처럼 심볼릭 링크를 걸어주고 진행을 계속 합니다.

# ln -s /usr/bin/libtool /

# make clean

# make

# make install

 

2. apr-util-1.4.2 설치

 

# cd ..

# wget http://archive.apache.org/dist/apr/apr-util-1.3.9.tar.gz
# tar xvzf apr-util-1.3.9.tar.gz
# cd apr-util-1.3.9
# ./configure --with-apr=/usr/local/apr
# make
# make install

반응형

댓글()

64bit 에서 컴파일 오류. -fPIC 가 필요할때

리눅스/OS 일반|2014. 12. 30. 23:59
반응형

64비트에서 설치되지 않는 프로그램이 있습니다.

컴파일시 오류가 나면서 -fPIC 옵션을 같이 주어 설치하라는 메세지도 보이는데

이경우 아래와 같이 'CC=gcc -m64 -fPIC' 옵션을 주어 설치시킬 수 있습니다.

 

예)

./configure --enable-auth-module=mysql --enable-tcprules-prog=/usr/local/bin/tcprules --enable-logging=y --disable-many-domains --enable-domainquotas 'CC=gcc -m64 -fPIC'

반응형

댓글()

tar 파일 내용보기

리눅스/OS 일반|2014. 12. 30. 23:58
반응형

# tar -tvf 파일명.tar.gz

반응형

댓글()

강제로 파티션 언마운트 하기

리눅스/OS 일반|2014. 12. 30. 23:58
반응형

프로세스 종료도 하고 해당파티션 내에 위치하고 있지도 않은데

언마운트 (umount) 가 되지 않을때가 있습니다.

이럴때 아래명령어로 해결 가능합니다.

 

# cd /                           // 언마운트 시킬 디렉토리 상위로 이동합니다.

# fuser -km /backup    // backup 디렉토리를 강제로 언마운트 시킵니다.

반응형

댓글()

일반사용자 root 권한 주기 및 특정 실행파일만 권한주기

리눅스/OS 일반|2014. 12. 30. 23:57
반응형

root 사용자로 sudoers 파일에 일반계정이 사용할 명령어를 설정 해두어야 합니다.

아래 파일을 열어 붉은색 글씨를 추가 합니다.

(예시 : sysdocu 사용자에 blkid, fdisk 명령 권한 주기)


# vi /etc/sudoers

 

root    ALL=(ALL)   ALL
sysdocu    ALL=(ALL)   NOPASSWD:/usr/sbin/blkid, /usr/sbin/fdisk


* 해설

sysdocu 계정은 blkid, fdisk 명령시 root 패스워드 없이 실행 가능하며, 그 외 명령어는 root 패스워드를 받게 됩니다.



/etc/sudoers 가 수정되면, 이후에 로그인 한 사용자에게 적용이 됩니다.

아래와 같이 명령어 앞에 sudo 를 꼭 붙여야 실행이 가능합니다.


[sysdocu@localhost ~]$ sudo /usr/sbin/blkid

[sysdocu@localhost ~]$ sudo /usr/sbin/fdisk -l



* 참고1

/etc/sudoers 파일의 'Defaults requiretty' 옵션은 터미널 (쉘 환경) 에서만 사용한다는 옵션입니다.

웹페이지로 접속하려는 경우에는 (nobody, apache 등) 해당 옵션을 주석처리 해주어야 명령이 가능 해집니다.


* 참고2 : php 에서 사용시

<?

$a = shell_exec("sudo blkid");

$a = preg_replace("/[\\n]/", "<br>", $a);

echo $a;

?>



반응형

댓글()

vi 에디터 - 라인 범위정해서 주석처리하기

리눅스/OS 일반|2014. 12. 30. 23:57
반응형

현재줄부터 3줄 주석처리하기

:.,+3s/^/#/g

 

5~8번째 줄 주석처리하기

:5,8 s/^/#/g

 

8번째 줄부터 마지막줄까지 주석처리하기

:8,$ s/^/#/g

 

모든라인 주석처리하기

%s/^/#/g

반응형

댓글()

iconv 수동 설치

리눅스/OS 일반|2014. 12. 30. 23:57
반응형

http://www.gnu.org/software/libiconv/ 에서 다운로드 하신후 아래 명령대로 설치를 진행합니다.

 

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz    // 2011/11/29 일자 최신버젼

tar xvzf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local
make
make install

반응형

댓글()

rsync 원격 접속시 포트 지정하여 접속하기

리눅스/OS 일반|2014. 12. 30. 23:56
반응형

ssh 포트를 이용하여 전송

-e 옵션을 사용합니다.

 

예) rsync -avz -e 'ssh -p 2222' --delete root@sysdocu.tistory.com:/home/* /home/

반응형

댓글()

리눅스 HDD 베드블럭 체크하기

리눅스/OS 일반|2014. 12. 30. 23:54
반응형

mount를 해서 파티션 정보 파악 

badblocks -v -o [체크결과파일명] [파티션명] 
(ex. # badblocks -v -o sda1.txt /dev/sda1 

시간이 많이 걸리는 작업이므로 

모든 파티션의 체크 명령라인을 모아 

스크립터로 작성하여 작업한다. 

ex) 
# vi badblocks_check.sh 

#!/bin/bash 
badblocks -v -o hda1.txt /dev/hda1 
badblocks -v -o hda2.txt /dev/hda2 
badblocks -v -o hda3.txt /dev/hda3 





* 파일시스템 보호를 위해 가급적 싱글모드에서 모든 파티션을 언마운트 한 상태에서 실행 



[출처] 리눅스 HDD 베드블럭 체크하기|작성자 삽질메니아

반응형

댓글()