PDF obfuscation?

Fórumok

Kedves HUP-osok!

Szeretnék közzétenni pár PDF-et, melyet nem bánok, ha terjesztenek, de meg akarnám akadályozni, hogy könnyen kicopy-paste-eljenek belőle részeket és felhasználják. Be tudom állítani, hogy csak jelszóval lehessen pl. txt-t exportálni belőle, de ha jól tudom, ezt a feature-t bizonyos pdf olvasók egyszerűen átugorják és ezekkel lehet ilyen esetekben is tartalmat lopni. (Jól tudom?)

A kérdésem: nincs-e olyan összekutyuló progi, mely a jelszó egyszerű megkerülése esetén is csak valami zagyva kimenetet ad?

Pl. beágyazott fonttal dolgozik, de abban megkavarja a kódolást és ugyanígy megkavarja a tartalom kódolását is. Így a kijelzőn rendesen olvasható a szöveg, de a txt export egy saját, kevert kódolású kimenetet ad. Na, ez persze lehet, hogy egy hülyeség és nem működne, de engem akármilyen PDF-zagyváló érdekelne.

Előre is kösz!

Hozzászólások

Egy sima OCR-rel megkerülhető az efféle védelem.

Azure Information Protection-nel DRM védelmet tehetsz a .PDF-re, az onnantól csak alkalmas klienssel nyitható meg, viszont ezért a nyomtatást, copy-paste-et ki tudod zárni. Ha széles körben akarod terjeszteni, akkor ez nem alkalmas, mert a jogosultsági engedély-kérelmek kezelése vállalhatatlan idődet vinné el.

Üdv,
Marci

Szerkesztve: 2019. 11. 07., cs - 12:19

nem feltétlenül kultúrált megoldás (tartalomtól függ), de lehet azzal is játszani, hogy a szövegnek az a része amit védeni szeretnél az raszteres képként van a PDF-be beágyazva. Ez hasznos lehet hozzá.

Persze ez növeli a fájlméretet, ocsmány lesz zoomolva és OCR-el továbbra is megkerülhető. Valójában bármi ami megjeleníthető a képernyőn, az OCR-el megkerülhető. Kérdés, hogy az aki lopni akarja fog-e ennyi effortot beletenni, hogy megtegye.

Ehhez nem kell semmilyen speciális szoftver. Egyszerűen úgy hozd létre a .pdf fájlokat, hogy csak megnyitást engedélyezz, kivágást, nyomtatást ne és arra is figyelj, hogy a legújabb verziós pdf-szabvánnyal mentsd a fájlt. Ezt minden pdf-készítő szoftvernek kéne tudnia, nem csak Adobe Acrobatnak. Ilyen obfuscation nincs, OCR-rel minden megkerülhető.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

Szerk: igazad van. Most kipróbáltam egy ilyen kimásolásvédett pdf-en, ami egy kiadótól vett, pdf formátumú e-book, legújabb pdf revisiont használja. Tényleg azonnal leoldotta róla a védelmet a qpdf, jelszó kérése meg minden más nélkül. Akkor ezek szerint csak az az opció marad, hogy raszteres képként beszúrni a tartalmat.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

A raszteres képen látható szöveget pedig egyszer hangosan felolvasom, a gépeléssegítő programok pedig ügyesen "begépelik" helyettem, és elmentem pdf-ként.

Igazából onnan, hogy egy gépen bármennyire is megjelenik egy tartalom, ilyen-olyan módszerekkel, ilyen-olyan eredménnyel, de másolhatók. Ezzel nem mondtam újat. Annyit tehetsz legfeljebb, hogy amennyire csak tudod, akadályozod a másolók munkáját. Van akinek elsőre elmegy tőle a kedve. Akinek a tartalom kell, az megoldja, de lassabban.

Kösz a tippeket.

A raszterzésre gondoltam. Persze tudom, hogy OCR ellen nem véd, meg csúnya is. Én csak elég nehézzé akarom tenni a tartalom kinyerését, így jobb híján ez is jöhet. Nem olyan nagy hadititkkoról van szó, csak azt nem akarom, hogy minimális munkával kinyerhető legyen, amit írtam.

A PDF-beli letiltásra sok feltörő progi van, aminek használata túl egyszerű. (Lásd fentebb a qpdf-et.) Ezért keresek valami kicsit erősebbet.

De úgy tűnik, készen nincs. Én meg nem értek hozzá eléggé, hogy mondjuk megírjam a beágyazott font és a tartalom párhuzamos összekeverését, ami után a szöveg kinyerése menne ugyan, de egy random, nem dokumentált kódolásban.

Ezt kb. úgy tudod megcsinálni, hogy fogsz egy fontot, összekevered benne a rajzolatok nevét, és eszerint kódolod át a szöveged. Ezzel kizártál olyan tördelési funkciókat, mint pl. az elválasztás. Elég sokat fogsz vele szenvedni, főleg, ha nem értesz ahhoz, hogyan kell egy fontba ilyen szinten belenyúlni, viszont a .txt export után továbbra sem lesz nagy gond helyrerakni, mivel a „nem dokumentált kódolásod” egy sima behelyettesítéses kódolás, amihez mellékeled a megoldókulcsot azzal, hogy látható a dekódolt szöveg.

Igen, nem is tudom ezt megcsinálni, mert nem értek ehhez ennyire. Ezért kérdeztem, hogy valaki tud-e ilyenről.

Ha mégis lenne ilyen progi, akkor az elrontott kódolású kimenetet egy informatikában jártas egyén helyre tudná rakni, de az egységsugarú júzer nem. Nekem ez elegendő lenne.

A raszterezés többször szóba került, aminek elég ronda a kimenete. Helyette ugyanannyira hasznos / haszontalan az, ha a szöveget vektoros grafikává alakítod át. A végeredmény sokkal szebb (feltéve ha nincs túl nagy egyszerűsítés beállítva), és az eredeti szöveges dokumentumhoz hasonlóan tetszőlegesen nagyítható. Az OCR ellen természetesen semmit sem véd, de legalább egy picit meg lett nehezítve a felhasználó dolga. Jól el kell találni a beállításokat, hogy ne legyen jelentős a méretnövekedés, de a szép külalak megmaradjon.

Tévedés, az eredmény rondább lesz. Pontosabban betűméret-függő. A hinting információk hiányában a körvonalak „egyszerű” renderelése miatt a betűk nem illeszkednek egy alapvonalra, „ugrálni” fognak, és a vonalvezetés vastagsága is elég változékony bír ilyenkor lenni.

Ennek a témának a szöveganyagából létrehoztam egy dokumentumot a Scribusban, és készítettem belőle 2 pdf-et. 10406 karakter, Ubuntu Light betűtípus, 5 pontos betűméret, 3 hasáb.

Dokumentum-1

Dokumentum-2

Dokumentum-1 szöveges állomány, betűkészlet-részhalmaz beágyazása a PDF-be, mérete : 76.444 bájt, Dokumentum-2 esetében pedig a betűkészlet körvonallá lett alakítva, mérete: 111.489 bájt (45%-os méretnövekedés).

Semennyire sem igaz amit állítottál, (Inkscape) grafika programban 10.000%-os nagyítással nézve is gyönyörűek az ívek.

Gratulálok, megállapítottad, hogy egy betű körvonallá alakítása nem változtatja meg a betű körvonalát. Én sem állítottam ennek az ellenkezőjét.

Azt állítottam, hogy kis pixelméretben történő renderelésnél a hinting információk hiánya problémát okoz(hat).

Bal oldalon a szöveges változatod, jobb oldalon a görbés: https://pasteboard.co/IFLS657.png

Látható, hogy a bal oldali képen látható szöveg jobban olvasható. Egyrészt a subpixel rendering miatt, másrészt, mert a betűk alja az alapvonalon áll, abból nem lóg ki. Ez az ívelt rajzolatok alapvonal alá lógó részének problematikája. Kis méretben nem szabad megjeleníteni, mert rontja a szöveg olvashatóságát, ez látható pl. az 5. sorban („nem alkalmas…”), az a, e, o, u betűk alján egy kis „bibircsók” látható, míg szövegként renderelve ez nincs.

Az a kérdés, hogy az eredeti szövegből hogyan, mivel, milyen pontossággal csinálsz vektorgrafikát, és azt az olvasó hogyan raszterizálja a képernyőn. Az egyiket jól, a másikat meg nem jól - pontosabban az utóbbinál nem alkalmazza a betűk raszterizálásánál előkerülő extra matekozásokat.

pontosabban az utóbbinál nem alkalmazza a betűk raszterizálásánál előkerülő extra matekozásokat

Tehát megegyezhetünk abban, hogy a legprecízebb görbévé konvertálás (ami egyébként szintén veszteséggel jár a számábrázolás pontatlansága miatt) sem tud olyan eredményt hozni, mintha szövegként renderelné, vagyis rosszabb minőségű lesz a végeredmény, max. azon lehet vitatkozni, hogy ez szemmel mikor mennyire látható.

Vektoros fontot görbévé konvertálni nem sok matekkal jár - meg kell tartani az eredeti pontosságot, és rendben vagyunk :-) A szöveget is -gyakorlatilag- a font görbéivel rendereli, csak ott kozzáteszi az olvashatóság miatti plusz trükköket is, amit egy vektoros ábránál nem. Úgyhogy igen, képernyőn látható, észlelhető lehet a különbség.

meg kell tartani az eredeti pontosságot, és rendben vagyunk

De jó lenne, ha ez ilyen egyszerűen menne, csak sajnos van egy olyan izé, hogy user unit, és annak ábrázolási pontossága (PDF-nél pl. kb. 5 tizedes), és az elég rendesen belerondít az eredeti pontosságba.

Persze, lehetne azt mondani, hogy miért nem nagyobb ezen szoftverek pontossága, de erre az a válasz, hogy professzionális felhasználásra bőven elég, csak az amatőrökkel van baj… :)

Nomostan a fontok raszterizálása ugyanannak a görbeseregnek a raszterizálásától szerintem nem a matekozás pontosságától függ. Persze abban az esetben, ha a görbévé alakítás az eredtihez képest csak közelítő formulákkal dolgozik, akkor máris ott van az első körös hiba az eredményben, plusz még hozzáadódik a képernyős megjelenítéshez a relatíve nagy pixelek miatti "trükközés" a jobb olvashatóság érdekében, ami a vektorgrafikánál nem "adódik hozzá".

Gyanus volt, hogy igazad van a hinting miatt, ugyhogy megneztem jobban, valoban kulonbozik a ket pdf megjelenitese nalam is. Ami a feluletes szemleleskor megzavart, hogy pl. azok a brutal, 4 pixel vastag I (nagy i) betuk es fuggoleges vonalak, koto/gondolatjelek nalam nem jelentkeznek a vektorosban sem. Belenagyitva szinten nem latom az egy pixeles lelogasokat az alapvonal ala (es a betuk teteje sem szoros).

Ennek ellent mond, hogy amikor en muszaki katalogusokat tettem nyomdaba, a nyomda kizarolag ugy fogadta el, hogy betuk gorbeve konvertalva, semmifele beagyazott betutipus. (A meretnovekedes nem szamitott, amugy is tobb szaz mega volt fejezetenkent a nyomdai felbontasu kepektol.)

Szerintem arra gondolhatsz, hogy bizonyos pdf nezok (*khmm* acrobat reader on windows *khm*) fosul jelenitik meg a dolgokat es pl. ki-be zoomolaskor ossze vissza vastagitjak a betuket. Gondolom meg akar ugralnak is. Erdekes modon ugyanaz a pdf nezo nyomtataskor a papirra szepen rajzol, ugyhogy ez valami (regi) windows beturenderelesi hulyeseg lehet.

Ebben nincs igazatok. Mindegy, hogy betűtípus van beágyazva, vagy görbévé van konvertálva, ugyanolyan jól kell kinézzen minden nagyításon. Ahogy már írták, a hinting valóban beleszólhat, ha betűtípusként van beágyazva, de az OS, grafikus környezet, pdf-néző sara. Illetve szélsőséges esetben akkor lehet rossz megjelenése a beágyazott betűtípusnak, ha pixelfont, de ilyet nem használ már senki pdf-ben.

A nyomda nem a hinting miatt kérte görbévé konvertálva, hanem jogi okból. Ők ugyanis nem használhatják azt a betűtípust, amit nem vettek meg, még akkor sem, ha te ágyazod bele a dokumentumba, mivel később a betűtípus jogtulajdonosa pert akaszthat a nyakukba. Ha viszont görbévé van konvertálva, akkor olyan, mintha nem is szöveget, hanem vektorgrafikát nyomtatnának.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

Ahogy már írták, a hinting valóban beleszólhat, ha betűtípusként van beágyazva, de az OS, grafikus környezet, pdf-néző sara.

Senki nem vitatta. Én is csak azt mondtam, hogy a görbévé alakítás ront egy alapvetően képernyős megjelenítésre tervezett anyagon.

Ők ugyanis nem használhatják azt a betűtípust, amit nem vettek meg, még akkor sem, ha te ágyazod bele a dokumentumba, mivel később a betűtípus jogtulajdonosa pert akaszthat a nyakukba.

Bullshit. A nyomda nem használhatja fel az általad vett stockfotókat sem, sőt, a tervezett grafikát sem, a szöveg jogtulajdonosa meg az íróé, szóval ha a PDF-ből történő nyomtatást a nyomda részéről annak elemeinek önálló felhasználásnak tekintjük, akkor a nyomda valójában semmit nem fogadhatna be tőled, hiszen a font analógiájára ezekkel is szerzői jogot sértene, kivéve, ha a leadott anyagban minden a te saját egyéni alkotásod, és erre egyesével engedélyt adsz neki. Gondolkozzunk már!

Egyébként ha egy font licence nem engedi meg, hogy beágyazd PDF-be, az a fontban jelölve van, így a PDF-et előállító szoftvernek nem lenne szabad a PDF-be beágyazni, másrészt ezzel nem a nyomda, hanem a PDF előállítója sértené meg a szerzői jogot.

Szerkesztve: 2019. 11. 08., p - 05:23

Azért vedd figyelembe, hogy 10-ből 9 esetben egy halk anyázást fog kapni a neved azért, mert nem tud a felhasználó könnyen és kényelmesen ráguglizni valamire és max egy esetben akadályozol valakit, aki direktben tartalmat akar lopni a pdf-edből. Kicsit ez ilyen artisjus feeling, hogy ártatlanokat büntetsz azért, amit nem ők követtek el :)

https://en.wikipedia.org/wiki/Blackstone%27s_ratio

Nem tudom, milyen "ártatlanokról" beszélsz. Miért alapjog, hogy ha valamit kiteszek a netre, arra rá lehessen googlezni? Vagy kimásolni, átszerkeszteni?

Mondok egy konkrét példát: kiadok egy oktatási anyagot (tanítok), mondjuk feladatok kidolgozását.

a) Az okos diák (sok ilyen van) arra használja, amire kell: tanul belőle. Ehhez kell, hogy megnézhesse, akár ki is nyomtassa 1-1 részét. Ezzel semmi bajom. Másolja a mobiljára, bárhova, nézze vonatozás közben, OK.

b) A lusta diákok (sok ilyen is van) copy-paste módszerrel gyűjteményt építgetnek a kiadott megoldásaimból és idomított egér módra kérdés-válasz párokat magolnak. Na, pl. ezt akarom megfékezni. Az ilyen típusú diákok többségének az OCR-ezés túl bonyolult. Ha "Save as text" vagy egérkijelölés+Copy-Paste megy, akkor ész nélkül gyártja a kérdés-válasz listát. Na, ezt utálom. Nem vezet megértésre.

Ha a kiadott anyagomból valaki kézzel kijegyzeteli, akár nem papírra, hanem begépeléssel, az már kicsit a megértés felé tesz lépést. A sima szövegkinyerés nem.

A b változat kicsit optimista. :)

Erre van egy módszer, bár kicsit több munkát igényel. Kell egy tablet+toll és mikrofon. Felveszed a megoldásokat videóra, mindent megmagyarázva és feltöltöd a youtube-ra. Elég csak a csatorna linkjét megadni. Ebből lehet építeni, de OCR ellen is véd, mindenképpen kézzel - gépeléssel készíthető belőle írásos anyag. Alapból nem lehet puskázásra használni. :D

Nem baj az... mármint ilyen emberek is kellenek :) Nem baj, ha nem érti. Ez szerintem egy fontos állapota a tanulási folyamatnak. Amikor többet tudsz, mint amit megértettél. Szerintem inkább próbáld kérdezésre ösztökélni a diákokat pl valahogy így:

"Van kérdés? Ha van kérdés, kérdezzetek nyugodtan! Különben kussoljatok!" :D

Szerintem te még nem tanítottál egyetemen. A "Van kérdés?" -re szinte soha sincs jelentkező, mert félnek, hogy hülyeséget kérdeznek. Főleg nagy csoport esetén. Ezért inkább úgy kell előadni, hogy "Persze megkérdezhetnétek, hogy.." és válaszolsz magadnak. Ehhez még hozzátartozik, hogy trágárkodni lehet (de nem ajánlott) , hallgatóra mondani pedig szigorúan tilos. Ebből nagyobb embernek is volt már problémája..

Szerkesztve: 2019. 11. 08., p - 13:18

... írd ronda kézírással piszkos papírra, és úgy scanneld be... így elolvasni sem fogják tudni, tehát biztos lehetsz benne, hogy senki sem fogja még terjeszteni se.

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.

Tegyél a szóközök helyére valami láthatatlan, apró betűs katyvaszt!

Nem pont erre gondoltam.

Régebben találkoztam olyan angol nyelvű PDF-fel, ami teljesen olvasható volt, de kimásolva vágólapon olvashatatlan katyvasz volt a szöveg.

Nem mindenhol, de pont annyira, hogy egy mondatot se lehessen normálisan kimásolni.

Azt csinálta a szerző, hogy néhol a szövegbe random karaktersorozatokat rakott nagyon pici fehér betűkkel. Sokszor még szavakon belül is voltak ilyenek.

Szerintem ez a topicindítónak is jó lehetne, de gondolom, nem valami docbook vagy hasonló cuccal generálja a PDF-eket, hanem valami GUI eszközzel. Egy docbook XML-t könnyen össze lehet szerintem zavarni ilyen módszerrel. Egy egyszerű scriptet persze kell rá írni.

Adj egyedi kódot a pdf-hez, és tárold, hogy ki milyen kódot kapott.
Ha előkerül egy kalóz példány, tudni fogod, ki volt a megosztó.

Szerkesztve: 2019. 11. 08., p - 19:58

Bár az OCR-nek nem áll ellen, viszont nem lesz lényegesen nagyobb vagy rosszabbul olvasható (akár görbévé alakított betűk, akár képpé) a „másolhatatlan” PDF, ha azt oldod meg, hogy a szöveg ne az olvasás sorrendjében szerepeljen benne.

Ilyet pl. InDesignban egy nem túl bonyolult scripttel simán meg lehet oldani (kissé bonyolultabb, de nem lehetetlen, ha van a szövegben automatikus elválasztás).

+1

Csak azért olvastam végig a topic-ot, ezt javasolja-e valaki, már majdnem írtam, erre megelőztél.

Szóval igen, aki generált már pdf-et, az tudja, hogy itt a karakterek egyesével vannak letéve adott koordinátára, amiből az következik, hogy azok a file-ban szerepelhetnek bármilyen random módon, lóugrásban, akárhogy, hiszen egyesével kell megmondani, melyik betű hol legyen a papírlapon. A renderelés jó lesz, hiszen mindegy a sorrend, az összes karakter renderelését követően mindenki a helyén lesz, de semmi megkötés nincs arra, hogy ne sorrendbe mondjuk meg, hogy van egy akármilyen betűnk itt, egy másmilyen betűnk ott, s így tovább. Ez meglehetősen rontja a kijelölhetőség élvezetét, de a mindent kijelölést követően is össze-vissza lesznek a betűk.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Szerkesztve: 2019. 11. 10., v - 10:11

Valószínűleg nem tudok választ vagy ötletet adni, de szerintem fontos lenne tudni, hogy mit használsz a PDF-ek előállítására - merthogy esetleg akár alkalmazás-specifikusan is lehet valami (fél)megoldás.

 

Szerk.: pdflatex-re van megoldás :)

Elmented PNG-ben és azt dobod a PDF-be, másolni nem lehet egyszerűen, copy-paste nem megy :)

Az elmélet az, amikor mindent ismerünk, de semmi nem működik. A gyakorlat az, amikor minden működik, de senki nem tudja, miért.

Igazából mi az, amit tulajdonképpen meg akarsz akadályozni és miért? Mi az a kontent, ami olvasható, de ne legyen másolható egyáltalán? Mi az értelme? Aki akarja, az úgy is le fogja másolni vagy így vagy úgy.