TeXovani ciziho zdroje?

David Necas (Yeti) yeti at physics.muni.cz
Fri Jul 4 11:37:24 CEST 2003


On Fri, Jul 04, 2003 at 10:13:07AM +0200, Petr Olsak wrote:
>
> Z dotazu neni jasne, zda chces funkcionalitu \input zachovat pro sve
> vlastni potreby. Pokud ano, pak by mohlo stacit
> \let\tajneslovoproinput=\input pred pouzitim \input. Domnivam se, ze
> neexistuje moznost v TeXu zjistit deklarovane kontrolni sekvence (ledaze
> se clovek muze podivat do binarniho formatu), tj. tajneslovoproinput je
> utocnikem neodhalitelne. Samozrejme se predpoklada, ze utocnik nevi,
> jakymi prikazy se jeho dokument dale zpracovavan na urovni vnejsiho
> souboru (po \endinput). Kdyby to vedel, muze si zkusit trasovat vyznamy
> tech maker, az se k \tajmenuslovuproinput dohrabe. Vyznamy maker muze
> trasovat jednak do logu, a pokud nema pristup do logu, pak je muze
> zobrazovat i do dvi pomoci \meaning !

Tohle je security through obscurity, ktera muze byt narusena
tim, ze se jmeno te tajne kontrolni sekvence prokecne...

Tajne slovo je treba volit v kazdem behu nahodne. Protoze
TeX nema generator [pseudo]nahodnych cisel, musel by se
pouzit \write18. Navic neumim rozumne uzivateli zabranit
uzavrit vic skupin, nez otverel (coz by vyzadovala ciste
TeXova metoda, kterou jsem zacal vymyslet), navrhuji
vygenerovat jednoduchy wrapper, zhruba ve smyslu:

  \expandafter\let\csname BFLMPSVZ\endcsname\input
  \let\input\relax
  \long\def\incdoc{\let\aftergroup\relax
  \let\futurelet\relax
  \let\incdoc\relax
  \csname BFLMPSVZ\endcsname UZIVATELUV_DOKUMENT.tex
  }
  \expandafter{\expandafter\incdoc}
  \expandafter\let\expandafter\input\csname BFLMPSVZ\endcsname

kde BFLMPSVZ je dostatecne nahodny a s nicim nekolidujici
retezec.

Konstrukce s \expandafter u \incdoc je nutna kvuli
moznemu predefinovani } utocnikem na aktivni znak, coz by mu
umoznilo predefinovat si cokoli, co by nasel za }.

Doufam, ze uzivatele nebudou potrebovat \aftergroup
a \futurelet, protoze se mi zda, ze by to s jejich pomoci
asi slo obejit, dokonce i bez znalosti, jak wrapper vypada.

Je mozne, ze jde obejit i tohle, nebo ze to jde udelat
i lepe, ale zatim jsem nevymyslel jak.

Yeti

--
DPM 5.7.2: Do not use tab characters. Their effect is not predictable.



More information about the csTeX mailing list