Взлом Ceasar cipher — различия между версиями

Материал из InformationSecurity WIKI
Перейти к: навигация, поиск
м
 
(не показано 9 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите.
 
Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите.
 +
[[Категория:Crypto]]
 +
==Чем выделяется==
  
Взлом данного шифра происходит методом перебора всех возможных сдвигов. Для этого можно использовать инструмент [https://www.nayuki.io/page/automatic-caesar-cipher-breaker-javascript Automatic Caesar cipher breaker] либо код на python, в котором строка '''Wkh_Txlfn_Eurzq_Ira_Mxpsv_Ryhu_Wkh_Odcb_Grj''' является зашифрованной:
 
  
 +
==Где часто используется==
 +
 +
 +
Используется только на CTF в тасках.
 +
Так как шифр Цезаря один из самых древних, то обычно в описании заданий присутствуют на это намеки.
 +
 +
==Скрипты==
 +
 +
===python===
 +
 +
<syntaxhighlight lang="python" line>
 
   a = 'Wkh_Txlfn_Eurzq_Ira_Mxpsv_Ryhu_Wkh_Odcb_Grj'
 
   a = 'Wkh_Txlfn_Eurzq_Ira_Mxpsv_Ryhu_Wkh_Odcb_Grj'
 
   import string
 
   import string
Строка 11: Строка 23:
 
   for n in xrange(26):
 
   for n in xrange(26):
 
       a.translate(rotn(n))
 
       a.translate(rotn(n))
 +
</syntaxhighlight>
 +
 +
===perl===
 +
<syntaxhighlight lang="perl" line>
 +
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;
 +
</syntaxhighlight>
 +
 +
===ruby===
 +
<syntaxhighlight lang="ruby" line>
 +
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
 +
</syntaxhighlight>
 +
 +
===java===
 +
<syntaxhighlight lang="java" line>
 +
 +
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="";
 +
}
 +
</syntaxhighlight>
 +
 +
==Утилиты==
 +
 +
 +
[https://www.nayuki.io/page/automatic-caesar-cipher-breaker-javascript Automatic Caesar cipher breaker]
 +
 +
[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.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

CrypTool

Райтапы

CSAW CTF 2015 - Forensics 100 Transfer Writeup

Caesar - 20 (Cryptography)

Krypton Level 2 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/Шифр_Цезаря - официальная вики страница