Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
- Accueil
- » Programmation
- » [Python]Kit d'aide à la cryptanalyse
- » Répondre
Répondre
Résumé de la discussion (messages les plus récents en premier)
- python
- 03-09-2024 02:20:55
bonsoir
je voulais dire mercie pour le fichier que tu menvoie
sava me aide vraiment mercie beaucoup
- DrStone
- 01-09-2024 23:34:15
Bonsoir Ernst.
En effet, ce n'est pas à la portée de tout le monde. Ce qui est tout de même triste dans cette affaire c'est qu'à une époque, pourtant pas si lointaine, tout ceci était accessible dans les grandes lignes à un élève de terminale.
En effet, l'Open Source est un mouvement d'une très grande importance en informatique (dans toutes ses branches) et pas uniquement qu'en cryptographie. Espérons que ce mouvement perdurera dans le temps ! Nos systèmes étant de plus en plus verrouillés et les entreprises toujours promptes à nous casser les noix afin de ne pas nous laisser posséder nos machines (comme HP qui cherche à faire des imprimantes à abonnements…)
- Ernst
- 01-09-2024 22:20:40
Bonsoir,
Pour te donner une idée, voici vers quoi tu veux te lancer : https://www.math.univ-paris13.fr/~boyer … to2010.pdf. Et il s'agit seulement d'un cours pour "débutant".
Ah oui, c'est touffu. J'aime beaucoup le point 1.2 et 1.3 qui expliquent bien, je trouve, les développements actuels et surtout la nécessité de l'open source. Merci pour ce lien.
- python
- 01-09-2024 21:51:31
bonsoire
Mercie beaucoup pour cette information sur la cryptographi je sais vraiment pa quoi te dire me tout simplement jetais dit mercie
- DrStone
- 31-08-2024 22:22:19
Bonsoir.
Je ne sais pas quel âge tu as (même si je tablerais sur le fait que tu as moins de quinze ans…) mais si tu souhaites réellement faire de la cryptographie, il va te falloir faire trois choses.
Travailler ton français (ou ta quelconque langue maternelle) ainsi que l'anglais : ce sera extrêmement important pour la suite.
Faire des mathématiques à l'école… eh oui, la cryptographie (et l'informatique en général) c'est surtout beaucoup de mathématiques. Voir par exemple cette page wikipedia sur l'agorithme RSA qui, déjà, met beaucoup de la théorie sous le tapis.
Quand je dis que tu devras faire des mathématiques à l'école, ce n'est pas juste au collège et au lycée (où tu devras prendre l'option mathématique) mais aussi dans le supérieur (à l'université, en classe préparatoires et/ou en école d'ingénieurs) car la cryptographie demande de faire des mathématiques "pour les grands".
Pour te donner une idée, voici vers quoi tu veux te lancer : https://www.math.univ-paris13.fr/~boyer … to2010.pdf. Et il s'agit seulement d'un cours pour "débutant".Apprendre non pas seulement un langage de programmation comme Python (d'ailleurs on est pas "étudiant" dans un langage de programmation… ça ne veut rien dire cette histoire) mais l'informatique : les computer sciences. Car c'est bien de cela qu'il s'agit, d'une "science informatique". Il te faudra alors, encore une fois, prendre une option au lycée, l'option Numérique et Sciences Informatique (NSI) puis partir à l'université, en prépa et/ou en école d'ingénieur. Tu peux avoir une idée de ce que tu devras apprendre en informatique, ne serait-ce qu'au lycée, en allant voir ici pour la première et ici pour la terminale.
Mais bon, mon petit doigt me dit que rien de tout ceci ne t'intéresse vraiment et que tu souhaites juste avoir le bout de code qui va bien pour l'utiliser contre quelqu'un qui t'ennuie ou que sais-je encore.
- python
- 31-08-2024 15:20:39
bonjour
te fort vraiment
moi suis seulement debitant
- yoshi
- 29-08-2024 18:43:29
Bonsoir,
Je ne comprends pas ce que tu veux savoir.
Le n° 1 de quoi ? C'est quoi ? un fichier codé ?...
En revanche, vois-tu, ce que je peux te dire, c'est que ce fichier :
D:\exercices\.spyproject\config\backups\Lettres_crypto.je_un_homme_benie_sur_cette_terre, il est enregistré sur le disque D:\ de ton ordinateur et qu'en conséquence, personne (sauf un hacker, bien sûr), donc pas moi, peut rentrer sur ton ordi, lire fichier et donc pirater ta machine et y voler toutes tes données personnelles et le pirater...
Par contre à partir d'un fichier codé, je peux le découper en groupes de 5 lettres, comme c'est la tradition, à partir de Python.
Avec Python, ça se fait sans fatigue, il faut seulement que le texte soit une "chaîne de caractères" :
'PARCONTREJEPEUXDÉCOUPERUNTEXTEENGROUPESDE5LETTRESCOMMEONLEFAITHABITUELLEMENTAVECPYTHONOUTOUTAUTRELANGAGEDEPROGRAMMATION'
et on obtient
['PARCO', 'NTREJ', 'EPEUX', 'DÉCOU', 'PERUN', 'TEXTE', 'ENGRO', 'UPESD', 'E5LET', 'TRESC', 'OMMEO', 'NLEFA', 'ITHAB', 'ITUEL', 'LEMEN', 'TAVEC', 'PYTHO', 'NOUTO', 'UTAUT', 'RELAN', 'GAGED', 'EPROG', 'RAMMA', 'TION']
Ensuite je peux encore afficher le texte découpé en colonnes (par exemple en lignes de 10 colonnes).
from textwrap import wrap
message='PARCONTREJEPEUXDÉCOUPERUNTEXTEENGROUPESDE5LETTRESCOMMEONLEFAIT'
message+='HABITUELLEMENTAVECPYTHONOUTOUTAUTRELANGAGEDEPROGRAMMATION'
Decoupe=wrap(message,5)
l=len(Decoupe)
lign=l//10+1
for i in range(lign):
print()
if i<2:
fin =10
else:
fin=l%10
for j in range(fin):
no=10*i+j
print (Decoupe[no],end=" ")
Affichage :
PARCO NTREJ EPEUX DÉCOU PERUN TEXTE ENGRO UPESD E5LET TRESC
OMMEO NLEFA ITHAB ITUEL LEMEN TAVEC PYTHO NOUTO UTAUT RELAN
GAGED EPROG RAMMA TION
@+
[EDI]Le code que j'ai proposé ne me plaisait pas, je le trouvais "moche"...
J'y ai donc repensé dans mon lit, et j'ai trouvé mieux :
from textwrap import wrap
ms='PARCONTREJEPEUXDÉCOUPERUNTEXTEENGROUPESDE5LETTRESCOMMEONLEFAITHABITUELLEMENTAVECPYTHONOUTOUTAUTRELANGAGEDEPROGRAMMATION'
Decoupe=wrap(ms,5] # découpage en bloc de 5
# Ci dessous, grâce à enumerate() la boucle gère les blocs et l'index de chacun : pas besoin de connaitre le nb de blocs
for i,bloc in enumerate(Decoupe):
if i%10==0 and i>0: # si i est un multiple de 10 supérieur à 0
print() # force le retour à la ligne
print(bloc,end= " ") #Affiche chaque bloc, à la suite du précédent et séparé par une espace
Le code me donne bien ce que j'attends :
PARCO NTREJ EPEUX DÉCOU PERUN TEXTE ENGRO UPESD E5LET TRESC
OMMEO NLEFA ITHAB ITUEL LEMEN TAVEC PYTHO NOUTO UTAUT RELAN
GAGED EPROG RAMMA TION
- python
- 29-08-2024 15:56:03
toi alors tu es qui un programmeur sur quelle langage ou un cryptologue
moi je suis un etudient en langage python alors toi
- python
- 29-08-2024 15:48:58
bonjour
sur le numerro 1. Crypto_grammes.py
voici ceque je trouve
******************************************************
* Découpe de Crypto selon longueur de ligne/clé *
* v. 1.1 *
******************************************************
Quelle est la longueur de la ligne -ou de la clé- (maximum 36 ?) 36
Enregistrement du crypto lettre par lettre et des index de position
Fichier enregistré : D:\exercices\.spyproject\config\backups\Lettres_crypto.je_un_homme_benie_sur_cette_terre
---------------------------------------------------
*** IMPRESSIONS VIA UN TABLEUR ***
du fichier lettres_crypto.je_un_homme_benie_sur_cette_terre (orientation de la page en "Paysage") :
* Marges H, B, G et D : 1 cm,
* Police Arial 10 taille 10,
* Supprimer En-Tête et Pied de Page (Avec OOo Calc décocher Activer),
* Centrer les colonnes,
* Par 3 lignes à la fois, mettre un quadrillage.
Pour quitter, presser la touche ENTREE
esque cetait ça la resolution ou pa
- yoshi
- 27-08-2024 19:53:38
Bonsoir,
On ne peut pas dire que je suis "fort", ça m'a intéressé, c'est tout, surtout la programmation...
Mais ici, il y a au moins 2 ou 3 personnes, qui, elles sont fortes...
Sur notre site, tu trouveras un très gros dossier sur la cryptographie du passé, mais aussi d'aujourd'hui :
https://www.bibmath.net/crypto/index.php
Ce sous-forum de Bibmath est un lieu d'échanges, de questions/réponses sur la cryptographie :
https://www.bibmath.net/forums/viewforum.php?id=6
Une dernière chose : plus un message est court, plus il est difficile à décoder...
@+
- python
- 27-08-2024 18:09:15
ok alors pour la precision
te fort sur la cryptographie je vous lais juste connaitre moi aussi jaime beaucoup la cryptographie me moi je suis sur la programmation de
pyphon donc je suis a la formation
- yoshi
- 22-08-2024 18:45:08
Bonsoir,
Non, c'est un logiciel de Programmation destiné à ceux qui veulent programmer, c'est à dire écrire une suite d'instructions permettant à l'ordinateur d'effectuer une tâche précise.
Cette tâche précise peut être une suite de calculs, ou même si tu en es capable, crypter (et décoder) les données présentes sur ta machine.
Mais ce dernier point n'est pas à la portée de tous...
Python, comme les autres langages de programmation (C, C++, Pascal, BASICs, etc...), ne fait rien tout seul : il attend les ordres !
@+
- python
- 22-08-2024 17:55:01
bonjour
s'il vous plait je merai savoir esque c'est un logiciel qui crypte de donnee da l'ordinateur
- yoshi
- 17-08-2009 11:51:41
Bonjour,
Pour plus de détails vous reporter à l'épinglé de même nom dans le sous-forum cryptographie...
Voici les lignes de code pour Python 2.5 ou 2.6.
1. Crypto_grammes.py
# -*- coding: CP1252 -*-
from time import time
from os import getcwd,remove
from operator import itemgetter
def ecriture_fichiers_intermediaires(xgr,lgx,nomf,fl):
f2=open(nomf,"w")
for i in xrange(lgx):
(a,b),(c,d)=xgr[i],xgr[i-1]
if a[0]!=c[0]and i>0 and fl:
f2.write(','+'\n')
f2.write(a+','+b+'\n')
f2.close()
return
def prepare_tri(a,c,d,e,LL,vides,blang):
if c == e:
if c==a:
ecart=abs(int(b)-int(d))
Ecart.append(ecart)
LL.append(c+','+d+','+str(ecart))
else:
LL.append(c+','+d+',')
blang=0
else:
if c == a:
ecart= abs(int(b)-int(d))
Ecart.append(ecart)
LL.append(c+','+d+','+str(ecart))
LL.append(',,')
else :
if blang == 0:
LL.append(',,')
blang=1
return LL,blang,Ecart
tp_d=time()
print " ******************************************"
print " * Analyse des X_grammes *"
print " * v. 2.1 *"
print " ******************************************"
print
rep = getcwd()
nom=rep+chr(92)+"fichier_crypto.txt"
fichier=open(nom,'r')
L=fichier.readlines()
fichier.close()
crypto=L[0].strip("\n")
crypto=crypto.replace(' ','')
crypto=crypto.upper()
lg_crypto=len(crypto)
qb_grm,q_grm,t_grm,b_grm,Ecart,Ecarts,Lq,Lt,Lb,Ll =[],[],[],[],[],[],[],[],[],[]
lg_q,lg_t,lg_b=0,0,0
print "1. Constitution des x-grammes et tri alphabétique"
lg4, lg3, lg2,lg1 = lg_crypto-3, lg_crypto-2,lg_crypto-1,lg_crypto
for i in xrange(lg2):
if i<lg4:
a,b = crypto[i:i+4],str(i+1)
Lq.append(a)
qb_grm.append((a,b))
q_grm.append((a,b))
if i <lg3:
t_grm.append((crypto[i:i+3],str(i+1)))
Lt.append(crypto[i:i+3])
if i <lg2:
b_grm.append((crypto[i:i+2],str(i+1)))
Lb.append(crypto[i:i+2])
Ll.append(crypto[i])
# Tris alpha
q_grm.sort()
t_grm.sort()
b_grm.sort()
# Elimination doublons, triplons, dénombrement et tri par qtés décr
Lq=sorted([(x, Lq.count(x)) for x in set(Lq)])
Lq=sorted(Lq,key=itemgetter(1),reverse=True)
lg_q=len(Lq)
Lt=sorted([(x, Lt.count(x)) for x in set(Lt)])
Lt=sorted(Lt,key=itemgetter(1),reverse=True)
lg_t=len(Lt)
Lb=sorted([(x, Lb.count(x)) for x in set(Lb)])
Lb=sorted(Lb,key=itemgetter(1),reverse=True)
lg_b=len(Lb)
lg_m=max(lg_q,lg_t,lg_b)
Ll=sorted([(x, Ll.count(x)) for x in set(Ll)])
Ll=sorted(Ll,key=itemgetter(1),reverse=True)
lg_l=len(Ll)
# Enregistrements des x_grammes
# 1. Quadrigrammes
print "2. Enregistrements des quadrigrammes bruts et triés"
nombrut=rep+"\\qb_grm.txt"
nomtri=rep+"\\q_grm.txt" # Nom des fichiers à ouvrir
ecriture_fichiers_intermediaires(qb_grm,lg4,nombrut,0)
ecriture_fichiers_intermediaires(q_grm,lg4,nomtri,1)
print ' Fichier : '+nombrut
print ' Fichier : '+nomtri
print
# 2. Trigrammes
print "3. Enregistrements des trigrammes triés"
nomtri=rep+"\\t_grm.txt" # Nom du fichier à ouvrir
ecriture_fichiers_intermediaires(t_grm,lg3,nomtri,1)
print ' Fichier : '+nomtri
print
# 3. Bigrammes
print "4. Enregistrements des bigrammes triés"
nomtri=rep+"\\b_grm.txt" # Nom du fichier à ouvrir
ecriture_fichiers_intermediaires(b_grm,lg2,nomtri,1)
print ' Fichier : '+nomtri
print
# Lettres seules
print '5- Enregistrement des lettres par nombre de présences décroissant'
fich_l=open(rep+'\\Bilan_lettres_seules.csv','w')
for i in xrange(lg_l):
(a,b)=Ll[i]
fich_l.write(a+',,'+str(b)+'\n')
fich_l.close()
print ' Nom du fichier : '+rep+'\\Bilan_lettres_seules.csv'
# Constitution du fichier global sans les lettres seules
print "\n6. Enregistrement des xgrammes et leurs index"
f4b=open(rep+"\\qb_grm.txt","r") # Nom des fichiers à ouvrir
f4t=open(rep+"\\q_grm.txt","r")
f3t=open(rep+"\\t_grm.txt","r")
f2t=open(rep+"\\b_grm.txt","r")
L4b=f4b.readlines()
L4t=f4t.readlines()
L3t=f3t.readlines()
L2t=f2t.readlines()
f_g=open(rep+"\\X_grammes.csv","w")
lg4t,lg3t,lg2t,raccord,vides=len(L4t),len(L3t),len(L2t),",,",","
lg_maxi=max(lg4t,lg3t,lg2t)
lign1=" ,,X_4,,,, X_3 ,,, X_2,"
lign2="Succ.,N°,,Triés,Index,,Triés,Index,,Triés,Index"
for i in xrange(lg_maxi):
if i<lg4:
C4b=L4b[i].strip('\n')
else:
C4b=vides
if i<lg4t:
C4t=L4t[i].strip('\n')
else:
C4t=vides
if i<lg3t:
C3t=L3t[i].strip('\n')
else:
C3t=vides
if i<lg2t:
C2t=L2t[i]
else:
C2t=vides
if i%59==0:
f_g.write(lign1+"\n"+lign2+"\n")
lign3=C4b+raccord+C4t+raccord+C3t+raccord+C2t
f_g.write(lign3)
f_g.close()
f4b.close()
print ' Fichier ici : '+rep+'\\X_grammes.csv'
# Bilan condensé et écarts
f_b=open(rep+"\\Bilan_Xgrammes.csv","w")
ecrit,i,blanc4,blanc3,blanc2,bl,bilan=0,0,0,0,0,0,',,,,,,,,,,,BILAN,,,,,,,,,,,,'+"\n"
vides+=','
L4,L2,L3=[],[],[]
q_grm.append(('****','4'))
t_grm.append(('@@@','3'))
b_grm.append(('&&','2'))
for x in xrange(lg_maxi):
if x <lg4:
(a,b),(c,d),(e,f)=q_grm[x-1],q_grm[x],q_grm[x+1]
LL,blanc4,Ecart=prepare_tri(a,c,d,e,[],',,',blanc4)
L4+=LL
if x <lg3:
(a,b),(c,d),(e,f)=t_grm[x-1],t_grm[x],t_grm[x+1]
LL,blanc3,Ecart=prepare_tri(a,c,d,e,[],',,',blanc3)
L3+=LL
if x <lg2:
(a,b),(c,d),(e,f)=b_grm[x-1],b_grm[x],b_grm[x+1]
LL,blanc2,Ecart=prepare_tri(a,c,d,e,[],',,',blanc2)
L2+=LL
debut=',,,,'
l4,l3,l2,ligne_vide=len(L4),len(L3),len(L2),debut*2+vides
lg_maxi,blanc1,x=max(l4,l3,l2),0,0
Champs='4_grm,Index,Ecart,-*--*--*-*-,3_grm,Index,Ecart,-*-*-*-*-*-,2_grm,Index,Ecart\n'
bilan,vides= ',,,,,BILAN,,,,,\n',',,'
for i in range(lg_maxi):
if x % 59 ==0 :
f_b.write(bilan+Champs)
x=0
bl=0
if i<l4:
bl=(L4[i]==vides)
ligne=L4[i]+', ,'
else:
ligne=debut
bl+=1
if i<l3:
bl+=(L3[i]==vides)
ligne+=L3[i]+',,'
else:
ligne+=debut
bl+=1
if i<l2:
ligne+=L2[i]
bl+=(L2[i]==vides)
else:
ligne+=vides
bl+=1
if bl==3:
blanc1+=1
if blanc1==1:
f_b.write(ligne_vide+'\n')
x+=1
else:
f_b.write(ligne+'\n')
x+=1
blanc1=0
f4b.close()
f4t.close()
f3t.close()
f2t.close()
f_g.close()
print ' Fichier ici : '+rep+'\\Bilan_Xgrammes.csv'
fi_x=open(rep+'\\X_tri_decr.csv','w')
titres='4_grm, Qté,,3_grm, Qté,,2_grm, Qté\n'
for i in xrange(lg_m):
if i%60==0:
fi_x.write('\n'+titres)
if i < lg_q:
(a,b)=Lq[i]
ligne=a+','+str(b)+',,'
else:
ligne=',,,'
if i <lg_t:
(a,b)=Lt[i]
ligne+=a+','+str(b)+',,'
else:
ligne+=',,,'
if i < lg_b:
(a,b)=Lb[i]
ligne+=a+','+str(b)+'\n'
else:
ligne+=',,\n'
fi_x.write(ligne)
fi_x.close()
print ' Fichier ici : '+rep+'\\X_tri_decr.csv'
# Suppression des fichiers obsolètes
remove (rep+'\\qb_grm.txt')
remove (rep+'\\q_grm.txt')
remove (rep+'\\t_grm.txt')
remove (rep+'\\b_grm.txt')
print ' ---------------------------------------------------'
print ' *** IMPRESSIONS VIA UN TABLEUR ***'
print ' Xgrammes.csv :'
print ' * Marges H et B : 1 cm'
print ' * Police Courrier New taille 10'
print " * Ne pas utiliser d'En-Tête et de Pied de Page"
print
tp_f=time()
print ' Temps écoulé :',int(100*(tp_f-tp_d))/100.0,' s'
raw_input(' ... Pour Quitter, Pressez ENTREE ...')
Condition d'utilisation :
Le fichier à traiter doit impérativement :
- se nommer fichier_crypto.txt
- être prêt à l'emploi, sans chiffres, ni ponctuations, ni lettres accentuées
- avoir été tapé "au kilomètre", sans appui sur la touche ENTREE donc ; le plus sûr étant d'utiliser par exemple le Bloc-Notes,
- figurer dans le même dossier que Crypto_grammes.py.
Moyennant quoi, il vous suffira de lancer Crypto_grammes.py pour que le travail s'effectue (en moins d'une seconde).
2. Decoup_crypto.py
Pré-requis :
- L'existence dans le même dossier de fichier_crypto.txt,
- Si le texte a été codé via une clé, la longueur de ladite clé doit vous être connue.
Cet utilitaire ne vous demandera qu'une seule chose : la longueur souhaitée (en nombre de caractères) de la ligne ou de la clé.
# -*- coding:UTF-8 -*-
from os import getcwd,remove
print " ******************************************************"
print u" * Découpe de Crypto selon longueur de ligne/clé *"
print " * v. 1.1 *"
print " ******************************************************"
print
rep = getcwd()
nom=rep+"\\fichier_crypto.txt"
fichier=open(nom,'r')
L=fichier.readlines()
fichier.close()
crypto=L[0].strip("\n") # Suppression du caractère de retour à la ligne
crypto=crypto.replace(' ','') # Suppression des espaces
crypto=crypto.upper() # Passage du texte en majuscules
lg_crypto=len(crypto)
# Définition des limites en mode paysage
if lg_crypto <100:
limite=36
elif lg_crypto<1000:
limite = 30
else:
limite = 26
sortie,lg_cle=0,0
while not sortie:
try:
lg_cle=int(raw_input(u'Quelle est la longueur de la ligne -ou de la clé- (maximum '+str(limite)+' ?) ' ))
if lg_cle <= limite and lg_cle >0:
sortie=1
else:
print "Longueur hors limite d'impression, veuillez modifier votre choix, SVP !"
print
except ValueError:
print u"Ce n'est pas un nombre valide, veuillez recommencer s'il vous plaît"
print
# Paramétrage de l'enregistrement en vue de l'impression future
if limite%lg_cle==0:
orientation='"Paysage"'
lg=limite
nb_blocs=1
bas_page = 37
else:
lg=lg_cle
nb_blocs=limite/lg
if lg>limite/2 and lg<21:
bas_page=57
orientation='"Portrait"'
else:
bas_page=37
orientation='"Paysage"'
carac_par_ligne=nb_blocs*lg
blanc=(26-carac_par_ligne)/(nb_blocs-(nb_blocs>1))+1
reste=lg_crypto%carac_par_ligne
nb_lignes= lg_crypto/carac_par_ligne+(reste>0)
l,ligne_vide=-3,' ,'*(lg*nb_blocs-1)+'\n'
raccord=' ,'*blanc
# Découpe Crypto lettre par lettre
print "Enregistrement du crypto lettre par lettre et des index de position"
nom=rep+'\\lettres_crypto.csv'
fichier=open(nom,'w')
for ligne in xrange(nb_lignes):
ligne1,ligne2='',''
l+=4
for no_bloc in xrange(nb_blocs):
for col in xrange(lg):
index=carac_par_ligne*ligne+lg*no_bloc+col
if index>lg_crypto-1:
ligne1+=','*(col<(lg_crypto-1))
ligne2+=','*(col<(lg_crypto-1))
else:
ligne1+=str(index+1)
ligne2+=crypto[index]
if col<lg_cle-1:
ligne1+=','
ligne2+=','
if col==lg-1 and no_bloc<(nb_blocs-1):
ligne1+=raccord
ligne2+=raccord
fichier.write(ligne1+'\n'+ligne2+'\n'+ligne_vide*2)
if l==bas_page:
fichier.write(ligne_vide)
l=-3
fichier.close()
print u'\n Fichier enregistré : '+rep+'\\Lettres_crypto.csv'
print '\n ---------------------------------------------------'
print ' *** IMPRESSIONS VIA UN TABLEUR ***\n'
print 'du fichier lettres_crypto.csv (orientation de la page en '+orientation+') :'
print ' * Marges H, B, G et D : 1 cm,'
print ' * Police Arial 10 taille 10,'
print u' * Supprimer En-Tête et Pied de Page (Avec OOo Calc décocher Activer),'
print ' * Centrer les colonnes,'
if lg <21 and bas_page==57:
print ' * Forcer leur largeur à 0,9 cm,'
print u' * Par 3 lignes à la fois, mettre un quadrillage.'
print
raw_input('Pour quitter, presser la touche ENTREE')
Commentaires, remarques, suggestions bienvenus.
@+