关卡地址

解决方案:

思路:

What about making trans?

图中给出了字母的映射关系,通过规律来破解下面这段话:

g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr’q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.

代码:

Challenge001.py

import helper
msg=helper.readFile(".\\Data\\001\\msg.txt")
url='map'

# ^^^^^^^^^^^^^^^^^^^^^^^^Solution 1^^^^^^^^^^^^^^^^^^^^^^^^

def getchar(inchar):
    if inchar >= 'a' and inchar <= 'z':
        tmp=ord(inchar)-ord('a')+2
        return chr(tmp%26+ord('a'))
    else:
        return inchar

def translate(instr):
    return ''.join(map(getchar,instr))

print(translate(msg))
print(translate(url))
# vvvvvvvvvvvvvvvvvvvvvvvvSolution 1vvvvvvvvvvvvvvvvvvvvvvvv



# ^^^^^^^^^^^^^^^^^^^^^^^^Solution 2^^^^^^^^^^^^^^^^^^^^^^^^

import string

table=str.maketrans(string.ascii_lowercase, string.ascii_lowercase[2:]+string.ascii_lowercase[:2])
print(msg.translate(table))
print(url.translate(table))
# vvvvvvvvvvvvvvvvvvvvvvvvSolution 2vvvvvvvvvvvvvvvvvvvvvvvv
PS src\static> python .\Code\Python\Challenge001.py

Challenge001.ps1

$msg=Get-Content ".\\Data\\001\\msg.txt"
$url='map'

function GetChar ([char]$ch) {
    if($ch -ge 'a' -and $ch -le 'z'){
        # [int][char]'a'=97

        return [char](97+([int]$ch-97+2)%26)
    }
    return $ch
}

function Translate ([string]$instr) {
    [char[]]$rst=New-Object char[] $instr.Length
    for ($i = 0; $i -lt $instr.Length; $i++) {
        $ch=GetChar($instr[$i])   
        $rst[$i]=$ch
    }
    
    return $rst -join ''
}

Translate($msg)
Translate($url)
PS src\static> .\Code\PowerShell\Challenge001.ps1

Challenge001.go

package main

import(
	"fmt"
	"strings"
)

func (c *Challenge) Challenge001()  {
	msg:=ReadFile(".\\Data\\001\\msg.txt")
	url:="map"

	fmt.Println(translate(msg))
	fmt.Println(translate(url))
}

func getChar(r rune) rune {
	// switch {
	// case r >= 'a' && r <= 'z':
	// 	return 'a' + (r-'a'+2)%26
	// }
	if (r >= 'a' && r <= 'z') {
		return 'a' + (r-'a'+2)%26
	}
	return r
}

func translate(instr string) string {
	return strings.Map(getChar, instr)
}
PS src\static> .\Code\Go\Challenge.exe -l 001

最终结果: ocr

[下一关地址][5]