Взлом Ceasar cipher — различия между версиями
Материал из InformationSecurity WIKI
Drakylar (обсуждение | вклад) м (→Утилиты) |
Drakylar (обсуждение | вклад) м |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите. | Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите. | ||
+ | [[Категория:Crypto]] | ||
+ | ==Чем выделяется== | ||
− | |||
− | = | + | ==Где часто используется== |
− | ==python== | + | |
+ | Используется только на CTF в тасках. | ||
+ | Так как шифр Цезаря один из самых древних, то обычно в описании заданий присутствуют на это намеки. | ||
+ | |||
+ | ==Скрипты== | ||
+ | |||
+ | ===python=== | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
Строка 18: | Строка 25: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | ==perl== | + | ===perl=== |
<syntaxhighlight lang="perl" line> | <syntaxhighlight lang="perl" line> | ||
use 5.010; | use 5.010; | ||
Строка 34: | Строка 41: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | ==ruby== | + | ===ruby=== |
<syntaxhighlight lang="ruby" line> | <syntaxhighlight lang="ruby" line> | ||
class Caesar | class Caesar | ||
Строка 53: | Строка 60: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | ==java== | + | ===java=== |
<syntaxhighlight lang="java" line> | <syntaxhighlight lang="java" line> | ||
Строка 77: | Строка 84: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | =Утилиты= | + | ==Утилиты== |
Строка 84: | Строка 91: | ||
[https://www.cryptool.org/ CrypTool] | [https://www.cryptool.org/ CrypTool] | ||
− | =Райтапы= | + | ==Райтапы== |
+ | [http://jordan-wright.com/blog/2015/09/22/csaw-ctf-2015-forensics-100-transfer-writeup/ CSAW CTF 2015 - Forensics 100 Transfer Writeup] | ||
+ | [https://ehsandev.com/pico2014/cryptography/caesar.html Caesar - 20 (Cryptography)] | ||
− | =Полезные ссылки= | + | [https://infamoussyn.com/2014/04/30/overthewire-krypton-level-0-5-writeup/ Krypton Level 2 Writeup] |
+ | |||
+ | [http://ctf.c0deguard.com/nullcon-ctf-hackim-2016-crypto-writeups/ Nullcon CTF HackIM 2016 - Crypto 2 400 pts WriteUp] | ||
+ | |||
+ | ==Полезные ссылки== | ||
http://planetcalc.com/1434/ - перебор английской раскладки шифра цезаря | http://planetcalc.com/1434/ - перебор английской раскладки шифра цезаря | ||
http://planetcalc.ru/1434/ - перебор русской раскладки шифра цезаря | http://planetcalc.ru/1434/ - перебор русской раскладки шифра цезаря | ||
+ | |||
+ | http://www.xarg.org/tools/caesar-cipher/ - енкодер/декодер шифра цезаря | ||
+ | |||
+ | https://ru.wikipedia.org/wiki/Шифр_Цезаря - официальная вики страница |
Текущая версия на 13:10, 2 июня 2016
Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите.
Содержание
Чем выделяется
Где часто используется
Используется только на CTF в тасках. Так как шифр Цезаря один из самых древних, то обычно в описании заданий присутствуют на это намеки.
Скрипты
python
a = 'Wkh_Txlfn_Eurzq_Ira_Mxpsv_Ryhu_Wkh_Odcb_Grj'
import string
def rotn(n):
from string import ascii_lowercase as lc, ascii_uppercase as uc
mapping = string.maketrans(lc + uc, lc[n:] + lc[:n] + uc[n:] + uc[:n])
return mapping
for n in xrange(26):
a.translate(rotn(n))
perl
use 5.010;
use warnings;
my $original = lc "Ceterum censeo Carthaginem esse delendam";
my $cyphered = $original;
$cyphered =~ tr/a-z/k-za-j/;
say $cyphered;
my $decyphered = $cyphered;
$decyphered =~ tr/k-za-j/a-z/;
say $decyphered;
ruby
class Caesar
def initialize(shift, alphabet = ('a'..'z').to_a.join)
i = shift % alphabet.size #I like this
@decrypt = alphabet
@encrypt = alphabet[i..-1] + alphabet[0...i]
end
def encrypt(string)
string.tr(@decrypt, @encrypt)
end
def decrypt(string)
string.tr(@encrypt, @decrypt)
end
end
java
private final String ALPHABET = "abcdefghijklmnopqrstuvwxyz";
public String encrypt(String plainText,int shiftKey)
{
plainText = plainText.toLowerCase();
String cipherText="";
for(int i=0;i<plainText.length();i++)
{
int charPosition = ALPHABET.indexOf(plainText.charAt(i));
int keyVal = (shiftKey+charPosition)%26;
char replaceVal = this.ALPHABET.charAt(keyVal);
cipherText += replaceVal;
}
return cipherText;
}
public String decrypt(String cipherText, int shiftKey)
{
cipherText = cipherText.toLowerCase();
String plainText="";
}
Утилиты
Automatic Caesar cipher breaker
Райтапы
CSAW CTF 2015 - Forensics 100 Transfer Writeup
Nullcon CTF HackIM 2016 - Crypto 2 400 pts WriteUp
Полезные ссылки
http://planetcalc.com/1434/ - перебор английской раскладки шифра цезаря
http://planetcalc.ru/1434/ - перебор русской раскладки шифра цезаря
http://www.xarg.org/tools/caesar-cipher/ - енкодер/декодер шифра цезаря
https://ru.wikipedia.org/wiki/Шифр_Цезаря - официальная вики страница