栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 系统运维 > 运维 > Linux

如何将二进制文件嵌入Linux shell 脚本中

Linux 更新时间:发布时间: 百科书网 趣学号

 

1.首先对二进制文件进行编码

例如文件: binary.zip

]# base64 binary.zip 
UEsDBAoAAAAAAPVODFWspIpYBQAAAAUAAAAGABwAYmluYXJ5VVQJAAMds/ViHbP1YnV4CwABBAAA
AAAEAAAAAGFiY2QKUEsBAh4DCgAAAAAA9U4MVaykilgFAAAABQAAAAYAGAAAAAAAAQAAAKSBAAAA
AGJpbmFyeVVUBQADHbP1YnV4CwABBAAAAAAEAAAAAFBLBQYAAAAAAQABAEwAAABFAAAAAAA=
2.编写测试脚本
  • test.sh
#! /bin/bash
cpath=$(cd `dirname $0`; pwd)

BinFile="$1"
BinShell="$2"

if [ "A$#" != "A2" ];then
    echo -e "nn===> The Script $0 need two parameters.n"
    echo -e "t$1: Binary filename."
    echo -e "t$2: output script name."
    echo -e "nn"
    exit 200
fi

cd ${cpath};
cat > ${cpath}/${BinShell} << "EOOF"
#! /bin/bash

cpath=$(cd `dirname $0`; pwd)

PAYLOAD_LINE=$(awk '/^__BIN_BEGINS__/ { print NR + 1; exit 0; }' $0)
PAYLOAD_END=$(awk '/^__BIN_END__/ { print NR - 1; exit 0; }' $0)

head -n ${PAYLOAD_END} $0 | tail -n +${PAYLOAD_LINE} | base64 -d &> __MEISBINFILE__
echo -e "nn======================================================nn"
echo -e "tBinary File: __MEISBINFILENAME__ is export successed."
echo -e "texport path: ${cpath}/__MEISBINFILENAME__"
echo -e "nn======================================================nn"
EOOF

cat >> ${cpath}/${BinShell} << EOF
function BASE64
{
__BIN_BEGINS__
`base64 ${cpath}/${BinFile}`
__BIN_END__
}
EOF

# replace  __MEISBINFILE__
sed -i "s#__MEISBINFILE__#${cpath}/${BinFile}#g" ${cpath}/${BinShell}
sed -i "s#__MEISBINFILENAME__#${BinFile}#g" ${cpath}/${BinShell}
3.执行脚本,生成新的脚本

]# bash test.sh 


===> The Script test.sh need two parameters.

    $1: Binary filename.
    $2: output script name.


  • /bin/bash test.sh binary.zip binary.sh
  • cat binary.sh
  • #! /bin/bash
    
    cpath=$(cd `dirname $0`; pwd)
    
    PAYLOAD_LINE=$(awk '/^__BIN_BEGINS__/ { print NR + 1; exit 0; }' $0)
    PAYLOAD_END=$(awk '/^__BIN_END__/ { print NR - 1; exit 0; }' $0)
    
    head -n ${PAYLOAD_END} $0 | tail -n +${PAYLOAD_LINE} | base64 -d &> /root/binary.zip
    echo -e "nn======================================================nn"
    echo -e "tBinary File: binary.zip is export successed."
    echo -e "texport path: ${cpath}/binary.zip"
    echo -e "nn======================================================nn"
    function BASE64
    {
    __BIN_BEGINS__
    UEsDBAoAAAAAAPVODFWspIpYBQAAAAUAAAAGABwAYmluYXJ5VVQJAAMds/ViHbP1YnV4CwABBAAA
    AAAEAAAAAGFiY2QKUEsBAh4DCgAAAAAA9U4MVaykilgFAAAABQAAAAYAGAAAAAAAAQAAAKSBAAAA
    AGJpbmFyeVVUBQADHbP1YnV4CwABBAAAAAAEAAAAAFBLBQYAAAAAAQABAEwAAABFAAAAAAA=
    __BIN_END__
    }

4.将嵌入脚本的二进制文件导出
]# bash binary.sh 


======================================================


	Binary File: binary.zip is export successed.
	export path: /root/binary.zip


======================================================

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/1049667.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号