Сценарий оболочки — Алфавит в коде

Я понял ответ. Проблема заключалась в том, что Verizon разорвет соединение, если получит 10 недействительных пакетов в течение 2 минут. Проблема заключалась в том, что я неправильно выполнял NAT-пакеты, так как я также использовал его в качестве маршрутизатора. Пакеты, отправляемые из локальной сети с мостом, отправлялись в Verizon с исходным IP-адресом 192.168.123.XXX. Веризон (совершенно справедливо )решил, что эти пакеты недействительны и разорвет соединение. Решение состояло в том, чтобы просто добавить это правило Iptables:

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE 
-5
11.12.2019, 06:52
2 ответа

В bash это непросто, но это можно сделать с помощью ассоциативных массивов.

#! /bin/bash
declare -A crypt=(
    [A]="99_banana"
    [a]="@_melon"
    [B]="22_GRAPE"
    [b]="orange"
    [C]="Strawberry"
    [c]="life"
    ['@']="12399"
    ['!']="tv_12"
)

encode () {
    local word=$1
    for ((i=0; i<${#word}; ++i)) ; do
        local char=${word:$i:1}
        printf %s ${crypt[$char]}
    done
    printf '\n'
}

declare -A decrypt
for char in "${!crypt[@]}" ; do
    key=${crypt[$char]}
    decrypt[$key]=$char
done

decode () {
    local word=$1
    while [[ $word ]] ; do
        local code
        for code in "${!decrypt[@]}"; do
            if [[ $word == "$code"* ]] ; then
                printf %s "${decrypt[$code]}"
                word=${word#"$code"}
            fi
        done
    done
    printf '\n'
}

encrypted=$(encode 'Abc!')

decode "$encrypted"

Обратите внимание, что это может сломаться, если шифрование одного символа является подстрокой шифрования другого символа.

2
28.01.2020, 05:20
 #! /bin/bash
 declare -A crypt=(
     [A]="99_banana"
     [a]="@_melon"
     [B]="22_GRAPE"
     [b]="orange"
     [C]="Strawberry"
     [c]="life"
     [' ']="space"
     ['@']="12399"
     ['!']="tv_12"
 )

 encode () {
     local word=$1
     for ((i=0; i<${#word}; ++i)) ; do
         local char=${word:$i:1}
         printf %s ${crypt[$char]}
     done
     printf '\n'
 }

 declare -A decrypt
 for char in "${!crypt[@]}" ; do
     key=${crypt[$char]}
     decrypt[$key]=$char
 done

 decode () {
     local word=$1
     while [[ $word ]] ; do
         local code
         for code in "${!decrypt[@]}"; do
             if [[ $word == "$code"* ]] ; then
                 printf %s "${decrypt[$code]}"
                 word=${word#"$code"}
             fi
         done
     done
     printf '\n'
 }

 encrypt=$(encode 'Abc !')

 decrypt=$(decode "$encrypt")

 echo "$encrypt"

 echo "$decrypt"

Я просто добавил переменные, чтобы упростить понимание

0
28.01.2020, 05:20

Теги

Похожие вопросы