Kysymys:
Kuinka selvittää, minkä tyyppistä koodausta / salausta on käytetty?
Karthik
2011-05-20 16:12:11 UTC
view on stackexchange narkive permalink

Onko olemassa tapa löytää minkä tyyppistä salausta / koodausta käytetään? Testaan ​​esimerkiksi verkkosovellusta, joka tallentaa salasanan tietokantaan salatussa muodossa ( WeJcFMQ / 8 + 8QJ / w0hHh + 0g == ). Kuinka määritän, mitä hajautus- tai salausmenetelmää käytetään?

Osa metodologian sisällöstä (tai siihen viittaavista linkeistä) on selitettävä, kuinka tietyn tyyppiset salaukset tai koodaukset voidaan tunnistaa täysin nollatiedon skenaariossa. Suurin osa näistä vastauksista on "se on mahdotonta", ja sisätunteni tuntee, että mikään teollisuudessamme ei ole mahdotonta.
@atdre Kiitos palkkiosta. Näyttää siltä, ​​että kysymys on keskittynyt salasanan hajautusmuodoihin - onko se myös sinun painopisteesi? Se tuntuu minulle parhaiten, ja jos ihmiset haluavat vastata tiedostomuotoja koskevaan kysymykseen, he voivat esittää toisen kysymyksen.
@atdre: "Impossible" on yleensä pikakuvake "nykyiselle tekniikalle mahdoton / ei lopu ennen maailmankaikkeuden lämpökuolemaa".
@nealmcb: Salatun tai koodatun ei-selkokielisen tekstin tunnistaminen.
I asked a similar question on SE: http://stackoverflow.com/questions/988642/how-would-i-reverse-engineer-a-cryptographic-algorithm
Voit käyttää online-ilmaisinta, kuten: [https://md5hashing.net/hash_type_checker](https://md5hashing.net/hash_type_checker). Tapauksessasi se osoittaa: ** Base64 ** Koodaus
Yhdeksän vastused:
#1
+147
Thomas Pornin
2011-05-23 20:00:49 UTC
view on stackexchange narkive permalink

Esimerkkijono ( WeJcFMQ / 8 + 8QJ / w0hHh + 0g == ) on Base64-koodaus 16 tavun jaksolle, joka ei näytä merkitykselliseltä ASCII: lta tai UTF-8: lta. Jos tämä on arvo, joka on tallennettu salasanan vahvistukseen (eli ei oikeastaan ​​"salattu" salasana, pikemminkin "hajautettu" salasana), tämä johtuu todennäköisesti hash-toiminnosta laskettu salasanalla; yksi klassinen hash-toiminto, jossa on 128-bittinen lähtö, on MD5. Mutta kyse voi olla mistä tahansa.

"Normaali" tapa tietää se on tarkastella sovelluskoodia. Sovelluskoodi inkarnoituu konkreettisella, rasvaisella tavalla (suoritettavat tiedostot palvelimella, lähdekoodi jonnekin ...), joka ei ole eikä voi olla yhtä suojattu kuin salainen avain. Joten käänteinen suunnittelu on "tapa edetä".

Estä käänteinen suunnittelu, voit tehdä muutaman kokeilun yrittääksesi tehdä koulutettuja arvauksia:

  • Jos sama käyttäjä " vaihtaa "salasanansa, mutta käyttää samaa uudelleen, muuttuuko tallennettu arvo? Jos kyllä, osa arvosta on todennäköisesti satunnaistettu "suola" tai IV (olettaen symmetrisen salauksen).
  • Olettaen, että arvo on deterministinen tietyn käyttäjän salasanasta, jos kaksi käyttäjää valitsee saman salasana, aiheuttaako se saman tallennetun arvon? Jos ei, niin käyttäjänimi on todennäköisesti osa laskentaa. Voit yrittää laskea MD5: n ("käyttäjänimi: salasana") tai muita vastaavia muunnelmia, jotta saat selville, vastaako sinua.
  • Onko salasanan pituus rajoitettu? Jos asetat 40 merkin salasanan etkä pysty todentamaan onnistuneesti kirjoittamalla vain 39 ensimmäistä merkkiä, tämä tarkoittaa, että kaikki merkit ovat tärkeitä, mikä tarkoittaa, että tämä on todella salasanan hajautus , ei encryption (tallennettua arvoa käytetään salasanan vahvistamiseen, mutta salasanaa ei voida palauttaa pelkästään tallennetusta arvosta).
Kiitos syötteistä .. Pls kerro minulle lisää siitä, kuinka vahvistat sen Base64-koodauksen 16 tavun jaksolle. ** Kokeiluistasi ** Kyllä, tämä on salasanan vahvistamista varten tallennettu arvo. 1) Jos käyttäjä vaihtaa salasanan, myös tallennettu arvo muuttuu. 2) Jos kaksi käyttäjää valitsee saman salasanan, tallennettu arvo on sama 3) Salasanan pituus ei ole rajoitettu.
@Learner: - kaikki 24 merkin sekvenssit siten, että ensimmäiset 22 ovat kirjaimia, numeroita, '+' tai '/' ja kaksi viimeistä ovat '=' - merkkejä, on kelvollinen 128-bittisen Base64-koodaus. Ja mikä tahansa 128-bittinen arvo, kun se on koodattu Base64: llä, tuottaa sellaisen sekvenssin.
Tämä on oikea vastaus, vaikka halusin kuulla joitain mahdollisia temppuja, jos sovelluskoodia ei ole saatavilla. Jos olet tekemisissä suljetun lähdekoodin binaarisovelluksen kanssa, tutustu osoitteeseen http://aluigi.org/mytoolz.htm#signsrch
Jos se on MD5, voit kokeilla mitä tahansa MD5: n murtamissivustoista, kuten http://www.md5decrypter.co.uk/. Mikään näistä ei ole nopeaa tai taattua tuottavan tulosta. Google löytää "md5 cracking" löytääksesi lisää. Se antaa sinulle myös laajennetun luettelon osoitteessa http://www.stottmeister.com/blog/2009/04/14/how-to-crack-md5-passwords/
#2
+70
john
2011-05-20 16:22:41 UTC
view on stackexchange narkive permalink

Muokkaa: Huomasin juuri erittäin hienon komentosarjan nimeltä hashID. Nimi kuvaa sitä melko paljon.

~~~

Yleisesti ottaen kokemusten käyttäminen koulutettujen arvausten tekemiseksi on, miten nämä asiat tehdään.

Tässä on luettelo, jossa on erittäin suuri määrä hajautusulostuloja, jotta tiedät, miltä kukin näyttää, ja luo allekirjoituksia / malleja tai tarkista vain optisesti.

Sinulla on kaksi tärkeintä asiaa kiinnitä huomiota:

  • hashin pituuteen (jokaisella hash-funktiolla on tietty ulostulopituus)
  • käytetyt aakkoset (ovatko kaikki englanninkielisiä kirjaimia? numerot 0-9 ja AF niin heksattu? Mitä erikoismerkkejä siellä on, jos sellaisia ​​on?)

Useat salasanan murtamisohjelmat (esimerkiksi ripperi John) käyttävät syötteessä kuvion sovitusta käytetyn algoritmin arvaamiseksi, mutta tämä toimii vain yleisillä hajautuksilla. Esimerkiksi, jos otat jonkin hash-lähdön ja kierrät kutakin kirjainta yhdellä, useimmat kuvion sovitusmenetelmät epäonnistuvat.

kiitos .. katsoin ja yritin muutamalla salasanalla. mutta menetelmä toimii skenaariossa, tiedämme, että salasana on hajautettu eikä salattu, eikö?
Salasanoja ei yleensä salata, ne on hajautettu ja ne on yleensä esitetty funktion tuottamassa muodossa - joten löydät monia näistä lomakkeista yllä olevista linkeistä. Loppujen lopuksi kaikkien toimintojen lähtö on vain binäärilukuja, jotka yleensä esitetään ja tallennetaan joko heksadesimaationa tai base64-esityksenä.
Tämä ohjelma on roskaa.Se ei voi edes tunnistaa base64-hajautusta.
Base64 ei ole hash, se on koodaus.
#3
+27
Yaur
2011-05-23 08:34:11 UTC
view on stackexchange narkive permalink

Lähettämäsi on 16 tavua (128 bittiä) 64 perustietokoodattua dataa. Se, että se on koodattu base 64, ei kerro meille paljoa, koska base 64 ei ole salaus / hajautusalgoritmi, se on tapa koodata binaaritietoja tekstiksi. Tämä tarkoittaa, että tämä lohko sisältää yhden hyödyllisen tiedon, nimittäin että lähtö on 16 tavua pitkä. Voimme verrata tätä yleisesti käytettyjen järjestelmien lohkokokoon ja selvittää, mitä se ei voi olla. Ylivoimaisesti yleisimmät järjestelmät ovat:

Seuraava asia, joka meidän on tehtävä, on tarkastella muita salaustekstilohkoja selvittääksesi vastauksen seuraavaan kysymykseen:

  • Ovatko kaikki salaustekstit samanpituisia, jopa eri syöttöpituuksilla?

Jos kaikki lohkot eivät ole samanpituisia, et tarkastele hajautusalgoritmia, mutta salaus. Koska lähtö on aina moninkertainen taustalla olevasta lohkokoolta, lohkon, jota ei voida jakaa tasaisesti 16 tavulla, olemassaolo merkitsisi, että se ei voi olla AES ja siksi sen on oltava DES tai 3DES. sinulla on kyky laittaa salasana ja tarkkailla lähtöä, tämä voidaan määrittää hyvin nopeasti. Laita vain 17 merkin salasana ja katso pituus. Jos sen 16 tavua sinulla on MD5, 20 tavua tarkoittaa SHA-1, 24 tavua tarkoittaa DES tai 3DES, 32 tavua tarkoittaa AES.

:-p en ymmärrä sitä .. onko se 64-koodattu perusdata? Miten? enkä todellakaan saanut sitä osaa, jossa sanot "jos jokin lohko ei ole jaettavissa tasaisesti 16 tavulla, se on todennäköisesti DES tai 3DES, muuten AES todennäköisesti" pls valaisi minulle tätä. :)
@The Learner Olen lisännyt vastauksen toivottavasti tekemään siitä selkeämmän. Jos pystyt käyttämään valittua selkeää tekstiä, voit todennäköisesti selvittää sen tästä.
kiitos paljon .. aloin saada toisen osan. ja tämän kysymyksen esittämisen jälkeen luin jonnekin Googlesta, että hajautus on monta-to-one, mikä tarkoittaa, että monia erilaisia ​​tekstejä voidaan hajauttaa samaan lähtöön (korjaa minut, jos olen väärässä). skenaarioomme tullessa kaikki salakirjoitustekstilohkot eivät ole yhtä pitkiä .. Joten voinko nyt olla varma, että niitä ei ole hajautettu vaan salattu? Mutta silti, en ymmärtänyt, miten sanoit, että lähettämäni data on 16 tavua 64-pohjaista koodattua dataa. Jos on salakirjoitin tai tiiviste, kuinka voin kertoa, että se on 16 tai 32 tavun data?
@the-oppija = kuten pehmuste on ominaista base64: lle. Tämä työkalu http://home2.paulschou.net/tools/xlate/ (google-hausta base64-dekooderi-hexalla) muuntaa tukiasemasta 64 joukoksi heksadesimaaliarvoja. liitä vain teksti 64-pohjaiseen ruutuun ja napsauta purkaa ja laske tavut. Voit myös arvioida ottamalla merkkimäärän base64-merkkijonossa ja kertomalla .75
@Karthik,: ssä on hyvin vähän tapoja esittää numero (mikä on sekoituksen tai salauksen lopputulos) kompaktina, ihmisen luettavana tekstinä.Hallitsevat tapat ovat heksadesimaali (A-F, 0-9) ja emäs 64 (A-Z, a-z, 0-9, +, /).Teknisesti on myös mahdollista yrittää tarkastella tietoja tekstikoodauksina (ASCII, UTF-8 jne.), Vaikka se on tyypillisesti vain merkki siitä, että tietoja ei osata tarkastella (esim. Yritetään avata binääritiedostomuistilehtiö).Tunnistat sen enimmäkseen yksinkertaisesti katsomalla, millaisia hahmoja esiintyy, ja ottamaan arvauksen sieltä.
Sitten tukikohdassa 64 on myös ilmaisimen ilmaisin (`=` s).Se on todella suurin base64-indikaattori.Mutta sitten sinun on muistettava, että monissa paikoissa ei ole * vain * hashia, mutta niillä on itse asiassa tekstiesitys, joka sisältää erottimia ja muita kenttiä (esim. Suolalle, jonka tunnusta hajautusalgoritmia käytettiin jne.).Tämä rehellisesti sallii paljon enemmän tietoja hankkia, mutta ei koske tätä.Tärkeää pitää mielessä, koska nämä muut merkit eivät ole osa tietojen koodausta.
#4
+6
bethlakshmi
2011-05-20 22:47:36 UTC
view on stackexchange narkive permalink

Se riippuu muodosta - joissakin salatun tekstin tallennusprotokollissa on selkeä teksti-osa, joka määrittelee sen salauksen. Esimerkistäni olen epäilevä, koska viittaamasi merkkijono on niin lyhyt, että se näyttää olevan vain salattu teksti.

Ehdotan pari ajatusta:

  • "==" lopussa olisi ehdottomasti täyte, joten älä sisällytä sitä salauksen purkuyrityksiin.

  • Saatat olla tekemisissä hash-tai suolattu hash eikä salaus. Siinä tapauksessa tietojen "salauksen purkaminen" ei onnistu - sinun on sovitettava salasanat käyttämällä samaa hash- ja / tai suola-arvoa, jota käytettiin alun perin. Suolatulla salasanalla ei ole mitään keinoa saada alkuperäinen arvo.

  • Parasta on, että saat kopion koodista, jota käytetään salasanojen tallentamiseen. Jossain päin salasanoja tehdään salausoperaatio. Löydät koodin oppiaksesi, mitä täällä tapahtuu. Yhdeksän kertaa 10: stä he käyttävät jonkinlaista sovellusliittymää hajautukseen / suolaamiseen / salaamiseen, ja voit jäljitellä tai kääntää sitä samalla API: lla.

Loppupuolella oleva = = `` on ilmaisimen merkki base64-koodattavasta arvosta. Pehmuste on välttämätön; et vain pudota sitä. Ensin base64-purkaa tiedot, Sitten pelaat niiden kanssa.
Voit leikata täyte pois, koska pystyt laskemaan sen viestin pituuden mukaan. Jos haluat käyttää base64-kyselymerkkijonoja, sinun on aika siirtää se webSafeBase64-muunnoksen läpi ja kääntää prosessi ennen dekoodausta.
#5
+6
Jeff Ferland
2011-05-23 20:17:42 UTC
view on stackexchange narkive permalink

Koodauksen voidaan yleensä arvata. Esimerkiksi kysymykseen lähettämäsi merkkijono on Base64-koodattu. Yhtäläisyysmerkit täyttävät Base64-kaavion. Se on jotain, jonka tiedän näköpiirissä kokemuksestani.

Jos annoit minulle salatun merkkijonon, voin ehkä kertoa sinulle koodauksen, mutta en voi kertoa sen salaamiseen käytettyä algoritmia, ellei jonkinlainen metatieto on käytettävissä. Syynä on tämä: salausalgoritmit toimivat tuottamalla satunnaisiksi näyttäviä tietoja. Jos salasin kaksi lausetta kummallakin kahdella salauslaitteella (neljä lähtöä), et pysty kertomaan minulle varmuudella, mikä salausteksti kuului mihin salaukseen, ellet salaa sitä tai rikkonut salausta.

tietyssä tapauksessa salasanat yleensä hajautetaan. Tämä tarkoittaa, että et voi palauttaa salasanaa hashista, mutta voit testata, vastaako hash salasanaa. Tältä osin @ johnin vastaus on kultainen. Jos voit syöttää tuntemasi salasanan ja kokeilla sitten yleisiä malleja sitä vastaan, voit oppia käyttämäsi hajautusmerkki.

#6
+6
Ilmari Karonen
2011-10-20 16:23:25 UTC
view on stackexchange narkive permalink

Jos tämä on todellakin yksinkertainen salasanan tiiviste, voimme ehkä käyttää Googleä sen murtaamiseen. Base64: ää on kuitenkin vaikea etsiä kaikkien noiden kauttaviivojen ja plusmerkkien kanssa, joten muunnetaan ensin se hash heksadesimaaleiksi:

  $ perl -MMIME :: Base64 -le 'print pura "H * ", decode_base64" WeJcFMQ / 8 + 8QJ / w0hHh + 0g == "59e25c14c43ff3ef1027fc3484787ed2  

OK, nyt voimme Googlen sitä. Tällä hetkellä saan vain yhden osuman osoitteesta md5this.com - vaikkakin ilmeisesti tulee lisää, mukaan lukien tämä viesti.

Valitettavasti (tai ehkä onneksi, näkökulmastasi riippuen), meillä ei ole onni löytää todellinen esikuva (sivusto listaa tämän hashin "halkeilevaksi ..."), mutta tosiasia, että se on ollenkaan siinä luettelossa viittaa vahvasti siihen, että se on todellakin salaamaton MD5-hash oikean salasanan kanssa.

Erittäin mielenkiintoista, miten Google voi auttaa tässä tilanteessa.Hyvä osuus!
#7
+4
Nam Nguyen
2011-05-20 18:01:55 UTC
view on stackexchange narkive permalink

Ainoa tapa on arvailla. Kokemuksen mukaan arvaustyö on oikeampi.

Esimerkiksi: Lähdön pituuden perusteella: MD5-lähtö on 128 bittiä tai 16 tavua, SHA1-lähtö on 160 bittiä tai 20 tavua. Perustuu lähdön merkistöön: BASE64 tuottaa tulosteita, joissa on tulostettavia merkkejä.

Päivän päätteeksi se yrittää erehdyttää -menetelmää, joka opettaa sinulle.

#8
+1
user185
2011-05-20 18:26:47 UTC
view on stackexchange narkive permalink

Ainoa tapa on, kun on metatietoja, jotka kertovat sinulle. Esimerkiksi olen viime aikoina työskennellyt PDF-tiedostojen kanssa, ja muoto sisältää sanakirjan, joka sisältää suodattimen, algoritmin, avaimen koon jne. Mutta jos sinulla on vain salausteksti, niin sinulla on vain läpinäkymätön läiskä tiedot.

#9
+1
mti2935
2020-03-24 19:03:59 UTC
view on stackexchange narkive permalink

Tämä on erittäin heikko turvallisuus kaikilla rintamilla! Selkeämpi teksti on P4 $$ w0rdP4 $$ w0rd ja se salataan XOR-salauksella avaimella CdZ4MLMPgYtAE9gQ80gMtg == . Tämä tuottaa yllä olevan OP: n lähettämän salaustekstin WeJcFMQ/8+8QJ/w0hHh+0g== .

Vahvistaaksesi:

Käytä ensin xxd selväkielisen taustan binäärin saamiseksi:

  echo -n 'P4 $$ w0rdP4 $$ w0rd' | xxd -b -c16  

Tämä tuottaa:

  01010000 00110100 00100100 00100100 01110111 00110000 01110010 01100100 01010000 00110100 00100100 00100100 01110111 00110000 01110010 01100100  

Seuraavaksi base64-purkaa avain ja hae avaimen taustalla oleva binaari xxd: llä:

  echo -n 'CdZ4MLMPgYtAE9gQ80gMtg ==' | base64 -d | xxd -b -c16  

Tämä tuottaa:

  00001001 11010110 01111000 00110000 10110011 00001111 10000001 10001011 01000000 00010011 11011000 00010000 11110011 01001000 00001100 10110110  

Nyt XOR kaksi binaarijonoa:

  01010000 00110100 00100100 00100100 01110111 00110000 01110010 01100100 01010000 00110100 00100100 00100100 01110111 00110000 01110010 01100100 (teksti]) [XOR] 001100 10110011 00001111 10000001 10001011 01000000 00010011 11011000 00010000 11110011 01001000 00001100 10110110 (avain) ----------------------------------- -------------------------------------------------- -------------------------------------------------- -------- 01011001 11100010 01011100 00010100 11000100 00111111 11110011 11101111 00010000 00100111 11111100 00110100 10000100 01111000 01111110 11010010 (salattu teksti)  

Käytä lopuksi bc, xxd ja base64 muunnaksesi binaarinen salakirjoitus base64: lle:

  echo "obase = 16; ibas e = 2; 0101100111100010010111000001010011000100001111111111110011111011110001000000100100111111111000011010010000100011110000111111011010010 "| bc | xxd -p -r | base64  

Tämä tuottaa WeJcFMQ / 8 + 8QJ / w0hHh + 0g == , joka on OP: n yllä olevassa kysymyksessä lähettämä salateksti.


Pahoittelen, jos tämä vastaus näyttää keksitty. Tosin on. Tämän kaltaisia ​​kysymyksiä, joissa julistaja antaa vain jonkin verran salattua tekstiä ja pyytää jonkinlaista tietoa siitä, kuinka salattu teksti olisi voitu tuottaa, vaikuttaa olevan melko usein esiintyviä osoitteessa security.stackexchange.com; ja tähän kysymykseen viitataan usein kopiona niihin. Tämän vastauksen tarkoituksena on havainnollistaa, että tämän tyyppisiin kysymyksiin ei voida vastata, koska tämäntyyppisiin kysymyksiin on ääretön ratkaisu.

Odota, joten valitsitko vain salasanan, valitsit "hash" -menetelmän (XOR) ja sitten raakaa voimaa avaimelle, joka tuotti annetun salakirjoituksen?Viimeinen lauseesi on kultaa, mutta mielestäni kannattaa korostaa hieman enemmän.Joku, joka ei kiinnitä erityistä huomiota, voi helposti kävellä pois ajattelemalla, että olet "ratkaissut" ongelman.
@Conor Mancone, kiitos palautteesta.XOR-salaus voidaan suunnitella käänteisesti, joten jos tiedät 2 muuttujasta 3 (eli selkokielinen teksti, avain, salateksti), löydät helposti kolmannen.[tavallinen teksti xor avain = salakirjoitus, salakirjoitus xor avain = selkeä teksti, tavallinen teksti xor salaus teksti = avain].Tein juuri selkokielisen tekstin (P4 $$ w0rdP4 $$ w0rd) ja käytin sitten yllä olevaa kolmatta yhtälöä löytääksesi avaimen, joka tuottaisi OP: n lähettämän salatekstin valitsemani selkokielisen tekstin perusteella.Olisin voinut valita minkä tahansa selkeän tekstin.
Mietin, pystyisitkö ratkaisemaan suoraan XOR: n kanssa.En ole koskaan pelannut todellisilla salausmenetelmillä yksityiskohtaisesti, joten en ollut aivan varma.Kiitos!


Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...