Konwersacja z hex (?) z bazy danych

0

Witam,
Mam taki problem:
W bazie danych MSSQL wpisany mam taki ciag znakow (hex?) "f77972e8954247e17eddd54bc99b766d". Prawdopodobnie sa to zapisane slowa "Rozmiar klucza". Czy wie ktos jak to przekwertowac z powrotem do zroumialej dla ludzi formy ? Wykozystuje sie to tego StreamReadera ? Jezeli tak, to w jaki sposob.

Z gory dziekuje za odpowiedz.

0

Prawdopodobnie to nie są zapisane słowa tylko jakiś skrót, np. MD5. A w takim razie nie da się tego "przekonwertować z powrotem".

1

Somekind ma praktycznie na pewno rację.
Jeśli twój string potraktować jako base16 to tekst ma dokładnie 16 bajtów co pasowałoby do funkcji hashującej. Za to zupełnie nie pasuje do długości "Rozmiar klucza" czyli 14.

Ale z nudów sprawdziłem to w paru kodowaniach. Lista sprawdzonych kodeków:

ascii, big5, big5hkscs, cp037, cp424,
cp437, cp500, cp720, cp737, cp775,
cp850, cp852, cp855, cp856, cp857,
cp858, cp860, cp861, cp862, cp863,
cp864, cp865, cp866, cp869, cp874,
cp875 , cp932, cp949, cp950, cp1006,
cp1026, cp1140, cp1250, cp1251, cp1252,
cp1253, cp1254, cp1255, cp1256, cp1257,
cp1258, euc_jp, euc_jis_2004, euc_jisx0213, euc_kr,
gb2312, gbk, gb18030, hz, iso2022_jp,
iso2022_jp_1, iso2022_jp_2, iso2022_jp_2004, iso2022_jp_3, iso2022_jp_ext,
iso2022_kr, latin_1, iso8859_2, iso8859_3, iso8859_4,
iso8859_5, iso8859_6, iso8859_7, iso8859_8, iso8859_9,
iso8859_10, iso8859_13, iso8859_14, iso8859_15, iso8859_16,
johab, koi8_r, koi8_u, mac_cyrillic, mac_greek,
mac_iceland, mac_latin2, mac_roman, mac_turkish, ptcp154,
shift_jis, shift_jis_2004, shift_jisx0213, utf_32, utf_32_be,
utf_32_le, utf_16, utf_16_be, utf_16_le, utf_7,
utf_8

Zdekodować ten tekst udało się tylko za pomocą cp852 - z wynikiem
¸yrŔĽBGß~ŢŇK╔Ťvm
Inaczej mówiąc, żaden tekst z tego nie jest.

0

Jak dla mnie to to wyglada jak jakis GUID (tylko bez ladnego zapisu/formatowania)

0

Witam ponownie,
Dziekuje za zainteresowanie i odpowiedzi. Probowalem robic podobnie jak kolega Tezcatlipoca, efekty podobne tzn. krzaki. Opisze problem moze troche szerzej:
Dla danego idTowary w bazie znaduje sie wpis (przykladowe id 15449)

http://imageshack.us/photo/my-images/195/tabelasa.jpg/ <-- link do screena

ID idTowary typ Parametr wartosc

599245 15449 -1 f77972e8954247e17eddd54bc99b766d a8892f74cd3464f6
599246 15449 0 feba89019d12198cbea905716d179893 7c86f419ff00c5f1
599247 15449 0 8b9230e9794703db57fa14838dfaeb2dd67616992d069b17 b0ba2e8e8a92e30e
599248 15449 0 bbe4f2dce0e9c601b3c90e6fb5ef9417f3b179666b0ba3e6 a3d6da3858d6fe0f
599249 15449 0 000206c9e974123ad786df170d1ca9b786b2d446ce3168c7 0d715258195e85ad
599250 15449 0 52890fd80f2def1aa4d7ee591479c1d4c7a2f27b0b5c4095 0ccb9ab5eaa18b55
599251 15449 0 f77972e8954247e17eddd54bc99b766d a8892f74cd3464f6
599252 15449 0 2d346cd72657109d5f0f83fc98dc976bec2b13f79c156333 dda7004cb6f648ec
599253 15449 0 b031aec99479348ee0c8760e79c9d49e 4134f9f241fad90086b2d446ce3168c7
599254 15449 1 6e7a7d815801b59429f4e7f5fdb41b12 9e483c213c49c47599596576f15963ed

599255 15449 1 6e7a7d815801b59429f4e7f5fdb41b12 d7380d6e3459ff9bfa74a0da504a2b74

599256 15449 1 6e7a7d815801b59429f4e7f5fdb41b12 8a2b006d0a74cc8526e3a2e839d0b374d271343671477b7e
599257 15449 1 6e7a7d815801b59429f4e7f5fdb41b12 14c073bcae2a5802
599258 15449 4 be015573f4c50f0f6365dc027e30ada1 26e3a2e839d0b374ac36dd13783a94e4
599259 15449 4 04b48699757fcc1a6365dc027e30ada1 df3fcf027a088d44b4391a69cc61e33986b2d446ce3168c7
599260 15449 4 45e6f5ec91d35fb6a6ecbe4286333698 c1356606e7ae1bfb
599261 15449 4 b493d0814179013512e454111c5ec86586b2d446ce3168c7 6f0e7384d44a4f62

W programie ktory korzysta z tej bazy dla towaru o tym id wyswiatla takie informacje:

Parametr | Wartosc

Rozmiar klucza | 16
Odstęp elektrod | 1 mm
Moment dokręcenia[Nm] | 28 Nm
Gwint zewnętrzny[mm] | 14 mm
Skok gwintu[mm] | 1,25 mm
Długosć gwintu[mm] | 19 mm
Rozmiar Klucza | 16
Położenie elektrod[mm] | 5 mm
Ilosć biegunów | 2 biegun
Nr użytkowy | FLR 8 LDCU+
Nr użytkowy | FR 8 LD+U
Nr użytkowy | Set 4 - 0 242 229 878
Nr użytkowy | +9
Numer Tec Doc | 0 242 229 654
Nazwa TecDoc | żwieca zapłonowa
Status TecDoc | Normal
Producent TecDoc | BOSCH
(Błedy zrobione celowo, tak jest w programie)

Widac, ze nazwy tabel (parametr, wartosc) sa takie same, dodatkowo ilosc pozycji tez sie zgadza (dla innych towarow jest podobie). Wiersze 10, 11, 12, 13 dla parametr (w programie jako "Nr użytkowy") maja taka sama wartosc w bazie. Wiersz 1 i 7 dla parametr i wartosc (Rozmiar klucza 16 ) maja takie same wartosci w bazie. I teraz wlasnie ciekawe jak np cyfra "16" zapisana jest jako "a8892f74cd3464f6" ?
Problem polega na tym ze chce dostac sie moim programem do tych danych i je wyswietlic w takiej formie jak robi to aplikacja domyślna.
Ma ktos jakis pomysl ?
Z gory dziekuje za pomoc.

1

te uidy to ewidentne klucze do tabel słownikowych. popatrz, czy nie masz tabelek zawierających spisy labelek, w których kluczami są te ciągi znaków.

0

Witam,
W koncu dowiedzialem sie w firmie ktora kozysta z tej bazy, że to są te informacje ale sa one zaszyfrowane. Na dostanie kodow, algorytmow nie ma szans. Ma ktos moze jakis pomysl jak to rozkodowac ? Te same ciągi znakow są w ten sam sposób kodowane tzn. dostaje sie dokladnie takie same ciągi znakow zakodowanych dla tych samych danych wejsciowych. Moze istnieje jakas metoda ?

0

Otwórz aplikację w IDA/ollydbg. Być może funkcje do szyfrowania będą podane jak na tacy. Z pewnością lepiej to najpierw zrobić niż.. zgadywać.

1

Tak w ogóle, to komuś się chyba konwersacja (rozmowa) z konwersją (przetworzeniem) pomyliły.

1

Jesteś w stanie zmieniać wartości w tej bazie danych (*)?
Jakie są na przykład kody dla liczb 1, 2, 3, 4, 5, 6?
Co się stanie jeśli skopiujesz wartość z pola numerycznego i wkleisz do wszystkich innych? A co jeśli z tekstowego?
Jakie są kody dla "a", "aa", "aaa", "aaaa", "aaaaa", "aaaaaa"
Jakie są kody dla "b", "ab", "aab", "aaab", "aaaab", "aaaaab"

Inaczej mówiąc, prościej by było zgadywać mając więcej danych...

(*) - jeśli jesteś, to znaczy że algorytm jest w programie. Trochę RE i można go złamać (ale tego bez dostępu do .exe ofc nikt nie zrobi), chociaż oczywiście w kryptografię też się można bawić...

0

Sory za offtop, ale...

Niezła jazda, że niektórzy kodują takie dane (wg mnie nic cennego i ogólnie dostępne - przynajmniej te z przykładu), ale allegro czy inne serwisy trzymały hasła w plaintex.

1

Jednak przez weekend mi się nie chciało z tym bawić... Zajmę się tym może później, na razie to co naklepałem wcześniej czyli wersja gotowa do użycia z pythona + kilka funkcji + spostrzeżenie.

 # -*- coding:  utf-8 -*-

import math

database = [
(0xf77972e8954247e17eddd54bc99b766d ,0xa8892f74cd3464f6),
(0xfeba89019d12198cbea905716d179893 ,0x7c86f419ff00c5f1),
(0x8b9230e9794703db57fa14838dfaeb2dd67616992d069b17 ,0xb0ba2e8e8a92e30e),
(0xbbe4f2dce0e9c601b3c90e6fb5ef9417f3b179666b0ba3e6 ,0xa3d6da3858d6fe0f),
(0x000206c9e974123ad786df170d1ca9b786b2d446ce3168c7 ,0x0d715258195e85ad),
(0x52890fd80f2def1aa4d7ee591479c1d4c7a2f27b0b5c4095 ,0x0ccb9ab5eaa18b55),
(0xf77972e8954247e17eddd54bc99b766d ,0xa8892f74cd3464f6),
(0x2d346cd72657109d5f0f83fc98dc976bec2b13f79c156333 ,0xdda7004cb6f648ec),
(0xb031aec99479348ee0c8760e79c9d49e ,0x4134f9f241fad90086b2d446ce3168c7),
(0x6e7a7d815801b59429f4e7f5fdb41b12 ,0x9e483c213c49c47599596576f15963ed),
(0x6e7a7d815801b59429f4e7f5fdb41b12 ,0xd7380d6e3459ff9bfa74a0da504a2b74),
(0x6e7a7d815801b59429f4e7f5fdb41b12 ,0x8a2b006d0a74cc8526e3a2e839d0b374d271343671477b7e),
(0x6e7a7d815801b59429f4e7f5fdb41b12 ,0x14c073bcae2a5802),
(0xbe015573f4c50f0f6365dc027e30ada1 ,0x26e3a2e839d0b374ac36dd13783a94e4),
(0x04b48699757fcc1a6365dc027e30ada1 ,0xdf3fcf027a088d44b4391a69cc61e33986b2d446ce3168c7),
(0x45e6f5ec91d35fb6a6ecbe4286333698 ,0xc1356606e7ae1bfb),
(0xb493d0814179013512e454111c5ec86586b2d446ce3168c7 ,0x6f0e7384d44a4f62),
]

display = [
("Rozmiar klucza","16"),
("Odstęp elektrod","1 mm"),
("Moment dokręcenia[Nm]","28 Nm"),
("Gwint zewnętrzny[mm]","14 mm"),
("Skok gwintu[mm]","1,25 mm"),
("Długosć gwintu[mm]","19 mm"),
("Rozmiar Klucza","16"),
("Położenie elektrod[mm]","5 mm"),
("Ilosć biegunów","2 biegun"),
("Nr użytkowy","FLR 8 LDCU+"),
("Nr użytkowy","FR 8 LD+U"),
("Nr użytkowy","Set 4 - 0 242 229 878"),
("Nr użytkowy","+9"),
("Numer Tec Doc","0 242 229 654"),
("Nazwa TecDoc","żwieca zapłonowa"),
("Status TecDoc","Normal"),
("Producent TecDoc","BOSCH"),
]

def hexBytes(x): return (int(math.log(x, 16)) + 1) / 2
def roundUp(x, to): return (x + (to - 1)) / to * to

def nths(t, n): return map(lambda x: x[n], t)
def mix(t1, t2, n): return zip(nths(t1, n), nths(t2, n))

def codePairToLenPair(p): return map(lambda x: (roundUp(hexBytes(x[0]), 8), len(x[1])), p)

def showLenPair(p):
   for x in namecodelen:
      print x[1], u" cyfr, ", x[0], u" bajtow"
   
valcode = mix(database, display, 0)
namecode = mix(database, display, 1)
valcodelen = codePairToLenPair(valcode)
namecodelen = codePairToLenPair(namecode)

print u"Wartości:"
showLenPair(valcodelen)

print u"Nazwy:"
showLenPair(namecodelen)

Wynik działania:

Wartości:
2 cyfr, 8 bajtow
4 cyfr, 8 bajtow
5 cyfr, 8 bajtow
5 cyfr, 8 bajtow
7 cyfr, 8 bajtow
5 cyfr, 8 bajtow
2 cyfr, 8 bajtow
4 cyfr, 8 bajtow
8 cyfr, 16 bajtow
11 cyfr, 16 bajtow
9 cyfr, 16 bajtow
21 cyfr, 24 bajtow
2 cyfr, 8 bajtow
13 cyfr, 16 bajtow
18 cyfr, 24 bajtow
6 cyfr, 8 bajtow
5 cyfr, 8 bajtow
Nazwy:
2 cyfr, 8 bajtow
4 cyfr, 8 bajtow
5 cyfr, 8 bajtow
5 cyfr, 8 bajtow
7 cyfr, 8 bajtow
5 cyfr, 8 bajtow
2 cyfr, 8 bajtow
4 cyfr, 8 bajtow
8 cyfr, 16 bajtow
11 cyfr, 16 bajtow
9 cyfr, 16 bajtow
21 cyfr, 24 bajtow
2 cyfr, 8 bajtow
13 cyfr, 16 bajtow
18 cyfr, 24 bajtow
6 cyfr, 8 bajtow
5 cyfr, 8 bajtow

Chyba widać na pierwszy rzut oka zależność?

1

prawdopodobnie zaszyfrowane blowfishem - bez klucza wiele nie zdziałasz
jak masz dobrą kartę graficzną możesz pobawić się w brute force

0

Witam,
Problem rozwiazany. Dane byly zaszyfrowane blowfishem jak celnie zauwazyl kolega unikalna_nazwa, brawo ! Klucz 32 znaki - duze, male litery, cyfry, znaki specjalne. Raczej ciezko bylo by go zlamac brutalem :) Po zakodowaniu calosc byla zamieniana na ciag hex. Wszystkie informacje jakich potrzebowalem lacznie z calymi funkcjami wyciagnalem za pomoca ILSpy'a.
Wielkie dzieki wszystkim za pomoc !
Pozdrawiam.

P.S
Somekind, rzeczywiscie pomylily mi sie te dwa slowka ;P

1 użytkowników online, w tym zalogowanych: 0, gości: 1