Wednesday, May 31, 2006

Codification de nombres camouflés

Je suis tombé sur ceci:
http://www.bashfr.org/?2234

Puis la question m'est venue:
Comment gerer une quantité importante de média sans que quelqu'un d'exterieur puisse facilement identifier ce qui est noté dessus.
Je ne parle pas du contenu reel.

Il y a une facon simple, c'est de les numéroter.
Mais le problème est que si la personne tombe sur un media numero 182, ou 1430, ca indiquera tout de suite la proportion de media gérée.

J'ai imaginer une facon de camoufler un etiquetage...

Utilisons les voyelles comme des digits.

A : 0
E : 1
I : 2
O : 3
U : 4
Y : 5

000 = AAA
001 = AAE
002 = AAI
003 = AAO
005 = AAY
010 = AEA
011 = AEE

Le moyen de le camoufler est simple, construire des mots incompréhensible contenant le code.

000 = AAA => Carada
001 = AAE => Jafaje
002 = AAI => Wafadi
003 = AAO => Talati
005 = AAY => Halapo
010 = AEA => Lasacy
011 = AEE => Lameve

Evidement A-Y forme une base 6, l'idéal serait d'avoir une base 10
Il nous faut donc trouver 4 autres symboles.
par exemple:

"a" : 0
"e" : 1
"i" : 2
"o" : 3
"u" : 4
"y" : 5
"." : 6
"/" : 7
":" : 8
"-" : 9

182 = e:i => Gef:ni
3769 = o/.- => Ton/D.b-


ou bien jouer sur les majuscules/minuscules:
a : 0
e : 1
i : 2
o : 3
u : 4
y : 5
A : 6
E : 7
U : 8
Y : 9


182 = eUi => CerUmi
1430 = euoa => TeduKoka
3769 = oEAY => LomEPAFYg


Il y a encore énormement de variante possible, comme celle de décaler l'ordre de la liste des symboles en fonction du rang.

exemple
43210
^^^^^
||||`---- dans la liste +0
|||`----- dans la liste +1
||`------ dans la liste +2
|`------- dans la liste +3
`-------- dans la liste +4


Liste +0:  Liste +1:  Liste +2:
a : 0 1 2
e : 1 2 3
i : 2 3 4
o : 3 4 5
u : 4 5 6
y : 5 6 7
A : 6 7 8
E : 7 8 9
U : 8 9 0
Y : 9 0 1

Droits de lecture/ecriture sur un repository CVS

Voir http://durak.org/cvswebsites/doc/cvs_36.php#SEC36

En résumé, tous les users ont un access "read" au CVS.

Il y a deux façon d'exclure le "write" :
1. L'inscrire dans la liste des "CVSROOT/readers"
2. Ne pas l'inscrire dans la liste des "CVSROOT/writers"

La seule façon de ne pas permettre l'accès est donc de supprimer son user/password d'accès.


Update:

Voici un petit script (vite fait) pour aider è vérifier les accès:


#!/bin/sh

ls -d /PATH/TO/CVSROOT |while read dir
do
echo "### CVS: $dir"
if [ ! -f $dir/passwd ]; then
echo "# Pas de fichier passwd, droits system"
ls -ld /prod /prod/devel
ls -ld $(dirname $(dirname $dir))
ls -ld $(dirname $dir)
ls -ld $dir
echo "### END"
echo
echo
continue
fi
awk -F: '{print $1}' $dir/passwd |grep -v '^$' |sort > /tmp/ro
if [ ! -f $dir/writers ]; then
echo "# Pas de fichier writers, tous les users ont access rw:"
cat /tmp/ro
else
awk -F: '{print $1}' $dir/writers |grep -v '^$' |sort > /tmp/rw
echo "# User rw (fichier writers):"
cat /tmp/rw
diff -u /tmp/ro /tmp/rw|grep -- '^[+-]\+'
fi
if [ ! -f "$dir/readers" ]; then
echo "# Pas de fichier readers."
else
echo "# Fichier readers:"
cat $dir/readers 2>&1
fi
echo "### END"
echo
echo
done