Yritän noutaa salauksen purkamis- / purkamislogiikan ohjelmasta. Valitettavasti minulla ei ole käytännössä mitään kokemusta käänteisestä suunnittelusta.
Rakennan vaihtoehtoista ohjainsovellusta multimedialaitteelle. Alkuperäinen ohjain on saatavana Windowsille (johon kohdistan) sekä Macille, iOS: lle ja Androidille Suurin osa laitteen ja ohjainsovelluksen välisestä viestinnästä on samanlaista kuin UPnP-protokolla, joka on siksi lähetetty XML-muodossa ja luettavissa selkeässä tekstissä. On kuitenkin yksi tapaus, jossa laite lähettää jonkinlaisen tunnuksen ohjaimelle (jota ohjain käyttää myöhemmin todentamaan muita palveluja vastaan) ja tämä lähetys näyttää olevan koodattu / salattu / peitetty (kutsutaan tekstissä "koodatuksi"). Tämä koodattu muoto lähetetään normaalin UPnP-vastauksen XML-kentässä.
Olen tehnyt seuraavat havainnot seuratessani useita koodatun muodon lähetyksiä:
- Se alkaa aina 2: lla ja sitä seuraa base64-koodattu merkkijono
- Kun lähetetään useita t kuvaa piston muutoksia, vaikka sisältö ei oletettavasti muuttuisi (oletetaan, ettei muita koodauksen kaltaisia muuttujia kuten aikaleima sisälly). Joten jonkinlainen suola saattaa olla läsnä.
- Merkkijonon pituus pysyy samana, jos tietoja ei muuteta
- Jos kaikki tunnukset poistetaan ohjaimesta, on vielä joitain koodattuja tietoja lähetetään tällä alalla. Tämä saa minut ajattelemaan, että joko täyte tapahtuu, tai (todennäköisemmin) koodattu merkkijono dekoodaa tietyt sarjaliikenteen tietorakenteesta (ehkä jopa XML: stä).
- Tunnistus, jota käytetään todennuksessa (joten dekoodattu lomake) pysyy samana, vaikka koodattu versio poikkeaisi toisistaan.
Itse sovellus on kirjoitettu muodossa c # , mutta kaikki tietoturvaan liittyvät asiat (mukaan lukien tunnuksen dekoodaus / käsittely) tuntuu kutsutaan käyttämällä pINVOKE-tiedostoa DLL-tiedostosta, jota ei ole kirjoitettu .net -tiedostossa.
Suoritin signrch: n dll: ssä, jos epäilen koodauksen tapahtuvan, mutta monet mahdolliset osumat palautetaan (yli 30). Kun tarkastellaan dll: ää, näyttää siltä, että openssl-kirjasto on koottu siihen, joten siellä voi olla paljon vääriä positiivisia. DLL käsittelee myös HTTPS-viestintää, joten openssl ei välttämättä liity etsimääsi koodausmenetelmään.
Olen yrittänyt tutkia ida pro- ja windbg-ohjelmia, mutta oppaista luetuista tämä pyörii lähinnä asetusten ympärillä ennen kuin napsautat painiketta, joka aktivoi esim Kuitenkin minun tapauksessani ohjainsovellus saa nämä tiedot kerran sovelluksen käynnistyksen yhteydessä (kymmenien muiden UPnP-pakettien kanssa), ja arvaukseni on, että dekoodaus tapahtuu pakettia vastaanotettaessa, joten ei ole mahdollista asettaa katkaisupistettä esim. Pystyin kuitenkin selvittämään, että dekoodatut rahakkeet ovat muistissa (kuitenkin siirtymät poikkeavat aina, kun sovellus käynnistetään). Koodattua versiota ei näytä olevan muistissa ajon aikana.
Joitakin esimerkkejä: Koodattu merkkijono, kun tunnusta ei ole määritetty:
2: nrlrLkCeoSOK34YSDZUKzbXs6olm9YSE4jLFnXONMJO5XhjfwCHPHJ1Jpx1 >
kolme jouset, jotka edustavat (oletettavasti) samat tiedot:
2: PITkxbk12KlLvsPtOV8ptZbqfMcK0EmSA / XOejbBHs8 + ffKNzwYSoz6oGdL5wiudTWJri4ZG / CwB2 / Pfh91ULuqBYWaLaW7YCzEzRb53NS + qarNiUAU0Kn7TCuhPzougX91sKFOP3BTWdUu6BQBP7IlWIZ1odp4ilU8RdEUhPvkOVyH9OBQwvpYXPbqca / OLGjNFPvomS5yaeOjtbpDuVd8mfvBycVHB8rULDvkJcXOS / qQWHOt8iYYZXHBXBD9v4h3Bs + o09sWsXxIh + 0q4qz + TKY / gYRnogenJ9vN83lkE6FTgtHns / 6zxlCt4xaFINmShdovvYlS / SDZ + aKgcGoq8zFjWJAbc2WQQwdxPTLZsCUmJSjH6jp1t6pCv7t4tBMaSpCTvAoRrXElNQIW1LOe / 9X6Cu5Ggjp17Whwe9 + 7DuWz6HxPEpq / TIVLIV7kJQRj6GcD7 / sWPakLLXxiN1Bf5yfJVvX3wA67vwXwigO5v5d5JzKPrjULskeCLUk // 61gPulxFguf63cn6NN1zXpDBOf3sCxwzquKIobE8s + F2mJ0pzWCNwYSg3IpvAUzH2fqLvsjqO6DdNr6AVZr77vPG9 / DQ2 + sFesFHMFQ859eVwNUSvYkxQoqFukxJOXfY + muf1AYqczvCA0K / uYDnKAj24oB0Wgw9YvA S8YHO9YI = 2: XfaIk9XLov9k8vHKXXZ9NFpUvNSk8QsEjI73E + txW6wg + kSr2hWWljLU5OOmQBcN + ACRKF4f4paJBxlf9AGiFnWyrNKT4nguM / 4iBsHsiIADlMavjYncsNntClcxPh + Me2l1W / uQzqG83SlHcM525P5wfpH45zC7 / hFjmWKPGIQ / k / LAsJy6gZlrmOZ0B2JJ0Cw + yUOzTD4EUo092EPRf7hq7aIrs0dLfPtT2D6LMKwmKAfW2fhllV / jJ33dAVn6Dy / PctFErGtvXljhnuI8r5qpMyIOZ5SsoFE / TNK + kOqWYVg5 / djbls / fpV2p70B9vxzpVkko8pfIJ3UmYsqu5WSlaX441Qs / gY8nzjWmJw8 + 8LzxL + P2YgYo5W + U6a / oS4R + sZ3FD0q3KQvmVNjklgdGipTOfsv9amP6M6ifAHPdgB5kj9ivOtufaiFKR9GqS9 / g4vjYQqofU3Yk2nB6xMi2W1eA2Mk + BJAjfsTr1Yo4Njoa0 + XQfAMfqpJe9Zka2NSLu2noDDEdRTqASJi6IiNxbsbsVGHhHFEAEojwTQlrk6xUtOt5RjTA6XovdgQoGywjU + FixEbEEQA0TbNE2KsFhmKXIauo3yQaZ9EKDMJjOMz53UK / EFEZu6L7yy7ijnQB13rSw + obIbFXr / J / vxc97EsRXm7zSUIQoEq9qwKE = 2: 9xVbeGOq4XDN26aIYcbNVYDAVQNgVseVvipidY71ZzJAKYlYdcDd46uIFQdfla5pXqupZABtl4Njg + wC8lxmxx2EFR1ZwBYr + ZbvswCQp9YKKMAhI3Ly12j3XNrtIAfl + EDDgz5woHNLXLfVthFel4WSe3mGHMa0S8ZcXRyRyLJHx7lIXZ4G68by2cLTYTldAWuYYl7xhmIJNLgMA8iI63FBGYiw / UT / 30KkLPoUP7As1R / GfItnDfp0pG5l63DtBFSo3mnDRVrdDIsYALRpsBLhhvx4 + 0CjlyMaK511pM0 + IxmtcE6L0L6 QhcztYzWcjnbjkLi7r9dmO5ABEfq8 / 8 + wpnxERXwiwRTsYPy2 / + rYQlLK0hkeGiqacbnjQQWyVRVzaE47oAhC9ln ws5go / c + + reDHhmpf / 9vj9RO7EzFq9LVZRxbxy7C5QZzHEqncSdR + TzOrs0MkRO3pe + e2Q5P68kgTYVO6K8XpvLU9ClfDyIOCpwNufRz / fEVl2ry5UrjS5d5k39 UheQizu9nu + Y + + + 4xC42Wd y1E7WsZYQaLgNL6EQP1w8yb3 + PwdvgOxgId7IMag81 / 4 + mjO9x / N1Zoq405nSXodirZ5RiWIAl4 + uHARqwDnX1lZQo7Fo0pMs8ZwOtGiqA8 / WVbMKqigBOEW6m2 / 2K2nI3cTYKqmVg = / pre> Haluaisin kuulla mielelläni ehdotuksia tämän ongelman ratkaisemiseksi, jotta saat paremman käsityksen.