Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt do kodowania źródła strony
Forum PHP.pl > Forum > Gotowe rozwiązania
noentrance
Sądzę, że był już taki temat, ale niestety (a może stety?) jestem tu nowa i nie mam pojęcia, gdzie szukać, więc nie pozostaje mi nic innego jak napisać o tym jeszcze raz smile.gif

Więc, gdyby ktoś był tak miły i mógłby mi podać taki skrypt do kodowania źródła strony (pewnie każdy tutaj, wie o co chodzi, ale nie zaszkodzi dopisać - chodzi mi o to, żeby albo źródło się wcale nie otwierało, albo zamiast liter pojawiały się jakieś znaczki, albo żeby tego skopiować za cholere nie było można, wszystko jedno) to byłabym bardzo, ale to bardzo wdzięczna.

Po prostu mam dość tego, że jakieś takie owakie podkradają mi moje szablony m.in graficzne nad którymi sobie "żyły wypruwałam" a potem bezczelnie podpisują, że to ich własność - po prostu szczyt chamstwa i prostoty.

Więc jakby ktoś byłby taki dobry to bardzo proszę, jest to dla mnie bardzo pilne i [cenzura] potrzebne smile.gif

---
emocje prosimy zostawiać w domu
Były dwa identyczne tematy. Odpowiedzi zostały połączone.
olo
omen
czemu tak wulgarnie worriedsmiley.gif

rozwiązanie twojego problemu -> HTML CipHer v2.0
Kshyhoo
Kiedyś znalazłem coś takiego w sieci, nie wiem kto jest autorem, ale szacuneczek dla niego:
Cytat
Brutalna zagrywka
Czyli jak zmusić do uległości przeglądarkę

O co chodzi
Jednemu z moich czytelników zdarzył się następujący problem: ktoś podkradał mu grafikę z jego strony po czym umieszczał na swojej podpisując się pod nią swoim nazwiskiem. Są ku temu oczywiście odpowiednie rozwiązania prawne, ale my przecież nie będziemy się procesować - więc co zrobić?

Tutaj z pomocą przychodzi DHTML! Dzięki niemu możemy znacznie utrudnić pobranie i zapisanie grafiki przez użytkownika na dysku. Rzeczywiście jest to dosyć brutalne rozwiązanie ze strony webmastera, ale proszę sobie wyobrazić, że w pewnym stopniu da się to zrobić!

Filozofia
Znalazłem kilka sposobów na utrudnienie życia wścibskiemu użytkownikowi:
używając DHTML-a można umieżcic każdy obrazek na warstwie i przykryć go kolejną (przezroczystą) warstwą. Po co? Jeśli teraz ktoś kliknie na takim obrazku to tak naprawdę nie kliknie na nim, ale na warstwie, która będzie nad nim i w związku z tym nie będzie miał możliwosci zapisania od razu takiego pliku!
Dzięki pomocy czytelnika wiem już, że aby zmusić przeglądarkę do niezapisywania do cachu należy użyć znacznika META:
<meta http-equiv="Pragma" content="no-cache">
Ale niestety funkcja ta nie spełniła do końca moich oczekiwań, gdyż w IE 5 podczas oglądania tak spreparowanej strony zawierającej ten znacznik META i tak przglądarka zapisywała grafikę do cachu i można ją było z tamtąd spokojnie pobrać. Jedyną nadzieją pozostaje fakt wynikający z niewiedzy użytkownika wynikającej z faktu, gdzie jest katalog z cachem!
Ale na poważnie.
Otrzymałem kilka sugestii na to, że istnieją pluginy zabraniające nawet zrobienie zrzutu ekranu.

Co do pluginów pewien nie jestem czy coś takiego istnieje ?
Prawdą jest jednak, że są takie programy. Przykład znajdziemy na stronie:
www.terraserver.microsoft.com.
Aby móc oglądać pełnowartościowe zdjęcia z satelity należy zainstalować program, który zablokuje możliwość wykorzystania takich zdjęć do własnych celów. Można też oglądać zdjęcia bez ściągania tego programu, ale wtedy są one trochę "wybrakowane".
Więc nadal szukam pluginu pozwalającego na coś takiego, ale jestem raczej sceptyczny co do tego czy plugin javy będzie w stanie przechwycić sterowanie programami służącymi do zrzutu programu na tyle dobrze aby im to uniemożliwić. sad.gif
Pozostają jedynie jak na razie tylko takie półśrodki.

Kolejne utrudnienie przyszło mi jeszcze do głowy. Tym razem doprowadzające do furii! Otóż oczywiście na niewiele zdadzą się te wszystkie zabezpieczenia jeśli użytkownik podpatrzy nam kod na stronie i wpisze sobie adres samych plików graficznych do paska adresów. Istnieje sprytny sposób na zabezpieczenie się przed podglądaniem kodu źródłowego. Należy otworzyć użytkownikowi stronę w trybie pełnoekranowym i wyłączyć obsługę prawego przycisku myszy. A tak to można zrobić:

blokada prawego przycisku myszy

function click() {
    if (document.all) {
      if (event.button == 2) {
      alert("Funkcja zablokowana");
      return false;
      }
  }
  if (document.layers) {
    if (this.which == 3) {
      alert("Funkcja zablokowana");
      return false;
    }
  }
}
if (document.layers) {
document.captureEvents(Event.MOUSEDOWN);
}
document.onmousedown=click;


Zaprezentowane tu rozwiązanie też jednak nie jest do końca pozbawione wad, gdyż cały czas można obejrzeć kod takiej strony wybierając z menu Widok->Źródło. Pewnym rozwiązaniem może być otworzenie tej strony w nowym oknie nie zawierjącego gónego menu, ale też nie do końca skutecznym.

Widziałem kilka stron w sieci, którym nie można było kompletnie podejrzeć kodu, ale (z uwagi na to, że nie widziałem ich kodu) nie wiem jak uzyskać taki efekt.
Jeśli wiesz jak go osiągnąc daj mi proszę znać.
Przykład strony z zabezpieczonym prawym przyciskiem i jej kod. Co jednak z tych wszystkich zabezpieczeń i z cachu jeśli wystarczy, że ktoś sobie zapisze całą stronę na dysku a nowsze przegladarki same już dociagną pliki graficzne?! I na to jest sposób!
Zamiast normalnie umieścić obrazek w tagu <IMG> można wrzucic w to miejsce tabelę <TABLE> z tłem tego obrazka, ale nie jako zwykle tło <TABLE background="katalog/grafika.jpg"> tylko zdefiniowane w stylu jako: <TABLE style="background-image: url(katalog/grafika.jpg);">. Efekt ten sam. Nie spotkałem się jeszcze z przeględarką, która ściągnęłaby przy zapisywaniu grafiki zdefiniowane w arkuszach styli. A oto właśnie chodzi winksmiley.jpg.

Opis skryptu
Dostępny tu skrypt działa jedynie pod Internet Eplorerem 4.0 i wzwyż, okazało się natomiast, że w Netscapie nawet nie trzeba go używać gdyż wystarczy użyć grafiki jako tła (zdefiniowanego w stylach) a Netscape już sam nie podaje opcji zapisania takiego obrazka! Przedstawię skrypt, który przykryje przygotowanymi przez nas atrapami wszystkie (zabezpieczone) przez nas obrazki na danej stronie, skrypt ten można używać wymiennie z wyżej już opisaną blokadą prawego klawisza myszki, który automatycznie również nie pozwoli na zapisywanie grafik winksmiley.jpg
Nic nie stoi oczywiście na przeszkodzie aby połączyć siły i użyć oba skrypty...

W sekcji HEAD należy wstawić poniższy arkusz styli:
 
Definicja arkuszy stylów

<STYLE type=text/css>
.atrapa {
position: absolute;
}
<STYLE>

Jest to klasa, z której będą korzystać wszystkie nasze atrapy. Po opis position: absolute;

Teraz wreszcie główne danie, czyli skrypt:
skrypt

<script language="JavaScript" TYPE="text/JavaScript">
<!--
/****************************************
Wykrycie przeglądarki
****************************************/
ie4=(document.all)?1:0;
// Inicjalizacja zmiennych l-left, t-top, h-height, w-width
var l,t,h,w;

/****************************************
Funkcja ustawia wartości left i top
****************************************/
function ustaw(ident){
document.all[ident].style.left=document.all[ident].offsetLeft;
document.all[ident].style.top=document.all[ident].offsetTop
}
/****************************************
Przesuwa warstwę ident
do zadanych współrzędnych x,y
****************************************/
function przesun(ident,x,y) {
document.all[ident].style.left = x;
document.all[ident].style.top = y;
}
/****************************************
Odczytuje do zmiennych globalnych l,t
pozycję wartstwy ident
****************************************/
function pozycja(ident) {
l = document.all[ident].style.pixelLeft;
t = document.all[ident].style.pixelTop;
}
/****************************************
Odczytuje do zmiennych globalnych h,w
wymiary wartswty ident
****************************************/
function odczytaj_wymiary(ident) {
h = document.all[ident].scrollHeight;
w = document.all[ident].scrollWidth;
}
/****************************************
Ustawia wymiary danej warswty ident
na wymiary h,w
****************************************/
function ustaw_wymiary(ident) {
document.all[ident].style.height = h;
document.all[ident].style.width = w;
}

/****************************************
Główna funkcja programu
Odczytuje wymiary i pozycję
każdej warstwy grafika1 ...
i przykrywa je warstwami atrapa1, itd...
****************************************/
function init(il_warstw){
  var i;
  if(ie4)
  for(i=1; i<=il_warstw; i++) {
eval("ustaw('grafika"+i+"');");
eval("pozycja('grafika"+i+"');");
eval("odczytaj_wymiary('grafika"+i+"');");
eval("ustaw_wymiary('atrapa"+i+"');");
eval("przesun('atrapa"+i+"',"+l+","+t+");");
}
}
-->
</SCRIPT>


Myślę, że kod jest zrozumiale napisany, nie będę z osobna opisywał tutaj każdej z tych funkcji.

Ich opis będzie wkrótce dostępny w kursie DHTML.
A oto jak należy w sekcji BODY "ukrywać" obrazki.
zastosowanie

<DIV id="grafika1" style="width: 200; height: 200;">
<TABLE
style = "background-image: url(images/plik.jpg);
        background-repeat: no-repeat;"
  width="200"
  height="200">
<TR><TD>&nbsp;</TD></TR></TABLE>
</DIV>
<DIV id="atrapa1" class="atrapa"></DIV>

Inaczej mówiąc zamiast używać tagu IMG w taki sposób:
<IMG SRC="images/plik.jpg" width=200 height=200>

należy zastosować konstukcję zawartą w poprzedniej tabeli.

I już na koniec trzeba jeszcze policzyć ile mamy ukrytych w ten sposób obrazków i tę liczbę podać w wywołaniu funkcji init(il_wartsw). Na przykład w ten sposób:
 
wywołanie funkcji init()
 
<BODY onLoad="java script: init(2);"
onResize="history.go(0)"
bgcolor="White" leftmargin="50">


Czyli dwie grafiki są ukryte w powyższym przykładzie.
Funkcja onResize="history.go(0)" przeładowuje stronę jeśli użytkownik zmienił rozmiar okna przeglądarki by umożliwić tym samym ponowne zakrycie wszystkich grafik.
dr_bonzo
A ja wylaczam obsluge JSa i ogladam zrodlo strony i widze link do obrazka "jakisserwer.pl/images/plik.jpg" i sobie go pobieram.
noentrance
Dziekuję, ale to nadal nie jest tym czego szukam.
Szczerze mówiąc, ukrywanie grafiki na niewiele się zdaje.
Bo trochę bardziej rozgarnięty, chcący ją znaleźć i tak ją znajdzie (".jpg")
Zależy mi na skrypcie KTÓRY BY KODOWAŁ ŹRÓDŁO, a nie ukrywał grafikę.

Ale dziękuję za dobre chęci

***
Nie jest aż tak wulgarnie, po prostu jestem osobą wybuchową, a takie sytuacje mnie bardzo irytują...
omen
Czy mogę prosić was o podanie mi źródła do trzech obrazków ?
znajdujących się na poniższej stronce laugh.gif

strona z obrazkami

troszke ją zabezpieczyłem i jestem ciekaw czy to coś da smile.gif
Linandar
w książce php 101 pratycznych skryptów widziałem kiedyś skryp do "kodowania". Nie był zbyt dobry ale od tego możnaby już zacząć.
oto on:
  1. <?php
  2.  
  3. /*Skrypt pochodzi z książki \"php. 101 praktycznych skryptów\"
  4.   autor: Marcin Lis e-mail: 101scripts@marcinlis.com*/
  5.  
  6. function encode($file)
  7. {
  8. if(!$fd = @fopen(&#092;"$file\", \"r\")){
  9.  echo(&#092;"Nie mogę otworzyć pliku: $file\");
  10.  return false;
  11. }
  12. $size = filesize($file);
  13. if(!($enc = fread($fd, $size))){
  14.  echo(&#092;"Nie mogę odczytać pliku: $file\");
  15.  fclose($fd);
  16.  return false;
  17. }
  18. fclose($fd);
  19. $enc = strrev($enc);
  20. $len = strlen($enc);
  21.  
  22. $enc = str_replace(&#092;"<\", \"0~x~54\", $enc);
  23. $enc = str_replace(&#092;">\", \"0~x~14\", $enc);
  24. $enc = str_replace(&#092;":\", \"0~x~83\", $enc);
  25. $enc = str_replace(&#092;"=\", \"0~x~09\", $enc);
  26. $enc = str_replace(&#092;"\"\", \"0~x~A1\", $enc);
  27. $enc = str_replace(&#092;"'\", \"0~x~1F\", $enc);
  28. $enc = str_replace(&#092;".\", \"0~x~43\", $enc);
  29. $enc = str_replace(&#092;";\", \"0~x~0F\", $enc);
  30. $enc = str_replace(&#092;"&\", \"0~x~EC\", $enc);
  31. $enc = str_replace(&#092;"/\", \"0~x~FD\", $enc);
  32. $enc = str_replace(&#092;"t\", \"0~x~6A\", $enc);
  33. $enc = str_replace(&#092;"nr\", \"0~x~C4\", $enc);
  34.  
  35. $out = &#092;"<script LANGUAGE=\"JavaScript\">\";
  36. $out .= &#092;"var x=\"$enc\";\";
  37. $out .= &#092;"x = x.replace(/0~x~54/g, '<');\";
  38. $out .= &#092;"x = x.replace(/0~x~14/g, '>');\";
  39. $out .= &#092;"x = x.replace(/0~x~83/g, ':');\";
  40. $out .= &#092;"x = x.replace(/0~x~09/g, '=');\";
  41. $out .= &#092;"x = x.replace(/0~x~A1/g, '\"');\";
  42. $out .= &#092;"x = x.replace(/0~x~1F/g, \"'\");\";
  43. $out .= &#092;"x = x.replace(/0~x~43/g, '.');\";
  44. $out .= &#092;"x = x.replace(/0~x~0F/g, ';');\";
  45. $out .= &#092;"x = x.replace(/0~x~EC/g, '&');\";
  46. $out .= &#092;"x = x.replace(/0~x~FD/g, '/');\";
  47. $out .= &#092;"x = x.replace(/0~x~6A/g, 't');\";
  48. $out .= &#092;"x = x.replace(/0~x~C4/g, 'nr');\";
  49.  
  50. $out .= &#092;"var xx=\"\";for(i=x.length-1;i>0;i--){\";
  51. $out .= &#092;"xx += x.charAt(i);};\";
  52.  
  53. $out .= &#092;"document.write(xx);\";
  54. $out .= &#092;"</SCRIPT>\";
  55.  
  56. /*if(!$fd = @fopen(\"$file.enc\", \"w\")){
  57.  echo(\"Błšd przy próbie otwarcia pliku: $file.enc\");
  58.  return;
  59.   }
  60.   fwrite($fd, $out);
  61.   fclose($fd);*/
  62. return $out;
  63. }
  64. echo(encode(&#092;"index.html\"));
  65. ?>
noentrance
dziękuję smile.gif
omen
Hehehe dobra koniec konkursu laugh.gif

nie ma idealnego zabezpieczenia źródła worriedsmiley.gif


guitar.gif
noentrance
o właśnie, zamiast liter w źródle były takie różne znaczki (tam gdzie omen zabiezpieczył) jak to zrobić? smile.gif ja się zbytnio na tym nie znam dlatego piszę smile.gif
dr_bonzo
Nie trzeba nawet do zrodla zagladac, wystarczy "View background image" w Firefoxie biggrin.gif
EDIT: a 3 minuty to dlatego ze firefox wlacza mi sie ddlugo i mam wolnego neta biggrin.gif
omen
noentrance przeczytaj mojego pierwszego posta w tym temacie :roll2:

dr_bonzo no coż to zabezpieczenie nie jest na wszystkie typy przeglądarek winksmiley.jpg dla IE jest idealne party.gif
dr_bonzo
Ciekawe czy "takie owakie" biggrin.gif beda uzywaly IE jesli beda wiedziec ze da sie to zrobic pod FFoexem.
omen
heheh winksmiley.jpg

swoją drogą gdyby napisać skrypcik, który by blokował dostęp do stronki z innych przeglądarek niż IE laugh.gif
to może być całkiem dobre rozwiązanie guitar.gif
dr_bonzo
Nie da sie zalokowac dostepu do adresu obrazka, bo przgladarka zeby go pobrac wysyla zapytanie
Kod
GET /path/obrazek.jpg HTTP/1.1
Host: www.example.com
User-Agent/*czy jakos podobnie*/: MSIE 7.0
...

Czyli zeby pobrac obrazek MUSI znac jego adres, jesli go zna to user moze wyswietlic sobie naglowki wysylane przez przegladarke (np. LiveHeaders w FFoxie).
Nie zablokujesz dostepu dla innych przegladarek bo User-Agenta mozna sobie dowolnie wybrac (np. Firesomething w FFoxie).
Kodu strony tez nie zablokujesz: podgladam zrodlo i wykonuje JS:
Kod
alert(unescape("%3CHT%4DL L%41N%47%.... ) );

i widze kod strony.
noentrance
omen, przeczytalam tylko jest taki problem ze z angielskim to u mnie kiepsko :]

Cytat
Ciekawe czy "takie owakie"

no ciekawe...

Cóż ja już jestem kołowata i w końcu nic już nie wiem.
omen
ale tam nie ma nic do czytania po angielsku tongue.gif (oprócz opisu programu)
klikamy na przycisk DOWNLOAD

rozpakowywujemy i odpalamy to diabelstwo laugh.gif

następnie:
1. w zakładce HTML Encrypt -> Add Files (wybieramy pliczek html, który chcemy przerobić)
2. w zakładce Backup options nic nie zmieniamy
3. Encryption Options -> zaznaczamy Total Encryption
4. Extra Security -> Disable right-click menu & Disable text selection
5. Meta Tags -> zaznaczamy wszystko cool.gif

wracamy do zakładki 1. HTML Encrypt -> i wciskamy największy klawisz "Encrypt"

Rkingsmiley.png
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.