upd
This commit is contained in:
parent
c8aa211b6a
commit
16fa7489f9
3
src/__main__.py
Normal file
3
src/__main__.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
|
||||||
BIN
src/__pycache__/cipher.cpython-311.pyc
Normal file
BIN
src/__pycache__/cipher.cpython-311.pyc
Normal file
Binary file not shown.
BIN
src/__pycache__/substitution.cpython-311.pyc
Normal file
BIN
src/__pycache__/substitution.cpython-311.pyc
Normal file
Binary file not shown.
1
src/analysis/__init__.py
Normal file
1
src/analysis/__init__.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
3
src/analysis/__main__.py
Normal file
3
src/analysis/__main__.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/Bin/env python3
|
||||||
|
|
||||||
|
|
||||||
BIN
src/analysis/__pycache__/functions.cpython-39.pyc
Normal file
BIN
src/analysis/__pycache__/functions.cpython-39.pyc
Normal file
Binary file not shown.
25
src/analysis/functions.py
Normal file
25
src/analysis/functions.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
from re import sub
|
||||||
|
from unidecode import unidecode
|
||||||
|
|
||||||
|
|
||||||
|
def readFile(filename):
|
||||||
|
data = None
|
||||||
|
dataFile = str()
|
||||||
|
|
||||||
|
with open(filename, 'r') as f:
|
||||||
|
data = f.readlines()
|
||||||
|
|
||||||
|
for d in data:
|
||||||
|
u = unidecode(d.lower(), 'utf-8')
|
||||||
|
dataFile += sub(r'[^a-z]', '', u)
|
||||||
|
|
||||||
|
return dataFile
|
||||||
|
|
||||||
|
def countLetters(text):
|
||||||
|
# Get number of letters
|
||||||
|
totalLetters = 0
|
||||||
|
for letter in text:
|
||||||
|
totalLetters += 1
|
||||||
|
return totalLetters
|
||||||
66
src/analysis/getgrams.py
Normal file
66
src/analysis/getgrams.py
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
from collections import Counter
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
def checkArguments():
|
||||||
|
args = ArgumentParser(description='Cryptanalyst')
|
||||||
|
args.add_argument('-f', '--filename', help='Text to analyze')
|
||||||
|
args.add_argument('-b', '--bigram', help='Get bigram', action="store_true")
|
||||||
|
args.add_argument('-t', '--trigram', help='Get trigram', action="store_true")
|
||||||
|
return args.parse_args()
|
||||||
|
|
||||||
|
def readFile(filename):
|
||||||
|
"""
|
||||||
|
This read the file passed in argument and return the data of it
|
||||||
|
"""
|
||||||
|
text = str()
|
||||||
|
with open(filename, 'r') as f:
|
||||||
|
data = f.readlines()
|
||||||
|
|
||||||
|
for entry in data:
|
||||||
|
text += entry
|
||||||
|
|
||||||
|
return text
|
||||||
|
|
||||||
|
def getLetters(text, pos):
|
||||||
|
return Counter([text[idx: idx + pos] for idx in range(len(text) - 1)])
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
args = checkArguments()
|
||||||
|
text = readFile(args.filename)
|
||||||
|
|
||||||
|
if args.bigram:
|
||||||
|
data = getLetters(text, 2)
|
||||||
|
if args.trigram:
|
||||||
|
data = getLetters(text, 3)
|
||||||
|
|
||||||
|
dataSorted = {k: v for k, v in sorted(data.items(), key=lambda item: item[1])}
|
||||||
|
dataSorted = list(dataSorted.items())
|
||||||
|
newDataSorted = []
|
||||||
|
|
||||||
|
if args.bigram:
|
||||||
|
reg = "[A-Za-z]{2}"
|
||||||
|
if args.trigram:
|
||||||
|
reg = "[A-Za-z]{3}"
|
||||||
|
|
||||||
|
for entry in dataSorted:
|
||||||
|
if re.match(reg, entry[0]):
|
||||||
|
newDataSorted.append((
|
||||||
|
entry[0], entry[1]
|
||||||
|
))
|
||||||
|
|
||||||
|
lenDataSorted = len(newDataSorted)
|
||||||
|
|
||||||
|
x = []
|
||||||
|
y = []
|
||||||
|
for entry in newDataSorted[lenDataSorted - 10:]:
|
||||||
|
x.append(entry[0])
|
||||||
|
y.append(entry[1])
|
||||||
|
|
||||||
|
largeur = 0.5
|
||||||
|
plt.bar(x, y, largeur)
|
||||||
|
plt.show()
|
||||||
50
src/analysis/ic.py
Normal file
50
src/analysis/ic.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
from functions import readFile, countLetters
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
|
||||||
|
def ic(filename):
|
||||||
|
# Read file
|
||||||
|
dataFile = readFile(filename)
|
||||||
|
|
||||||
|
# Get number of letters
|
||||||
|
totalLetters = countLetters(dataFile)
|
||||||
|
|
||||||
|
counts = []
|
||||||
|
|
||||||
|
for i in range (0, 26):
|
||||||
|
counts.append(0)
|
||||||
|
|
||||||
|
# Count the number of letter in our text
|
||||||
|
letterToAscii = ord('a') # Get the ASCII code
|
||||||
|
for i in dataFile:
|
||||||
|
l = ord(i) - letterToAscii
|
||||||
|
if l >= 0 and l <= 26:
|
||||||
|
counts[l] += 1
|
||||||
|
|
||||||
|
# We calculate the sum of all character in the text
|
||||||
|
ic = 0
|
||||||
|
allIC = list()
|
||||||
|
for i in range(0, len(counts)):
|
||||||
|
sum = (counts[i] * (counts[i] - 1))
|
||||||
|
currentIC = sum / (totalLetters * (totalLetters - 1))
|
||||||
|
allIC.append(currentIC)
|
||||||
|
ic += currentIC
|
||||||
|
print(f"{filename}")
|
||||||
|
print(f"Index of coincidence: {ic}", end="\n\n")
|
||||||
|
|
||||||
|
largeur = 0.5
|
||||||
|
y = list()
|
||||||
|
for alphabet in range(0, 26):
|
||||||
|
y.append(chr(ord('a') + alphabet))
|
||||||
|
plt.bar(y, allIC, largeur)
|
||||||
|
# plt.show()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
ic("test.txt")
|
||||||
|
ic("foo.txt")
|
||||||
|
ic("poem.txt")
|
||||||
|
ic("poem.txt.crypt")
|
||||||
11
src/cipher.py
Normal file
11
src/cipher.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
class Cipher:
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def detectCipher(self, data):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
61
src/cryptanalysis.py
Normal file
61
src/cryptanalysis.py
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
from subprocess import Popen, PIPE
|
||||||
|
|
||||||
|
|
||||||
|
def checkArguments():
|
||||||
|
args = ArgumentParser(description='Cryptanalyst')
|
||||||
|
args.add_argument('-f', '--filename', help='Text to analyze')
|
||||||
|
return args.parse_args()
|
||||||
|
|
||||||
|
def get_signature(filename):
|
||||||
|
p = Popen(['xxd', '-p', filename], stdout=PIPE)
|
||||||
|
hexdump = p.communicate()[0]
|
||||||
|
|
||||||
|
# We get the 10 first hex data
|
||||||
|
|
||||||
|
# Identify sig files
|
||||||
|
signatures = list()
|
||||||
|
|
||||||
|
return hexdump[:10]
|
||||||
|
|
||||||
|
def is_ascii_file(filename) -> bool:
|
||||||
|
res = False
|
||||||
|
with open(filename, "rb") as f:
|
||||||
|
#content = f.readlines()
|
||||||
|
line = f.readline()
|
||||||
|
try:
|
||||||
|
line.decode('ascii')
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
res = False
|
||||||
|
else:
|
||||||
|
res = True
|
||||||
|
|
||||||
|
return res
|
||||||
|
|
||||||
|
def cryptanalysis():
|
||||||
|
args = checkArguments()
|
||||||
|
|
||||||
|
if args.filename is None:
|
||||||
|
print("Please, you must specify the filename")
|
||||||
|
exit(-1)
|
||||||
|
|
||||||
|
sig = get_signature(args.filename)
|
||||||
|
|
||||||
|
|
||||||
|
if(is_ascii_file(args.filename)):
|
||||||
|
print("It may be an ascii-endocoded file")
|
||||||
|
else:
|
||||||
|
print("it may be not an ascii-encoded file")
|
||||||
|
|
||||||
|
# We are trying to identify the kind of cipher
|
||||||
|
|
||||||
|
# Analysis with IC, trigram and Bigram
|
||||||
|
|
||||||
|
# Brute force it
|
||||||
|
|
||||||
|
# Analysis with IC, trigram and Bigram
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
cryptanalysis()
|
||||||
BIN
src/main
Executable file
BIN
src/main
Executable file
Binary file not shown.
51
src/main.c
Normal file
51
src/main.c
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
static void just_read(int fd);
|
||||||
|
static void read_and_copy(int fd_r);
|
||||||
|
int main(void){
|
||||||
|
int fd;
|
||||||
|
FILE *f;
|
||||||
|
int len;
|
||||||
|
char buf[BUFSIZ];
|
||||||
|
|
||||||
|
/*if ((fd = open("test.txt", O_RDONLY)) < 0){
|
||||||
|
printf("Failed to open the file\n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
just_read(fd);
|
||||||
|
|
||||||
|
close(fd);*/
|
||||||
|
//f = fopen("test.txt", "r");
|
||||||
|
f = fopen("__main__.py", "r");
|
||||||
|
//f = fopen("raw_file.py", "r");
|
||||||
|
|
||||||
|
if (!f)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < 5; i++){
|
||||||
|
char c;
|
||||||
|
c = fgetc(f);
|
||||||
|
printf("%x\n", c);
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(f);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
static void just_read(int fd){
|
||||||
|
char buf[BUFSIZ];
|
||||||
|
int len;
|
||||||
|
|
||||||
|
// Go to the up of the file
|
||||||
|
lseek(fd, 0, SEEK_SET);
|
||||||
|
/*while ((len = read(fd, buf, BUFSIZ)) > 0){
|
||||||
|
printf("%s\n", buf);
|
||||||
|
memset(buf, 0, BUFSIZ);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
}
|
||||||
139
src/poem.txt
Normal file
139
src/poem.txt
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
Ô saint prêtre ! grande âme ! oh ! je tombe à genoux !
|
||||||
|
Jeune, il avait encor de longs jours parmi nous,
|
||||||
|
Il n'en a pas compté le nombre ;
|
||||||
|
Il était à cet âge où le bonheur fleurit ;
|
||||||
|
Il a considéré la croix de Jésus-Christ
|
||||||
|
Toute rayonnante dans l'ombre.
|
||||||
|
|
||||||
|
Il a dit : — « C'est le Dieu de progrès et d'amour.
|
||||||
|
Jésus, qui voit ton front croit voir le front du jour.
|
||||||
|
Christ sourit à qui le repousse.
|
||||||
|
Puisqu'il est mort pour nous, je veux mourir pour lui ;
|
||||||
|
Dans son tombeau, dont j'ai la pierre pour appui,
|
||||||
|
Il m'appelle d'une voix douce.
|
||||||
|
|
||||||
|
« Sa doctrine est le ciel entr'ouvert ; par la main,
|
||||||
|
Comme un père l'enfant, il tient le genre humain ;
|
||||||
|
Par lui nous vivons et nous sommes ;
|
||||||
|
Au chevet des geôliers dormant dans leurs maisons,
|
||||||
|
Il dérobe les clefs de toutes les prisons
|
||||||
|
Et met en liberté les hommes.
|
||||||
|
|
||||||
|
« Or il est, loin de nous, une autre humanité
|
||||||
|
Qui ne le connaît point, et dans l'iniquité
|
||||||
|
Rampe enchaînée, et souffre et tombe ;
|
||||||
|
Ils font pour trouver Dieu de ténébreux efforts ;
|
||||||
|
Ils s'agitent en vain ; ils sont comme des morts
|
||||||
|
Qui tâtent le mur de leur tombe.
|
||||||
|
|
||||||
|
« Sans loi, sans but, sans guide, ils errent ici-bas.
|
||||||
|
Ils sont méchants, étant ignorants ; ils n'ont pas
|
||||||
|
Leur part de la grande conquête.
|
||||||
|
J'irai. Pour les sauver je quitte le saint lieu.
|
||||||
|
Ô mes frères, je viens vous apporter mon Dieu,
|
||||||
|
Je viens vous apporter ma tête ! » —
|
||||||
|
|
||||||
|
Prêtre, il s'est souvenu, calme en nos jours troublés,
|
||||||
|
De la parole dite aux apôtres : — Allez,
|
||||||
|
Bravez les bûchers et les claies ! —
|
||||||
|
Et de l'adieu du Christ au suprême moment :
|
||||||
|
— Ô vivant, aimez-vous ! aimez. En vous aimant,
|
||||||
|
Frères, vous fermerez mes plaies. —
|
||||||
|
|
||||||
|
Il s'est dit qu'il est bon d'éclairer dans leur nuit
|
||||||
|
Ces peuples égarés loin du progrès qui luit,
|
||||||
|
Dont l'âme est couverte de voiles ;
|
||||||
|
Puis il s'en est allé, dans les vents, dans les flots,
|
||||||
|
Vers les noirs chevalets et les sanglants billots,
|
||||||
|
Les yeux fixés sur les étoiles.
|
||||||
|
|
||||||
|
II.
|
||||||
|
|
||||||
|
Ceux vers qui cet apôtre allait, l'ont égorgé.
|
||||||
|
|
||||||
|
III.
|
||||||
|
|
||||||
|
Oh ! tandis que là-bas, hélas ! chez ces barbares,
|
||||||
|
S'étale l'échafaud de tes membres chargé,
|
||||||
|
Que le bourreau, rangeant ses glaives et ses barres,
|
||||||
|
Frotte au gibet son ongle où ton sang s'est figé ;
|
||||||
|
|
||||||
|
Ciel ! tandis que les chiens dans ce sang viennent boire,
|
||||||
|
Et que la mouche horrible, essaim au vol joyeux,
|
||||||
|
Comme dans une ruche entre en ta bouche noire
|
||||||
|
Et bourdonne au soleil dans les trous de tes yeux ;
|
||||||
|
|
||||||
|
Tandis qu'échevelée, et sans voix, sans paupières,
|
||||||
|
Ta tête blême est là sur un infâme pieu,
|
||||||
|
Livrée aux vils affronts, meurtrie à coups de pierres,
|
||||||
|
Ici, derrière toi, martyr, on vend ton Dieu !
|
||||||
|
|
||||||
|
Ce Dieu qui n'est qu'à toi, martyr, on te le vole !
|
||||||
|
On le livre à Mandrin, ce Dieu pour qui tu meurs !
|
||||||
|
Des hommes, comme toi revêtus de l'étole,
|
||||||
|
Pour être cardinaux, pour être sénateurs,
|
||||||
|
|
||||||
|
Des prêtres, pour avoir des palais, des carrosses,
|
||||||
|
Et des jardins l'été riant sous le ciel bleu,
|
||||||
|
Pour argenter leur mitre et pour dorer leurs crosses,
|
||||||
|
Pour boire de bon vin, assis près d'un bon feu,
|
||||||
|
|
||||||
|
Au forban dont la main dans le meurtre est trempée,
|
||||||
|
Au larron chargé d'or qui paye et qui sourit,
|
||||||
|
Grand Dieu ! retourne-toi vers nous, tête coupée !
|
||||||
|
Ils vendent Jésus-Christ ! ils vendent Jésus-Christ !
|
||||||
|
|
||||||
|
Ils livrent au bandit, pour quelques sacs sordides,
|
||||||
|
L'évangile, la loi, l'autel épouvanté,
|
||||||
|
Et la justice aux yeux sévères et candides,
|
||||||
|
Et l'étoile du coeur humain, la vérité !
|
||||||
|
|
||||||
|
Les bons jetés, vivants, au bagne, ou morts, aux fleuves,
|
||||||
|
L'homme juste proscrit par Cartouche Sylla,
|
||||||
|
L'innocent égorgé, le deuil sacré des veuves,
|
||||||
|
Les pleurs de l'orphelin, ils vendent tout cela !
|
||||||
|
|
||||||
|
Tout ! la foi, le serment que Dieu tient sous sa garde,
|
||||||
|
Le saint temple où, mourant, tu dis :Introïbo,
|
||||||
|
Ils livrent tout ! pudeur, vertu ! — martyr, regarde,
|
||||||
|
Rouvre tes yeux qu'emplit la lueur du tombeau ; —
|
||||||
|
|
||||||
|
Ils vendent l'arche auguste où l'hostie étincelle !
|
||||||
|
Ils vendent Christ, te dis-je ! et ses membres liés !
|
||||||
|
Ils vendent la sueur qui sur son front ruisselle,
|
||||||
|
Et les clous de ses mains, et les clous de ses pieds !
|
||||||
|
|
||||||
|
Ils vendent au brigand qui chez lui les attire
|
||||||
|
Le grand crucifié sur les hommes penché ;
|
||||||
|
Ils vendent sa parole, ils vendent son martyre,
|
||||||
|
Et ton martyre à toi par-dessus le marché !
|
||||||
|
|
||||||
|
Tant pour les coups de fouet qu'il reçut à la porte !
|
||||||
|
César ! tant pour l'amen, tant pour l'alléluia !
|
||||||
|
Tant pour la pierre où vint heurter sa tête morte !
|
||||||
|
Tant pour le drap rougi que sa barbe essuya !
|
||||||
|
|
||||||
|
Ils vendent ses genoux meurtris, sa palme verte,
|
||||||
|
Sa plaie au flanc, son oeil tout baigné d'infini,
|
||||||
|
Ses pleurs, son agonie, et sa bouche entrouverte,
|
||||||
|
Et le cri qu'il poussa : Lamma Sabacthani !
|
||||||
|
|
||||||
|
Ils vendent le sépulcre ! ils vendent les ténèbres !
|
||||||
|
Les séraphins chantant au seuil profond des cieux,
|
||||||
|
Et la mère debout sous l'arbre aux bras funèbres,
|
||||||
|
Qui, sentant là son fils, ne levait pas les yeux !
|
||||||
|
|
||||||
|
Oui, ces évêques, oui, ces marchands, oui, ces prêtres
|
||||||
|
A l'histrion du crime, assouvi, couronné,
|
||||||
|
A ce Néron repu qui rit parmi les traîtres,
|
||||||
|
Un pied sur Thraséas, un coude sur Phryné,
|
||||||
|
|
||||||
|
Au voleur qui tua les lois à coups de crosse,
|
||||||
|
Au pirate empereur Napoléon dernier,
|
||||||
|
Ivre deux fois, immonde encor plus que féroce,
|
||||||
|
Pourceau dans le cloaque et loup dans le charnier,
|
||||||
|
|
||||||
|
Ils vendent, ô martyr, le Dieu pensif et pâle
|
||||||
|
Qui, debout sur la terre et sous le firmament,
|
||||||
|
Triste et nous souriant dans notre nuit fatale,
|
||||||
|
Sur le noir Golgotha saigne éternellement !
|
||||||
139
src/poem.txt.crypt
Normal file
139
src/poem.txt.crypt
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
Ô WEMRX TVêXVI ! KVERHI âQI ! SL ! NI XSQFI à KIRSYB !
|
||||||
|
NIYRI, MP EZEMX IRGSV HI PSRKW NSYVW TEVQM RSYW,
|
||||||
|
MP R'IR E TEW GSQTXé PI RSQFVI ;
|
||||||
|
MP éXEMX à GIX âKI Sù PI FSRLIYV JPIYVMX ;
|
||||||
|
MP E GSRWMHéVé PE GVSMB HI NéWYW-GLVMWX
|
||||||
|
XSYXI VECSRRERXI HERW P'SQFVI.
|
||||||
|
|
||||||
|
MP E HMX : — « G'IWX PI HMIY HI TVSKVèW IX H'EQSYV.
|
||||||
|
NéWYW, UYM ZSMX XSR JVSRX GVSMX ZSMV PI JVSRX HY NSYV.
|
||||||
|
GLVMWX WSYVMX à UYM PI VITSYWWI.
|
||||||
|
TYMWUY'MP IWX QSVX TSYV RSYW, NI ZIYB QSYVMV TSYV PYM ;
|
||||||
|
HERW WSR XSQFIEY, HSRX N'EM PE TMIVVI TSYV ETTYM,
|
||||||
|
MP Q'ETTIPPI H'YRI ZSMB HSYGI.
|
||||||
|
|
||||||
|
« WE HSGXVMRI IWX PI GMIP IRXV'SYZIVX ; TEV PE QEMR,
|
||||||
|
GSQQI YR TèVI P'IRJERX, MP XMIRX PI KIRVI LYQEMR ;
|
||||||
|
TEV PYM RSYW ZMZSRW IX RSYW WSQQIW ;
|
||||||
|
EY GLIZIX HIW KIôPMIVW HSVQERX HERW PIYVW QEMWSRW,
|
||||||
|
MP HéVSFI PIW GPIJW HI XSYXIW PIW TVMWSRW
|
||||||
|
IX QIX IR PMFIVXé PIW LSQQIW.
|
||||||
|
|
||||||
|
« SV MP IWX, PSMR HI RSYW, YRI EYXVI LYQERMXé
|
||||||
|
UYM RI PI GSRREîX TSMRX, IX HERW P'MRMUYMXé
|
||||||
|
VEQTI IRGLEîRéI, IX WSYJJVI IX XSQFI ;
|
||||||
|
MPW JSRX TSYV XVSYZIV HMIY HI XéRéFVIYB IJJSVXW ;
|
||||||
|
MPW W'EKMXIRX IR ZEMR ; MPW WSRX GSQQI HIW QSVXW
|
||||||
|
UYM XâXIRX PI QYV HI PIYV XSQFI.
|
||||||
|
|
||||||
|
« WERW PSM, WERW FYX, WERW KYMHI, MPW IVVIRX MGM-FEW.
|
||||||
|
MPW WSRX QéGLERXW, éXERX MKRSVERXW ; MPW R'SRX TEW
|
||||||
|
PIYV TEVX HI PE KVERHI GSRUYêXI.
|
||||||
|
N'MVEM. TSYV PIW WEYZIV NI UYMXXI PI WEMRX PMIY.
|
||||||
|
Ô QIW JVèVIW, NI ZMIRW ZSYW ETTSVXIV QSR HMIY,
|
||||||
|
NI ZMIRW ZSYW ETTSVXIV QE XêXI ! » —
|
||||||
|
|
||||||
|
TVêXVI, MP W'IWX WSYZIRY, GEPQI IR RSW NSYVW XVSYFPéW,
|
||||||
|
HI PE TEVSPI HMXI EYB ETôXVIW : — EPPID,
|
||||||
|
FVEZID PIW FûGLIVW IX PIW GPEMIW ! —
|
||||||
|
IX HI P'EHMIY HY GLVMWX EY WYTVêQI QSQIRX :
|
||||||
|
— Ô ZMZERX, EMQID-ZSYW ! EMQID. IR ZSYW EMQERX,
|
||||||
|
JVèVIW, ZSYW JIVQIVID QIW TPEMIW. —
|
||||||
|
|
||||||
|
MP W'IWX HMX UY'MP IWX FSR H'éGPEMVIV HERW PIYV RYMX
|
||||||
|
GIW TIYTPIW éKEVéW PSMR HY TVSKVèW UYM PYMX,
|
||||||
|
HSRX P'âQI IWX GSYZIVXI HI ZSMPIW ;
|
||||||
|
TYMW MP W'IR IWX EPPé, HERW PIW ZIRXW, HERW PIW JPSXW,
|
||||||
|
ZIVW PIW RSMVW GLIZEPIXW IX PIW WERKPERXW FMPPSXW,
|
||||||
|
PIW CIYB JMBéW WYV PIW éXSMPIW.
|
||||||
|
|
||||||
|
MM.
|
||||||
|
|
||||||
|
GIYB ZIVW UYM GIX ETôXVI EPPEMX, P'SRX éKSVKé.
|
||||||
|
|
||||||
|
MMM.
|
||||||
|
|
||||||
|
SL ! XERHMW UYI Pà-FEW, LéPEW ! GLID GIW FEVFEVIW,
|
||||||
|
W'éXEPI P'éGLEJEYH HI XIW QIQFVIW GLEVKé,
|
||||||
|
UYI PI FSYVVIEY, VERKIERX WIW KPEMZIW IX WIW FEVVIW,
|
||||||
|
JVSXXI EY KMFIX WSR SRKPI Sù XSR WERK W'IWX JMKé ;
|
||||||
|
|
||||||
|
GMIP ! XERHMW UYI PIW GLMIRW HERW GI WERK ZMIRRIRX FSMVI,
|
||||||
|
IX UYI PE QSYGLI LSVVMFPI, IWWEMQ EY ZSP NSCIYB,
|
||||||
|
GSQQI HERW YRI VYGLI IRXVI IR XE FSYGLI RSMVI
|
||||||
|
IX FSYVHSRRI EY WSPIMP HERW PIW XVSYW HI XIW CIYB ;
|
||||||
|
|
||||||
|
XERHMW UY'éGLIZIPéI, IX WERW ZSMB, WERW TEYTMèVIW,
|
||||||
|
XE XêXI FPêQI IWX Pà WYV YR MRJâQI TMIY,
|
||||||
|
PMZVéI EYB ZMPW EJJVSRXW, QIYVXVMI à GSYTW HI TMIVVIW,
|
||||||
|
MGM, HIVVMèVI XSM, QEVXCV, SR ZIRH XSR HMIY !
|
||||||
|
|
||||||
|
GI HMIY UYM R'IWX UY'à XSM, QEVXCV, SR XI PI ZSPI !
|
||||||
|
SR PI PMZVI à QERHVMR, GI HMIY TSYV UYM XY QIYVW !
|
||||||
|
HIW LSQQIW, GSQQI XSM VIZêXYW HI P'éXSPI,
|
||||||
|
TSYV êXVI GEVHMREYB, TSYV êXVI WéREXIYVW,
|
||||||
|
|
||||||
|
HIW TVêXVIW, TSYV EZSMV HIW TEPEMW, HIW GEVVSWWIW,
|
||||||
|
IX HIW NEVHMRW P'éXé VMERX WSYW PI GMIP FPIY,
|
||||||
|
TSYV EVKIRXIV PIYV QMXVI IX TSYV HSVIV PIYVW GVSWWIW,
|
||||||
|
TSYV FSMVI HI FSR ZMR, EWWMW TVèW H'YR FSR JIY,
|
||||||
|
|
||||||
|
EY JSVFER HSRX PE QEMR HERW PI QIYVXVI IWX XVIQTéI,
|
||||||
|
EY PEVVSR GLEVKé H'SV UYM TECI IX UYM WSYVMX,
|
||||||
|
KVERH HMIY ! VIXSYVRI-XSM ZIVW RSYW, XêXI GSYTéI !
|
||||||
|
MPW ZIRHIRX NéWYW-GLVMWX ! MPW ZIRHIRX NéWYW-GLVMWX !
|
||||||
|
|
||||||
|
MPW PMZVIRX EY FERHMX, TSYV UYIPUYIW WEGW WSVHMHIW,
|
||||||
|
P'éZERKMPI, PE PSM, P'EYXIP éTSYZERXé,
|
||||||
|
IX PE NYWXMGI EYB CIYB WéZèVIW IX GERHMHIW,
|
||||||
|
IX P'éXSMPI HY GSIYV LYQEMR, PE ZéVMXé !
|
||||||
|
|
||||||
|
PIW FSRW NIXéW, ZMZERXW, EY FEKRI, SY QSVXW, EYB JPIYZIW,
|
||||||
|
P'LSQQI NYWXI TVSWGVMX TEV GEVXSYGLI WCPPE,
|
||||||
|
P'MRRSGIRX éKSVKé, PI HIYMP WEGVé HIW ZIYZIW,
|
||||||
|
PIW TPIYVW HI P'SVTLIPMR, MPW ZIRHIRX XSYX GIPE !
|
||||||
|
|
||||||
|
XSYX ! PE JSM, PI WIVQIRX UYI HMIY XMIRX WSYW WE KEVHI,
|
||||||
|
PI WEMRX XIQTPI Sù, QSYVERX, XY HMW :MRXVSïFS,
|
||||||
|
MPW PMZVIRX XSYX ! TYHIYV, ZIVXY ! — QEVXCV, VIKEVHI,
|
||||||
|
VSYZVI XIW CIYB UY'IQTPMX PE PYIYV HY XSQFIEY ; —
|
||||||
|
|
||||||
|
MPW ZIRHIRX P'EVGLI EYKYWXI Sù P'LSWXMI éXMRGIPPI !
|
||||||
|
MPW ZIRHIRX GLVMWX, XI HMW-NI ! IX WIW QIQFVIW PMéW !
|
||||||
|
MPW ZIRHIRX PE WYIYV UYM WYV WSR JVSRX VYMWWIPPI,
|
||||||
|
IX PIW GPSYW HI WIW QEMRW, IX PIW GPSYW HI WIW TMIHW !
|
||||||
|
|
||||||
|
MPW ZIRHIRX EY FVMKERH UYM GLID PYM PIW EXXMVI
|
||||||
|
PI KVERH GVYGMJMé WYV PIW LSQQIW TIRGLé ;
|
||||||
|
MPW ZIRHIRX WE TEVSPI, MPW ZIRHIRX WSR QEVXCVI,
|
||||||
|
IX XSR QEVXCVI à XSM TEV-HIWWYW PI QEVGLé !
|
||||||
|
|
||||||
|
XERX TSYV PIW GSYTW HI JSYIX UY'MP VIçYX à PE TSVXI !
|
||||||
|
GéWEV ! XERX TSYV P'EQIR, XERX TSYV P'EPPéPYME !
|
||||||
|
XERX TSYV PE TMIVVI Sù ZMRX LIYVXIV WE XêXI QSVXI !
|
||||||
|
XERX TSYV PI HVET VSYKM UYI WE FEVFI IWWYCE !
|
||||||
|
|
||||||
|
MPW ZIRHIRX WIW KIRSYB QIYVXVMW, WE TEPQI ZIVXI,
|
||||||
|
WE TPEMI EY JPERG, WSR SIMP XSYX FEMKRé H'MRJMRM,
|
||||||
|
WIW TPIYVW, WSR EKSRMI, IX WE FSYGLI IRXVSYZIVXI,
|
||||||
|
IX PI GVM UY'MP TSYWWE : PEQQE WEFEGXLERM !
|
||||||
|
|
||||||
|
MPW ZIRHIRX PI WéTYPGVI ! MPW ZIRHIRX PIW XéRèFVIW !
|
||||||
|
PIW WéVETLMRW GLERXERX EY WIYMP TVSJSRH HIW GMIYB,
|
||||||
|
IX PE QèVI HIFSYX WSYW P'EVFVI EYB FVEW JYRèFVIW,
|
||||||
|
UYM, WIRXERX Pà WSR JMPW, RI PIZEMX TEW PIW CIYB !
|
||||||
|
|
||||||
|
SYM, GIW éZêUYIW, SYM, GIW QEVGLERHW, SYM, GIW TVêXVIW
|
||||||
|
E P'LMWXVMSR HY GVMQI, EWWSYZM, GSYVSRRé,
|
||||||
|
E GI RéVSR VITY UYM VMX TEVQM PIW XVEîXVIW,
|
||||||
|
YR TMIH WYV XLVEWéEW, YR GSYHI WYV TLVCRé,
|
||||||
|
|
||||||
|
EY ZSPIYV UYM XYE PIW PSMW à GSYTW HI GVSWWI,
|
||||||
|
EY TMVEXI IQTIVIYV RETSPéSR HIVRMIV,
|
||||||
|
MZVI HIYB JSMW, MQQSRHI IRGSV TPYW UYI JéVSGI,
|
||||||
|
TSYVGIEY HERW PI GPSEUYI IX PSYT HERW PI GLEVRMIV,
|
||||||
|
|
||||||
|
MPW ZIRHIRX, ô QEVXCV, PI HMIY TIRWMJ IX TâPI
|
||||||
|
UYM, HIFSYX WYV PE XIVVI IX WSYW PI JMVQEQIRX,
|
||||||
|
XVMWXI IX RSYW WSYVMERX HERW RSXVI RYMX JEXEPI,
|
||||||
|
WYV PI RSMV KSPKSXLE WEMKRI éXIVRIPPIQIRX !
|
||||||
36
src/raw_file.py
Normal file
36
src/raw_file.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from substitution import Substitution
|
||||||
|
|
||||||
|
|
||||||
|
def get_signature(filename):
|
||||||
|
with open(filename, 'rb') as fobj:
|
||||||
|
raw_bytes = fobj.read()
|
||||||
|
print(raw_bytes)
|
||||||
|
|
||||||
|
|
||||||
|
def detect_cipher(filename):
|
||||||
|
sub = Substitution()
|
||||||
|
with open(filename, 'r') as fobj:
|
||||||
|
try:
|
||||||
|
for line in fobj.readlines():
|
||||||
|
sub.detectCipher(line)
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
print(f"Cannot read the file {filename}")
|
||||||
|
|
||||||
|
|
||||||
|
get_signature("test.txt")
|
||||||
|
|
||||||
|
|
||||||
|
# Try with an RSA file encrypted
|
||||||
|
detect_cipher("tests/ciphertext.rsa")
|
||||||
|
|
||||||
|
"""
|
||||||
|
Encrypting with RSA
|
||||||
|
$ openssl genrsa -out private.key 2048
|
||||||
|
$ openssl rsa -in private.key -out public.pem -pubout
|
||||||
|
$ openssl rsautl -encrypt -inkey public.pem -pubin -in plaintext.txt > ciphertext
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Try with a ASCII file
|
||||||
|
detect_cipher("test.txt")
|
||||||
18
src/substitution.py
Normal file
18
src/substitution.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from cipher import Cipher
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
class Substitution(Cipher):
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def detectCipher(self, data):
|
||||||
|
"""
|
||||||
|
Here, we are going to detect a succession of letters
|
||||||
|
"""
|
||||||
|
res = re.search("[a-zA-Z ]{1,}", data)
|
||||||
|
if res:
|
||||||
|
print(res.group(0))
|
||||||
|
|
||||||
BIN
src/tests/ciphertext.rsa
Normal file
BIN
src/tests/ciphertext.rsa
Normal file
Binary file not shown.
27
src/tests/private.key
Normal file
27
src/tests/private.key
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEpAIBAAKCAQEApc5mycmtCdX8OrGho7w8iRLUYyspRYoNO+3YeddOWdDaudBD
|
||||||
|
bdcjIeMzVlqlPoa/FXMC8DwvbjwCt6GcJkJdJcWgFkiTiw4HXHx4bLO3/9ZRtlOK
|
||||||
|
n1vyPRFK/S7JgoFiJsjppZl+iUbNOYmqWu1LURWNjLsUNIneS4SzqIrUqO55q+hf
|
||||||
|
bUHByVy59E3XQ9IGK9tvDHSdKQFJw5Nv+0dR9sVUSc6rfYKI+/+9aN87YbaS6TKw
|
||||||
|
b3F5Ig5FytOuMSCaIzAuivjCBSqgg4mtbIK10gcmPlmH00nngVxZpAHw8uotj28w
|
||||||
|
5hZY9Am/ZxTZTZlVPyr6PYFFkHM7RwdG82xw7QIDAQABAoIBAQCXqev1ykdAxv64
|
||||||
|
BYGQTv+kdpfVukY/OJ8QYWhxUtN1boiUDP+QuoiFV9i+tZ2PSxwAl7ppWvQbxkLK
|
||||||
|
C8bUbEHd6h6cI3jqakOrgqN48w9ssnL97v7O9ADpgSbx3lkuygCo74BhHL1U/nF8
|
||||||
|
nwM3tvT8z1UyFHHP+QhgVZssoQkTF88T4IQ4hii6EtfgltDfHKLfSfrFHWyNaXYc
|
||||||
|
hKoixPjoYjxrm1UUpQvdNs6CY48AG65cgmXmDkeGN5HXvXEH/buUQmXDJYVoy5uD
|
||||||
|
+qGohOi8Ssfi/kqVd7E7d5c7m87+Lh9pnELWwtvfa42pC1KfGjulyW3+11FxytiK
|
||||||
|
soCEvT01AoGBANSv1q+MgWRSTogrdwzmpLmwBfy5FKxSCUZY83ViGz7dZFIOp4mI
|
||||||
|
fmXEizkPe/DHwlr7LpO5GFNgqasVkS9ghwu9Tn9kCG5WAJ7FG7w1VDWraIKHq8uW
|
||||||
|
clfKcq5kUkc1k4idDYvG4lD7QiBTYPY7Ud7dGfk1qNgEN45qfnXGplBDAoGBAMeS
|
||||||
|
gFVr2/5ncuZxj6Sb/RkwAizG46n0lZCPEd5j5eH96S5YajsqZE9YojL1QjK33qjH
|
||||||
|
kOk676GJSIWL9HD2xjfkSEtQwgqfzInT0uAopZxPLICya5aH3SpdDhEyNEiBixQZ
|
||||||
|
UzAKBwWz9+cS8mdD6kLcMkWMdmp1tI6f2wfZKf8PAoGAZIu0DE16JfkbExipMTog
|
||||||
|
CYCDdBPzB/vIUq9eeNGmW7PB52DyJvyV9HpT7ue5Cf0FjolMXZ2VOGVsEGsjtagG
|
||||||
|
b7BQ2bxql+6kYGqCUBlN9AlSYNLOjnJTH9mfGX5nvy4+zsigTMH635nIiwufvQgS
|
||||||
|
Di+sRbnuViC4OuVxXzBIE40CgYBu+cVJOugjaK0Y/c8NjvxH9E1RTuusR2if8R7T
|
||||||
|
lqNvbr0q21l/Owx6nuPbCEzeXSaAnjCzsOUt42QjdvbflioVTGjzEJ5GQCQCBHs/
|
||||||
|
0Pp+l/w8OHrhQv22H/bBkzRFmVuYOpjqnrjW8AOLSBrpV3e95CpESF5Uxs03fibT
|
||||||
|
D2xt+wKBgQCAn6Gufh1XmeQwebqRLd2spgI3hs+7AUcY/gLvVDjQRplTK07QpD34
|
||||||
|
NN2CrkW8iKxBM8MgQVzJPAwYtCVpSwuei7S+frtquEKl04kAB9jKw6ez2ur5vvut
|
||||||
|
1jCFT7wRPNDPB3q9NKVylz1R8JvAts7GViTphlUXFPSBlORrBBbUdg==
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
27
src/tests/public.key
Normal file
27
src/tests/public.key
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEpAIBAAKCAQEApc5mycmtCdX8OrGho7w8iRLUYyspRYoNO+3YeddOWdDaudBD
|
||||||
|
bdcjIeMzVlqlPoa/FXMC8DwvbjwCt6GcJkJdJcWgFkiTiw4HXHx4bLO3/9ZRtlOK
|
||||||
|
n1vyPRFK/S7JgoFiJsjppZl+iUbNOYmqWu1LURWNjLsUNIneS4SzqIrUqO55q+hf
|
||||||
|
bUHByVy59E3XQ9IGK9tvDHSdKQFJw5Nv+0dR9sVUSc6rfYKI+/+9aN87YbaS6TKw
|
||||||
|
b3F5Ig5FytOuMSCaIzAuivjCBSqgg4mtbIK10gcmPlmH00nngVxZpAHw8uotj28w
|
||||||
|
5hZY9Am/ZxTZTZlVPyr6PYFFkHM7RwdG82xw7QIDAQABAoIBAQCXqev1ykdAxv64
|
||||||
|
BYGQTv+kdpfVukY/OJ8QYWhxUtN1boiUDP+QuoiFV9i+tZ2PSxwAl7ppWvQbxkLK
|
||||||
|
C8bUbEHd6h6cI3jqakOrgqN48w9ssnL97v7O9ADpgSbx3lkuygCo74BhHL1U/nF8
|
||||||
|
nwM3tvT8z1UyFHHP+QhgVZssoQkTF88T4IQ4hii6EtfgltDfHKLfSfrFHWyNaXYc
|
||||||
|
hKoixPjoYjxrm1UUpQvdNs6CY48AG65cgmXmDkeGN5HXvXEH/buUQmXDJYVoy5uD
|
||||||
|
+qGohOi8Ssfi/kqVd7E7d5c7m87+Lh9pnELWwtvfa42pC1KfGjulyW3+11FxytiK
|
||||||
|
soCEvT01AoGBANSv1q+MgWRSTogrdwzmpLmwBfy5FKxSCUZY83ViGz7dZFIOp4mI
|
||||||
|
fmXEizkPe/DHwlr7LpO5GFNgqasVkS9ghwu9Tn9kCG5WAJ7FG7w1VDWraIKHq8uW
|
||||||
|
clfKcq5kUkc1k4idDYvG4lD7QiBTYPY7Ud7dGfk1qNgEN45qfnXGplBDAoGBAMeS
|
||||||
|
gFVr2/5ncuZxj6Sb/RkwAizG46n0lZCPEd5j5eH96S5YajsqZE9YojL1QjK33qjH
|
||||||
|
kOk676GJSIWL9HD2xjfkSEtQwgqfzInT0uAopZxPLICya5aH3SpdDhEyNEiBixQZ
|
||||||
|
UzAKBwWz9+cS8mdD6kLcMkWMdmp1tI6f2wfZKf8PAoGAZIu0DE16JfkbExipMTog
|
||||||
|
CYCDdBPzB/vIUq9eeNGmW7PB52DyJvyV9HpT7ue5Cf0FjolMXZ2VOGVsEGsjtagG
|
||||||
|
b7BQ2bxql+6kYGqCUBlN9AlSYNLOjnJTH9mfGX5nvy4+zsigTMH635nIiwufvQgS
|
||||||
|
Di+sRbnuViC4OuVxXzBIE40CgYBu+cVJOugjaK0Y/c8NjvxH9E1RTuusR2if8R7T
|
||||||
|
lqNvbr0q21l/Owx6nuPbCEzeXSaAnjCzsOUt42QjdvbflioVTGjzEJ5GQCQCBHs/
|
||||||
|
0Pp+l/w8OHrhQv22H/bBkzRFmVuYOpjqnrjW8AOLSBrpV3e95CpESF5Uxs03fibT
|
||||||
|
D2xt+wKBgQCAn6Gufh1XmeQwebqRLd2spgI3hs+7AUcY/gLvVDjQRplTK07QpD34
|
||||||
|
NN2CrkW8iKxBM8MgQVzJPAwYtCVpSwuei7S+frtquEKl04kAB9jKw6ez2ur5vvut
|
||||||
|
1jCFT7wRPNDPB3q9NKVylz1R8JvAts7GViTphlUXFPSBlORrBBbUdg==
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
9
src/tests/public.pem
Normal file
9
src/tests/public.pem
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApc5mycmtCdX8OrGho7w8
|
||||||
|
iRLUYyspRYoNO+3YeddOWdDaudBDbdcjIeMzVlqlPoa/FXMC8DwvbjwCt6GcJkJd
|
||||||
|
JcWgFkiTiw4HXHx4bLO3/9ZRtlOKn1vyPRFK/S7JgoFiJsjppZl+iUbNOYmqWu1L
|
||||||
|
URWNjLsUNIneS4SzqIrUqO55q+hfbUHByVy59E3XQ9IGK9tvDHSdKQFJw5Nv+0dR
|
||||||
|
9sVUSc6rfYKI+/+9aN87YbaS6TKwb3F5Ig5FytOuMSCaIzAuivjCBSqgg4mtbIK1
|
||||||
|
0gcmPlmH00nngVxZpAHw8uotj28w5hZY9Am/ZxTZTZlVPyr6PYFFkHM7RwdG82xw
|
||||||
|
7QIDAQAB
|
||||||
|
-----END PUBLIC KEY-----
|
||||||
10
src/transposition.py
Normal file
10
src/transposition.py
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from cipher import Cipher
|
||||||
|
|
||||||
|
class Transposition(Cipher):
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def detectCipher(self, data):
|
||||||
|
pass
|
||||||
Loading…
Reference in New Issue
Block a user