日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文剖析隱藏shell腳本內(nèi)容的工具shc

開關(guān)電源芯片 ? 來源:Linux開發(fā)那些事兒 ? 作者:LinuxThings ? 2021-08-14 10:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

從事 Linux 開發(fā)的同學,經(jīng)常需要編寫 shell 腳本,有時腳本中會涉及到一些敏感內(nèi)容,比如一些 IP 地址,用戶名以及密碼等,或者腳本中有一些關(guān)鍵的代碼, 所有這些內(nèi)容你都不想別人閱讀或者修改,更進一步,你希望對腳本設(shè)置過期時間,超過指定時間時間之后,腳本就無法使用

在不改變腳本內(nèi)容、功能以及執(zhí)行方式的情況下,有沒有辦法實現(xiàn)上面的需求呢?

答案是:有的, 在Linux下,我們可以使用 shc 這個工具來實現(xiàn)隱藏shell腳本內(nèi)容以及設(shè)置過期時間的目的

簡介

shc 是一個通用shell腳本編譯器,它將 shell 腳本編譯 可執(zhí)行的二進制文件,它的功能以及執(zhí)行方式和原始腳本沒有區(qū)別

和 gcc 編譯器不同的是,shc 并沒有把腳本源代碼轉(zhuǎn)化成機器碼,它只是生成了一份 C 語言代碼,這份 C 語言代碼中包含了加密的原始shell腳本,并為它添加了過期功能,然后,通過gcc編譯器將C代碼編譯成可執(zhí)行的二進制文件

安裝

目前,大多數(shù)的 Linux 發(fā)行版的倉庫中都已經(jīng)包含了 shc, 只需要使用默認的包管理器就可以安裝,具體的安裝命令如下:

yum install shc

輸入 shc -v 命令,下面的輸出表示安裝成功

[root@ecs-centos-7 shc_test]# shc -v

shc parse(-f): No source file specified

shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-o outfile] [-rvDSUHCABh] -f script

常用選項

下面是 shc 常用的一些選項以及選項的描述

選項描述

-f待編譯的shell腳本文件

-o指定編譯生成的二進制文件

-e設(shè)置過期時間,格式 日/月/年

-m過期之后,執(zhí)行腳本時的提示信息

-v輸出編譯shell腳本的過程

-r編譯生成可再發(fā)行的二進制

編譯腳本

sehll 腳本編譯成可執(zhí)行的二進制文件之后,只需要把二進制文件提供給執(zhí)行者即可,這樣執(zhí)行者就無法知道原始腳本代碼了,從而實現(xiàn)別人無法閱讀和修改代碼的目的

新建 func.sh 腳本,往其中添加如下內(nèi)容:

#!/bin/bash

#是否是有效的密碼

valid_passwd()

{

if [ “$1” == “123” ]; then

echo 1

else

echo 0

fi

}

#獲取最大數(shù)量

max_num()

{

echo 100

}

#登錄到遠程機器

login()

{

sshpass -p ‘123456’ ssh test@192.168.70.20

}

#版本號

ver()

{

echo “1.0”

}

if [ $# -ne 0 ]; then

name=“$1”

shift 1

${name} “$@”

fi

執(zhí)行下面的命令,編譯 func.sh 腳本

shc -rf func.sh -o func.bin

編譯完之后,當前目錄下會出現(xiàn)三個文件

[root@ecs-centos-7 shc_test]# ll

-rwxrwxr-x 1 root root 11640 7月 1 00:24 func.bin

-rw-r--r-- 1 root root 373 7月 1 00:19 func.sh

-rw-r--r-- 1 root root 19811 7月 1 00:24 func.sh.x.c

func.sh 是原始的腳本文件,func.sh.x.c 是生成的 c語言代碼, func.bin 是生成可執(zhí)行的二進制文件,它的使用方法和原始腳本是一樣的

注意: 編譯出來的二進制文件func.bin,如果想讓它在其他機器也能運行的話,一定要指定 -r 選項

使用 file 命令分別查看 func.bin 、func.sh.x.c,結(jié)果如下:

72f8698a-fc4d-11eb-9bcf-12bb97331649.png

腳本對外提供 valid_passwd、 max_num、 login、 ver 這四個接口,腳本中已經(jīng)注明了每個接口的作用,使用方法是 。/func.bin 接口名 接口參數(shù)列表,下面的兩個實例說明了如何使用腳本

實例1

分別執(zhí)行 。/func.bin ver 和 。/func.sh ver 命令,結(jié)果如下

7322ba6e-fc4d-11eb-9bcf-12bb97331649.png

從上圖可以看出,無論是用腳本還是二進制,最終的結(jié)果都是一樣的

實例2

執(zhí)行 。/func.bin login 命令,結(jié)果如下

73405d44-fc4d-11eb-9bcf-12bb97331649.png

當傳入 login 參數(shù)時,就會執(zhí)行func.sh腳本中的 login 函數(shù),該函數(shù)的作用是使用 SSH 登錄到遠程機器, 函數(shù)體中的 sshpass 是一個自動填充SSH登錄密碼的工具

從結(jié)果可以知道,執(zhí)行 。/func.bin login 命令之后,就登錄到 ip 為 192.168.70.20 機器的 /home/test 目錄,后面再輸入 exit 從遠程機器退回到當前機器的目錄

我們把 func.sh 腳本編譯成 func.bin 二進制文件的目的就是要隱藏腳本文件中一些敏感信息,比如:腳本中的SSH用戶 test , IP地址 192.168.70.20 以及密碼 123456

設(shè)置過期時間

shc 除了將把腳本編譯成二進制,還能為二進制設(shè)置過期時間,下面還是以 func.sh 腳本為例來說明

執(zhí)行 shc -e 25/6/2021 -m “The script is expired, Please contact test@qq.com” -rf func.sh -o func.bin 命令把腳本的過期時間設(shè)置為 2021年6月25日,執(zhí)行過期后的腳本提示語設(shè)置為 “The script is expired, Please contact test@qq.com”

然后,執(zhí)行 。/func.bin ver 命令進行測試,結(jié)果如下

735acddc-fc4d-11eb-9bcf-12bb97331649.png

從上圖可以看出,腳本設(shè)置過期時間之后,再次執(zhí)行腳本會提示已經(jīng)過期了

如何引用二進制腳本

func.sh 編譯成了二進制后,其他腳本引用它的方式也要調(diào)整下,原來以 source 。/func.sh 的使用方式都需要修改,因為 fun.sh 已經(jīng)由原來的 ASICII 文件變成了 二進制文件了,下面給出一個shell腳本引用二進制腳本 func.bin 的實例

新建 test_func.sh 腳本,腳本內(nèi)容如下:

#!/bin/bash

#調(diào)用 valid_passwd 函數(shù)

ret=$(。/func.bin valid_passwd 123)

if [ $ret -eq 1 ]; then

echo “passwd ok”

fi

#調(diào)用 valid_passwd 函數(shù)

ret=$(。/func.bin valid_passwd 124)

if [ $ret -eq 1 ]; then

echo “passwd ok”

else

echo “passwd fail”

fi

#調(diào)用 max_num 函數(shù)

ret=$(。/func.bin max_num)

echo “max_num:”$ret

#調(diào)用 ver 函數(shù)

ret=$(。/func.bin ver)

echo “version:”$ret

執(zhí)行 。/test_func.sh 命令,結(jié)果如下

7378843a-fc4d-11eb-9bcf-12bb97331649.png

從上圖可以看出,test_func.sh 腳本分別調(diào)用了二進制文件 fun.bin 中的 valid_passwd、max_num、 ver 函數(shù),根據(jù) func.sh 腳本內(nèi)容,可以確定結(jié)果輸出都是正確的

從這個實例可以得出,普通腳本也可以正常使用二進制的腳本

安全性

shc 使用的加密類型是叫做 RC4流密碼的一個變體,目前它已經(jīng)被證實存在弱點,存在被破解的可能, 尤其在 shc 中,密鑰被攜帶到加密腳本本身中,所以,是存在 通過反匯編破解出密鑰,進而通過密鑰還原原始腳本的可能性

因此,我們不應(yīng)該依賴 shc 加密的安全性,而是更多的把它當作是shell腳本內(nèi)容的隱藏或者混淆工具

小結(jié)

本文主要介紹了隱藏shell腳本內(nèi)容的工具 shc, 雖然它加密的安全性不高,但是我們平常可以把它作為一個shell腳本代碼隱藏和混淆工具來使用,也能達到我們的目的, 更多關(guān)于 shc 的相關(guān)知識請參考網(wǎng)上其他資料

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4422

    瀏覽量

    67873
  • RC4
    RC4
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    7439
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    412

    瀏覽量

    29287

原文標題:如何隱藏 shell 腳本內(nèi)容

文章出處:【微信號:gh_3980db2283cd,微信公眾號:開關(guān)電源芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Linux Shell文本處理神器合集:15個工具+實戰(zhàn)例子,效率直接翻倍

    在 Linux 系統(tǒng)中,文本是數(shù)據(jù)交互的 “通用語言”—— 日志文件、配置文件、數(shù)據(jù)報表、程序輸出幾乎都以文本形式存在。手動編輯文本不僅繁瑣,還容易出錯,而掌握 Shell 文本處理工具,能讓你用幾行命令完成批量篩選、數(shù)據(jù)提取、統(tǒng)計分析,甚至復(fù)雜的文本清洗。
    的頭像 發(fā)表于 02-03 15:42 ?2932次閱讀
    Linux <b class='flag-5'>Shell</b>文本處理神器合集:15個<b class='flag-5'>工具</b>+實戰(zhàn)例子,效率直接翻倍

    m腳本太長,有什么辦法個m腳本包含另外個呀

    m腳本太長,有什么辦法個m腳本包含另外個呀
    發(fā)表于 01-22 13:48

    【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈項目-實現(xiàn)開機起動

    0接上文【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈項目 Linux 起動系統(tǒng)下 init 系統(tǒng)大多數(shù) Linux 發(fā)行版
    發(fā)表于 11-03 17:25

    【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈按鈕項目

    0接上文【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈項目-實現(xiàn)開機起動 EASYEAINano-TB(RV1126B)是款專為
    發(fā)表于 11-03 10:00

    關(guān)于系統(tǒng)鏈接腳本的介紹

    、隊伍介紹 本篇為蜂鳥E203系列分享第四篇,本篇介紹的內(nèi)容是系統(tǒng)鏈接腳本。 二、如何實現(xiàn)不同的下載模式? 實現(xiàn)三種不同的程序運行方式,可通過makefile的命令行指定不同的鏈接腳本
    發(fā)表于 10-30 08:26

    【技術(shù)分享】正確編寫SysV Init腳本以實現(xiàn)Systemd兼容(上)

    嵌入式的ubuntu系統(tǒng)如何寫好SysVInit腳本呢?與system服務(wù)又有什么差別呢?起隨著文章來探究吧。問題背景許多傳統(tǒng)Linux服務(wù)仍使用SysVInit腳本(/etc/init.d
    的頭像 發(fā)表于 10-28 11:45 ?856次閱讀
    【技術(shù)分享】正確編寫SysV Init<b class='flag-5'>腳本</b>以實現(xiàn)Systemd兼容(上)

    shell基本介紹及常用命令之shell基本介紹

    執(zhí)行結(jié)果呈現(xiàn)給用戶;同時Shell也是種解釋性的編程語言或者腳本語言,開發(fā)容易可以在短時間內(nèi)完成功能強大又好用的腳本,可以在不同的系統(tǒng)上移植非常方便。
    發(fā)表于 09-28 09:05

    LuatOS腳本開發(fā)入門:嵌入式運行框架全解析!

    想搞懂LuatOS如何運行Lua腳本?本文深入剖析其嵌入式運行框架,涵蓋虛擬機加載、任務(wù)協(xié)程、系統(tǒng)初始化等關(guān)鍵環(huán)節(jié),適合初學者。 、LuatOS 編程起步 1.1 底層固件怎么啟動 LuatOS
    的頭像 發(fā)表于 09-26 17:45 ?650次閱讀
    LuatOS<b class='flag-5'>腳本</b>開發(fā)入門:嵌入式運行框架全解析!

    嵌入式開發(fā)新選擇:LuatOS腳本框架入門教程

    LuatOS正成為嵌入式開發(fā)的新趨勢!本教程帶你從基礎(chǔ)入手,全面了解其基于Lua的腳本開發(fā)模式與輕量級運行框架。 、LuatOS 編程起步 1.1 底層固件怎么啟動 LuatOS 腳本
    的頭像 發(fā)表于 09-26 17:34 ?778次閱讀
    嵌入式開發(fā)新選擇:LuatOS<b class='flag-5'>腳本</b>框架入門教程

    CubeMX移植RT-Thread 3.1.5件重復(fù)怎么解決?

    CubeMX6.7.0內(nèi)移植RT-Thread Nano3.1.5件重復(fù),主要是兩個部分 1、 和 兩個地方重復(fù)rtconfig.h 2、shell相關(guān)的文件也會重復(fù) 和 請問下各位有沒有辦法可以解決這個問題的?
    發(fā)表于 09-24 07:11

    ALM(應(yīng)用生命周期管理)解析:了解其概念、關(guān)鍵階段及Perforce ALM工具推薦

    什么是ALM(應(yīng)用生命周期管理)?它遠不止是SDLC!了解其概念、關(guān)鍵階段以及如何借助Perforce ALM這類工具,實現(xiàn)端到端的可追溯性、加速發(fā)布并保障合規(guī)性。
    的頭像 發(fā)表于 09-19 11:03 ?2191次閱讀
    ALM(應(yīng)用生命周期管理)解析:<b class='flag-5'>一</b><b class='flag-5'>文</b>了解其概念、關(guān)鍵階段及Perforce ALM<b class='flag-5'>工具</b>推薦

    Dirsearch 安全實戰(zhàn)指南

    挖掘 Web 隱藏資源的核心工具。本文從實戰(zhàn)角度,講解其核心原理、使用技巧、掃描策略及合規(guī)要點。 ? 隱藏資源探測的核心價值 ? Web 服務(wù)器中,
    的頭像 發(fā)表于 09-02 10:31 ?952次閱讀

    3500W 與6000W 高檔開關(guān)電源的剖析

    :功率因數(shù)校正;Buck-Boost 變換器;分段式控制 獲取完整文檔資料可下載附件哦!?。。∪绻?b class='flag-5'>內(nèi)容有幫助可以關(guān)注、點贊、評論支持下哦~
    發(fā)表于 06-04 17:10

    Shell腳本入門指南

    Shell塊包裹著系統(tǒng)核心的殼,處于操作系統(tǒng)的最外層,與用戶直接對話,把用戶的輸入, 解釋給操作系統(tǒng),然后處理操作系統(tǒng)的輸出結(jié)果,輸出到屏幕給與用戶看到結(jié)果。
    的頭像 發(fā)表于 06-03 10:47 ?1411次閱讀
    <b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>入門指南

    【米爾-RK3562開發(fā)板試用評測】命令行功能測試-shell腳本進行IO控制-(綠色)RUN 燈、(紅色)User燈

    shell腳本進行命令行功能測試 控制部分硬件測試。從IO控制-燈閃開始。 板手冊中LED例: **應(yīng)開發(fā)板上的 RUN 燈 為例進行LED燈測試 root@myd-yr3562:~# cd
    發(fā)表于 05-09 18:19
    稻城县| 河北省| 临洮县| 防城港市| 平顶山市| 海晏县| 西林县| 图们市| 建宁县| 崇仁县| 车险| 建始县| 汤原县| 凌海市| 泸水县| 兖州市| 苍梧县| 芷江| 福建省| 柏乡县| 扶风县| 东台市| 溧水县| 蓬莱市| 龙川县| 万源市| 天镇县| 长泰县| 昌吉市| 屏边| 高密市| 九台市| 襄汾县| 哈巴河县| 体育| 多伦县| 大悟县| 河北区| 福泉市| 河东区| 正镶白旗|