【问题标题】:Corrupting a string of random characters using bash使用 bash 破坏一串随机字符
【发布时间】:2013-08-08 17:17:58
【问题描述】:

我有一个看起来像这样的字符串

/6435045045/hpdqbhflyuhv_EOlXG

我想通过更改几个字符来破坏字符串。我做了

$string | sed 's/E/A/g' 

它工作正常,但字符串是动态的,现在生成的字符串没有“E”。 是否可以通过使用 bash 将前 x 个字符替换为一些随机 x 字符来破坏字符串??

【问题讨论】:

    标签: bash shell


    【解决方案1】:
    > string="/6435045045/hpdqbhflyuhv_EOlXG"
    > n=8
    > m=`expr ${#string} - $n`
    > string="`< /dev/urandom tr -dc A-Za-z0-9_ | head -c$n``echo $string | tail -c$m`"
    > echo $string
    oZeHdOD_45/hpdqbhflyuhv_EOlXG
    

    【讨论】:

      【解决方案2】:

      rotten你想如何制作字符串?

      tr 'A-Za-z' 'N-ZA-Mn-za-m' <<<$string
      

      【讨论】:

        【解决方案3】:

        这是 bash 中的一个脚本。它允许您指定一个字符范围和字符串内容将被更改的次数。

        #!/bin/bash
        
        # syntax: corrupt <string> <times> <character range in ascii codes>
        #
        function corrupt {
            local STRING=$1
            local STRING_LENGTH=${#1}
        
            local TIMES=$2
        
            local RANGE=("${@:3}")
            local RANGE_LENGTH="${#RANGE[@]}"
        
            local CHARS=()
            local C P I=0 IFS=''
        
            while read -rd $'\0' C; do
                CHARS[I++]=$C
            done < <(echo -ne "$(printf '\\x%x\\x00' "${RANGE[@]}")")
        
            for (( I = 0; I < TIMES; ++I )); do
                C=${CHARS[RANDOM % RANGE_LENGTH]}
                P=$(( RANDOM % STRING_LENGTH ))
                STRING="${STRING:0:P}${C}${STRING:P + 1}"
            done
        
            echo "$STRING"
        
            # Uncomment to save the value to variable __.
            # __=$STRING
        }
        
        corrupt "/6435045045/hpdqbhflyuhv_EOlXG" 10 {32..126}
        

        注意:将数字(次)增加到更高的值以获得更具破坏性的结果。

        【讨论】:

          猜你喜欢
          • 2011-11-04
          • 1970-01-01
          • 2011-09-16
          • 1970-01-01
          • 1970-01-01
          • 2011-07-10
          • 2017-12-11
          • 1970-01-01
          • 2023-03-19
          相关资源
          最近更新 更多