A DrótPostaGalamb levelezőprogram adatfájljainak dekódolása
Egy korábbi posztban már említést tettem a DPG-ről, azaz a DrótPostaGalambról. Röviden: ez egy levelezőprogram és szolgáltatás egyben, még a modemes időkből, amikor betárcsázós internet volt. Ez a szolgáltatás ingyenes volt, nem kellett hozzá internet-előfizetés, csak egy működő telefonvonal (saját behívószámuk volt, ha úgy vesszük, végülis egy nagyon korlátozott ingyenes internetcsomag).
A szoftver egyszerre 5 felhasználói fiókot tudott kezelni, mindegyikbe egy jelszóval lehetett bejutni. Mivel minden levelet a helyi számítógépen tárolt és akkor még nem igazán volt divat a többfelhasználós Windows (pláne a titkosítás), így tudta megvédeni a családtagok leveleit egymás kíváncsi szemeitől.
Azonban, a leveleket nem a megadott jelszóval kódolta el, (mert, ha meg akarod változtatni, akkor újra kellene kódolni az összes levelet az új jelszóval), hanem egy speciális kulcsot használt hozzá.
Az már nem világos, hogy erre a kulcsra hogyan bukkantam rá (tippem szerint egy olyan üres adatfájlban találtam, ahol csak ez volt), a lényeg, hogy a fájl elején lévő 4 byte-ot a "7p(g"
értékkel kellett összeXOR-olni (XOR - eXclusive OR, magyarul kizáró vagy, ez egy logikai művelet).
Szövegesen úgy lehetne megfogalmazni, hogy "az eredmény akkor 1, ha az A és a B változó közül kizárólag az egyik értéke 1-es". Ezt egyébként elég gyakran használják "kódóló" algoritmusnak, például a korábban említett Need For Speed fájlok esetében, vagy a fél év múlva tárgyalandó Half Life hálózati protokoll (hlds protocol 48) esetében.
| A | B | A XOR B |
| - | - | ------- |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Így néz ki élőben:
Az eredménye az első 4 pozícióban látható sárga számsor, azaz 40 9B 0C 69
. Ezekután ezzel a számsorral kell végigXOR-olni az egész fájlt a 17. pozíciótól, kb. így:
Látható, hogy a sárga (dekódolt) színnel már olvasható feliratok jelennek meg a DPG notesz fájlból (afféle címlista).
A levelek ugyanezzel a módszerrel dekódolhatók, az eredményük szabványos EML formátumú fájl (be lehet tölteni pl. Outlookba is). Ezzel a módszerrel és a ConsoleVision keretrendszer felhasználásával képes voltam egy szöveges módú levélolvasót készíteni a DPG-hez.
A kódban a github repóban lehet gyönyörködni.