Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

décodage ???

18 réponses
Avatar
unbewusst.sein
j'ai, dans une base de données, une fonction : get_py_string()

dont je connais, pour certaines valeurs d'entrée, la sortie :

=> 00200 # ce premier cas est une espace
- => 002d0
A => 4e003
B => 4eb83
C => 52283
D => 575e3
E => 5b373
F => 5bea3
G => 5e6e3
H => 61b03
I => 65a51
K => 6c123
L => 6e4d3
M => 745c3
N => 77673
O => 79443
P => 79633
R => 7f923
S => 80dc3
T => 85e93
U => 89521
V => 89522
Y => 91063
Z => 98c73

qq'un connaîtrait-il cet encodage ???

--
Une Bévue

10 réponses

1 2
Avatar
Olivier Miakinen
Le 04/12/2007 13:57, Une Bévue a écrit :
j'ai, dans une base de données, une fonction : get_py_string()

[...]

qq'un connaîtrait-il cet encodage ???



Non, mais il y a quelqu'un qui semble connaître.
http://www.google.fr/search?q=get_py_string

Ici, un certain « Une Bév. » dit qu'il l'a implémentée :
http://64.233.183.104/search?qÊche:gZbpVRChz8EJ:forums.communautes.aliceadsl.fr/message.php%3Fcat%3D%26id%3D442%26msg%3D%253C1i5zah5.1yqzhe31qpgdklN%2525unbewusst.sein%40weltanschauung.com.invalid%253E+get_py_string&hl=fr&ct=clnk&cd=1&gl=fr

<cit.>
bien sûr, j'ai implémenté les fonctions spécifiques get_zy_string,
get_py_string et get_first_char, elles respectent bien le type.
</cit.>

:-D
Avatar
Denis Beauregard
Le Tue, 4 Dec 2007 13:57:41 +0100,
(Une Bévue) écrivait dans
fr.comp.infosystemes.www.auteurs:

j'ai, dans une base de données, une fonction : get_py_string()



Quelle base de données ? Si on fouille, tous les messages semblent
provenir de "une bév" ou "une bévue"...

Reverse engineering ???


Denis
Avatar
Denis Beauregard
Le Tue, 04 Dec 2007 08:50:09 -0500, Denis Beauregard
écrivait dans
fr.comp.infosystemes.www.auteurs:

Le Tue, 4 Dec 2007 13:57:41 +0100,
(Une Bévue) écrivait dans
fr.comp.infosystemes.www.auteurs:

j'ai, dans une base de données, une fonction : get_py_string()



Quelle base de données ? Si on fouille, tous les messages semblent
provenir de "une bév" ou "une bévue"...

Reverse engineering ???



J'ai l'impression qu'il s'agit d'une fonction locale, qui pourrait
être get-pointeur-y-string, soit obtenir la position dans une table
locale de la chaîne en question, la réponse à A étant tout bonnement
la 1re chaîne de la table débutant par A.

get_zy_string serait alors get-zero-y-string, la position zéro de la
table.


Denis
Avatar
unbewusst.sein
Denis Beauregard
wrote:


Reverse engineering ???



oui, j'essaie de faire une synchro entre mon gsm et mon carnet d'adresse
sur mac.

jusqu'ici, j'avais "implémenté" cette fonction en retournant une string
***bidon***.

maintenant, j'ai déjà implémenté la vraie fonction get_zy_string
qui retourne le code hexa des 8 premiers caractères du nom d'une
personne concaténé avec son prénom (+upcase) en ajoutant des "00"...

par ex :

puts "'benitezcielo' => #{get_zy_string( 'benitezcielo' )}"
# => 'benitezcielo' => 00420045004e004900540045005a0043
B E N I T E Z C

get_py_string fait "un peu" la même chose sur les 8 premiers caractères
des nom et prénom MAIS l'encodage diffère.

à partir des entrées/sorties je suis parvenu à une correspondance mais
je n'ai pas trouvé le code (encodage) sur le même ex j'ai :

puts "'benitezcielo' => #{get_py_string( 'benitezcielo' )}"
# => 'benitezcielo' => 4eb835b3737767365a5185e935b37398c7352283


là j'ai obtenu l'encodage par une table de hashage à partir des
entrées/sorties connues...

MAIS, bien évidemment, je n'ai pas tous les caractères...

je suppose que l'encodage est qqc d'usuel, pour d'autres que moi...
--
Une Bévue
Avatar
unbewusst.sein
Denis Beauregard
wrote:

get_zy_string serait alors get-zero-y-string, la position zéro de la
table.



amha, ce n'est pas un pointeur, car je retrouve bien, pour les lettres
majuscules données, le même code...

ou alors ce serait un pointeur pour chaque lettre ???

j'ai pensé à un code "style" UTF-16 car cela provient de on gsm
Twin-Tact (e2831) d'origine chinoise, si je ne m'abuse...

donc prévu por des charactères Big5 ou équivalent...

--
Une Bévue
Avatar
Nicolas Krebs
Olivier Miakinen écrivit dans l'article news:47555501$

Le 04/12/2007 13:57, Une Bévue a écrit :
> j'ai, dans une base de données, une fonction : get_py_string()
>
> [...]
>
> qq'un connaîtrait-il cet encodage ???

Non, mais il y a quelqu'un qui semble connaître.
http://www.google.fr/search?q=get_py_string

Ici, un certain « Une Bév. » dit qu'il l'a implémentée :
http://64.233.183.104/search?qÊche:gZbpVRChz8EJ:forums.communautes.aliceadsl.fr/message.php%3Fcat%3D%26id%3D442%26msg%3D%253C1i5zah5.1yqzhe31qpgdklN%2525unbewusst.sein%40weltanschauung.com.invalid%253E+get_py_string&hl=fr&ct=clnk&cd=1&gl=fr



C'est à dire
http://www.google.com/search?qÊche:forums.communautes.aliceadsl.fr/message.php%3Fcat%3D%26id%3D442%26msg%3D%253C1i5zah5.1yqzhe31qpgdklN%2525unbewusst.sein%40weltanschauung.com.invalid%253E+get_py_string
ou news:1i5zah5.1yqzhe31qpgdklN%
(voir http://groups.google.com/groups?q=get_py_string )

<cit.>
bien sûr, j'ai implémenté les fonctions spécifiques get_zy_string,
get_py_string et get_first_char, elles respectent bien le type.
</cit.>



Voir « je ne connais pas bien ce que sont censées retourner les fonctions,
excepté le type. » dans
news:1i7qfc1.1praepynaf0cbN% .


:-D



!
Avatar
Olivier Miakinen
Le 04/12/2007 15:38, Une Bévue a écrit :

j'ai pensé à un code "style" UTF-16 car cela provient de on gsm
Twin-Tact (e2831) d'origine chinoise, si je ne m'abuse...

donc prévu pour des charactères Big5 ou équivalent...



Je ne connais *aucun* encodage qui code chaque caractère dans
2,5 octets...

Par ailleurs, en dehors du fait que les valeurs sont croissantes depuis
le codage de A ou x41 (4e003) jusqu'à celui de Z ou x5A (98c73) je
n'arrive pas à trouver de logique. Par exemple, si les bits du codage
étaient une combinaison linéaire des bits du caractère d'origine, on
devrait trouver des relations du style code(A)+code(D)=code(B)+code(C)
or je n'en trouve pas.

Je veux bien continuer à chercher, mais pour cela tu vas devoir donner
le résultat pour d'autres chaînes. Par exemple :
"x00x01x02x03x04x05x06x07"
"x08x09x0Ax0Bx0Cx0Dx0Ex0F"
"x10x11x12x13x14x15x16x17"
...
"xF8xF9xFAxFBxFCxFDxFExFF"
Avatar
unbewusst.sein
Olivier Miakinen <om+ wrote:

Je ne connais *aucun* encodage qui code chaque caractère dans
2,5 octets...



ouais, bonne remarque, mais bon, dans l'autre codage que j'ai décodé, il
y avait déjà un 00 inutile partout...

Par ailleurs, en dehors du fait que les valeurs sont croissantes depuis
le codage de A ou x41 (4e003) jusqu'à celui de Z ou x5A (98c73) je
n'arrive pas à trouver de logique. Par exemple, si les bits du codage
étaient une combinaison linéaire des bits du caractère d'origine, on
devrait trouver des relations du style code(A)+code(D)=code(B)+code(C)
or je n'en trouve pas.




du coup j'ai regardé la distance entre deux caractères consécutifs...
... elle n'est pas constante...
je ne vois d'ailleurs pas à quoi "rime" ce codage vu que l'entrée c'est
:

ZYFLName=get_zy_string(NEW.lastName||NEW.firstName)

donc nom et prénom d'un contact...

là dans sql c'est un ou ("||") qui est indiqué mais pratiquement dans la
base j'ai des "DupontJules"...

Je veux bien continuer à chercher, mais pour cela tu vas devoir donner
le résultat pour d'autres chaînes. Par exemple :
"x00x01x02x03x04x05x06x07"
"x08x09x0Ax0Bx0Cx0Dx0Ex0F"
"x10x11x12x13x14x15x16x17"
...
"xF8xF9xFAxFBxFCxFDxFExFF"



OK, je fais ça demain matin, merci !

--
Une Bévue
Avatar
Olivier Miakinen
Le 05/12/2007 01:03, Une Bévue a écrit :

Je ne connais *aucun* encodage qui code chaque caractère dans
2,5 octets...



ouais, bonne remarque, mais bon, dans l'autre codage que j'ai décodé, il
y avait déjà un 00 inutile partout...



Bah, cela pourrait être de l'UTF-16BE. Là aussi essaye avec d'autres
valeurs que des lettres dans ASCII (par exemple "x80" ou "xA4")

Par ailleurs, en dehors du fait que les valeurs sont croissantes depuis
le codage de A ou x41 (4e003) jusqu'à celui de Z ou x5A (98c73) je
n'arrive pas à trouver de logique. Par exemple, si les bits du codage
étaient une combinaison linéaire des bits du caractère d'origine, on
devrait trouver des relations du style code(A)+code(D)=code(B)+code(C)
or je n'en trouve pas.



du coup j'ai regardé la distance entre deux caractères consécutifs...
... elle n'est pas constante...



Tout à fait. Une distance constante entre des caractères consécutifs
aurait été une contrainte encore plus forte qu'une combinaison linéaire
des bits.

je ne vois d'ailleurs pas à quoi "rime" ce codage vu que l'entrée c'est
:

ZYFLName=get_zy_string(NEW.lastName||NEW.firstName)

donc nom et prénom d'un contact...



Le « || » désigne la concaténation des chaînes, je suppose. Par
curiosité, quel langage utilises-tu ?
Avatar
unbewusst.sein
Olivier Miakinen <om+ wrote:


Le « || » désigne la concaténation des chaînes, je suppose. Par
curiosité, quel langage utilises-tu ?



ben là c'est le sql de la base (sqlite 3).
autrement, sur Mac OS X, pour mon appli j'utilise Ruby.
en Ruby || n'a pas la même signification :
b = nil
a = b || "foo"
puts a
# => "foo"
a = "foo" || b
puts a
# => "foo"

b = "baz"
a = b || "foo"
puts a
# => "baz"
a = "foo" || b
puts a
# => "foo"

c'est un peu comme en php, si je ne m'abuse...
autrement, avec des vars logiques, marche comme le ou...


bon j'ai ajouté qq caractères à mon décodage...

bilan :

def get_zy_string( str )
s = ""
str.upcase[ 0..7 ].each_byte { | n | s << "00" + char_hex( n ) }
s
end

là c'est OK, l'argument en entrée étant :
NEW.lastName||NEW.firstName

tout comme pour la fonction get_py_string( str )

mais là, je ne suis tjs pas parvenu à trouver son codage excepté que :

- tous les caractères a-z sont passés en upcase

- les caractères autres que A-Z ont un codage "standard" :
zy <= c => py:
0020 <= => 00200
0021 <= ! => 00210
0022 <= " => 00220
0023 <= # => 00230
0024 <= $ => 00240
0025 <= % => 00250
0026 <= & => 00260
0027 <= ' => 00270
0028 <= ( => 00280
0029 <= ) => 00290
002a <= * => 002a0
002b <= + => 002b0
002c <= , => 002c0
002d <= - => 002d0
002e <= . => 002e0
002f <= / => 002f0
0030 <= 0 => 00300
[...]
excepté un "0" en + à droite (le 1/2 octet)

- seuls les caractères A-Z (et donc a-z) ont un codage "à la con" :
zy <= c => py:
0041 <= A => 4e003
0042 <= B => 4eb83
0043 <= C => 52283
0044 <= D => 575e3
0045 <= E => 5b373
0046 <= F => 5bea3
0047 <= G => 5e6e3
0048 <= H => 61b03
0049 <= I => 65a51
004a <= J => 65a53
004b <= K => 6c123
004c <= L => 6e4d3
004d <= M => 745c3
004e <= N => 77673
004f <= O => 79443
0050 <= P => 79633
0051 <= Q => 7baf3
0052 <= R => 7f923
0053 <= S => 80dc3
0054 <= T => 85e93
0055 <= U => 89521
0056 <= V => 89522
0057 <= W => 89523
0058 <= X => 8be13
0059 <= Y => 91063
005a <= Z => 98c73

*** comme je n'ai pas même pigé à quoi peut bien servir ce codage
spécial, j'ai regardé au niveau bin ce que ça donne, bien sûr uniquement
pour A-Z :
c => hex2int( zy )
c => hex2int( py ):
A => 0000 0000 0100 0001
A => 0100 1110 0000 0000 0011
B => 0000 0000 0100 0010
B => 0100 1110 1011 1000 0011
C => 0000 0000 0100 0011
C => 0101 0010 0010 1000 0011
D => 0000 0000 0100 0100
D => 0101 0111 0101 1110 0011
E => 0000 0000 0100 0101
E => 0101 1011 0011 0111 0011
F => 0000 0000 0100 0110
F => 0101 1011 1110 1010 0011
G => 0000 0000 0100 0111
G => 0101 1110 0110 1110 0011
H => 0000 0000 0100 1000
H => 0110 0001 1011 0000 0011
I => 0000 0000 0100 1001
I => 0110 0101 1010 0101 0001
J => 0000 0000 0100 1010
J => 0110 0101 1010 0101 0011
K => 0000 0000 0100 1011
K => 0110 1100 0001 0010 0011
L => 0000 0000 0100 1100
L => 0110 1110 0100 1101 0011
M => 0000 0000 0100 1101
M => 0111 0100 0101 1100 0011
N => 0000 0000 0100 1110
N => 0111 0111 0110 0111 0011
O => 0000 0000 0100 1111
O => 0111 1001 0100 0100 0011
P => 0000 0000 0101 0000
P => 0111 1001 0110 0011 0011
Q => 0000 0000 0101 0001
Q => 0111 1011 1010 1111 0011
R => 0000 0000 0101 0010
R => 0111 1111 1001 0010 0011
S => 0000 0000 0101 0011
S => 1000 0000 1101 1100 0011
T => 0000 0000 0101 0100
T => 1000 0101 1110 1001 0011
U => 0000 0000 0101 0101
U => 1000 1001 0101 0010 0001
V => 0000 0000 0101 0110
V => 1000 1001 0101 0010 0010
W => 0000 0000 0101 0111
W => 1000 1001 0101 0010 0011
X => 0000 0000 0101 1000
X => 1000 1011 1110 0001 0011
Y => 0000 0000 0101 1001
Y => 1001 0001 0000 0110 0011
Z => 0000 0000 0101 1010
Z => 1001 1000 1100 0111 0011

je ne vois pas de "relation", claire en tout cas, entre zy et py...

--
Une Bévue
1 2