ROT13 w makro

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
babiniec4
Posty: 53
Rejestracja: wt sie 03, 2010 10:20 pm

ROT13 w makro

Post autor: babiniec4 »

Szukałem w necie i nie znalazłem podpowiedzi na pytanie...
Czy można bezpośrednio w makro wykorzystać funkcję ROT13 aby zakodować i odkodować tekst przy tworzeniu pliku i pobieraniu go z pliku?

sub Wypis()

Open"C:/Test.txt" for output as 1

oSheet=ThisComponent.Sheets.getByName("Arkusz1")

wiersz=14
for x=8 to wiersz-1
oCell=osheet.getCellbyposition(2,x)
s=oCell.getString
Print #1,s

next
Close #1
end sub
Apache OpenOffice 4.1.5 na Windows 10
Jan_J
Posty: 4580
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: ROT13 w makro

Post autor: Jan_J »

Kod: Zaznacz cały

Sub Test()
  funs = createUnoService( "com.sun.star.sheet.FunctionAccess" )
  x = "abcd"
  dim args(0) as string
  args(0) = x
  y = funs.callFunction("rot13", args)
  print x, "-->", y
End Sub
Tylko że na co komu rot13. Do zabawy?
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
babiniec4
Posty: 53
Rejestracja: wt sie 03, 2010 10:20 pm

Re: ROT13 w makro

Post autor: babiniec4 »

Być może dla wielu z tu obecnych jest to dość prymitywny sposób kodowania ale wszystko zależy od tego na jakim poziomie wiedzy aktualnie się znajdujemy. Chciałem się tylko zorientować czy taka możliwość istnieje bo akurat w moim przypadku wymiana danych pomiędzy arkuszami następuje poprzez eksport/import do/z plików tekstowych. Ingerencja "psotnika-szperacza" w konkretny plik może zakłócić poprawność działań. Kodując wszystkie z nich mógłbym zniechęcić do poszukiwania tego "wybranego". Oczywiście zawsze go można zmodyfikować i popsuć wszystko, ale równie dobrze można skasować pliki i foldery każdej aplikacji. Zawsze można zdekodować zawartość jeśli zna się klucz ale to zadanie dla uparciucha. Przykład, który mi podałeś w połączeniu z makrem powyżej działa i dziękuje za chęci. Cóż przesunięcie o 13 miejsc to rzeczywiście słabe wyzwanie. Może masz pomysł na skuteczną ochronę tych danych np zakodowaniem czymś innym (rot47), ukryciem tego pliku ?
Apache OpenOffice 4.1.5 na Windows 10
Jan_J
Posty: 4580
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: ROT13 w makro

Post autor: Jan_J »

Czy nie da się po prostu uniemożliwić modyfikacji danych przez ustawienie atrybutów dostępu do plików?

Do wykrycia zmian w zawartości pliku, bez wskazania miejsca i przyczyny, możesz użyć sum kontrolnych (md5, sha1, sha256). Wartości sum musiałyby być przechowywane poza możliwością zmiany przez niepowołanych. Przed wczytaniem pliku należałoby sprawdzić, czy sumy się zgadzają.

Do uniemożliwienia zmiany (poza totalną destrukcją) lepiej użyć szyfrowania z hasłem. Najprostsze wydaje się opakowanie plików w zip-a. Makro mogłoby go rozpakowywać i wczytywać zawartość.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
babiniec4
Posty: 53
Rejestracja: wt sie 03, 2010 10:20 pm

Re: ROT13 w makro

Post autor: babiniec4 »

Archiwum zip z hasłem byłoby niezłe. Szukałem makr do tworzenia/rozpakowywania ale nie znalazłem a to co znalazłem nie chce działać...więc hmmm
Apache OpenOffice 4.1.5 na Windows 10
Jan_J
Posty: 4580
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: ROT13 w makro

Post autor: Jan_J »

O ile dobrze rozumiem, chroniony plik zawiera wyłącznie dane do obróbki, zasysane do arkusza. Wynikowy dokument nie ma już być chroniony?

Ad obsługa zip-a:
* w Basicu jest instrukcja system, która potrafi uruchamia dowolny zewnętrzny program. Na przykład można jej użyć do wywołania konsolowego dekompresora. W takim przypadku sposób przekazania hasła należy wyczytać z dokumentacji użytego programu.
* w Open/LibreOffice jest wbudowany Python. Co prawda dość okrojony i trudny w tworzeniu makr (brak edytora i debuggera zintegrowanego z OOo), ale takie rzeczy jak dostęp do zip robi się w nim od ręki.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ