Pomoc - Szukaj - U¿ytkownicy - Kalendarz
Pe³na wersja: [PHP][INNE] skrypt php w .jpg
Forum PHP.pl > Forum > Przedszkole
botnaizi
Witam.

Trafi³em dzi¶ na artyku³, ¿e mo¿na zagnie¼dziæ kod php w obrazku poprzez zdefiniowanie nag³owków. Ale próbuj±c zrobiæ to u siebie nie udaje mi siê. Móg³by kto¶ poprawiæ kod je¶li jest ¼le

¬ród³o 1:
plik .htaccess
<Files hackme.jpg>
ForceType application/x-httpd-php
</Files>

Plik hackme.jpg
  1. <?php
  2. //przesy³amy nag³ówek przegl±darce co informuje j± o tym, ¿e jeste¶my obrazkiem
  3. header("Content-type: image/jpg") ;
  4.  
  5. //tutaj zapisujemy informacje zawarte w tzw. zmiennych serwerowych (ip..bleble)
  6.  
  7. //nazwa pliku do którego zapisujemy
  8. $nazwapliku = 'info.txt';
  9. //pobranie daty i czasu
  10. $data = date("l dS of F Y h:i:s A") ;
  11.  
  12. //operacje na pliku
  13. $plik = @fopen($nazwapliku, "a") ;
  14. flock($plik, 2) ;
  15. fwrite($plik,"$_SERVER[HTTP_USER_AGENT]|$_SERVER[HTTP_REFERER]|$ _SERVER[REMOTE_ADDR]|$data\n") ;
  16. flock($plik, 3) ;
  17. fclose($plik) ;
  18.  
  19. /*
  20.  
  21. $_SERVER[HTTP_USER_AGENT] = wersja przegl±darki z jakiej skrypt zosta³ wywo³any
  22. $_SERVER[HTTP_REFERER] = strona z jakiej skrypt zosta³ wywo³any
  23. $_SERVER[REMOTE_ADDR] = adres ip komutera z którego skrypt zosta³ wywo³any
  24.  
  25. */
  26.  
  27. //tworzymy zmienn± z informacjami o obrazie (wymiary, zawarto¶æ)
  28.  
  29. //wy¶wietlony tekst w obrazku
  30. $text = "bleeeeeeeeee" ;
  31. //rozmiar czcionki
  32. $font_size = 12 ;
  33. //krój czcionki (za³aduj na serwer odpowiedni plik)
  34. $font_family = "times.ttf" ;
  35.  
  36. //wymiary obrazka na podstawie d³ugo¶ci tekstu
  37. $box_size = ImageTTFBbox(12, 0, $font_family, $text) ;
  38.  
  39. $x = $box_size[2] - $box_size[6] + 7 ; //pobranie szerokosci
  40. $y = $box_size[3] - $box_size[7] + 7 ; //pobranie wysokosci
  41.  
  42. //tworzymy obraz o powy¿ej pobranych wymiarach
  43. $image = ImageCreate($x, $y) ;
  44.  
  45. //tworzymy kolor bia³y
  46. $color['1'] = ImageColorAllocate($image, 255, 255, 255) ;
  47. //tworzymy kolor czarny
  48. $color['2'] = ImageColorAllocate($image, 0, 0, 0) ;
  49.  
  50. //rysujemy bia³y prostoko±t
  51. ImageFilledRectangle($image, 0, 0, $x, $y, $color['1']) ;
  52.  
  53. //wspó³rzêdna x górnego lewego naro¿nika gdzie chcemy rozpocz±c wypisywanie tekstu
  54. $x = 3 - $box_size[6] ;
  55. //jak wy¿ej tylko wspó³rzêdna y
  56. $y = 3 - $box_size[7] ;
  57.  
  58. //wypisanie tekstu do obrazka
  59. ImageTTFText($image, 12, 0, $x, $y, $color['2'], $font_family, $text) ;
  60.  
  61. //wys³anie obrazka do przegl±darki
  62. ImageJPG($image) ;
  63. //zniszczenie danych (przegl±darka ju¿ je otrzyma³a i nie s± potrzebne)
  64. ImageDestroy($image) ;
  65. ?>


¬ród³o 2
Plik .htaccess identyczny jak w ¼ródle nr 1
Plik hackme.jpg
  1. <?php
  2. //przesy³amy nag³ówek przegl±darce co informuje j± o tym, ¿e jeste¶my obrazkiem
  3. header("Content-type: image/jpg") ;
  4.  
  5. //tutaj zapisujemy informacje zawarte w tzw. zmiennych serwerowych (ip..bleble)
  6.  
  7. //nazwa pliku do którego zapisujemy
  8. $nazwapliku = 'info.txt';
  9. //pobranie daty i czasu
  10. $data = date("l dS of F Y h:i:s A") ;
  11.  
  12. //operacje na pliku
  13. $plik = @fopen($nazwapliku, "a") ;
  14. flock($plik, 2) ;
  15. fwrite($plik,"$_SERVER[HTTP_USER_AGENT]|$_SERVER[HTTP_REFERER]|$_SERVER[REMOTE_ADDR]|$dat
    a\n"
    ) ;
  16. flock($plik, 3) ;
  17. fclose($plik) ;
  18.  
  19. /*
  20.  
  21. $_SERVER[HTTP_USER_AGENT] = wersja przegl±darki z jakiej skrypt zosta³ wywo³any
  22. $_SERVER[HTTP_REFERER] = strona z jakiej skrypt zosta³ wywo³any
  23. $_SERVER[REMOTE_ADDR] = adres ip komutera z którego skrypt zosta³ wywo³any
  24.  
  25. */
  26.  
  27.  
  28.  
  29. //tworzymy zmienn± z informacjami o obrazie (wymiary, zawarto¶æ)
  30.  
  31. $img = imagecreate(280, 50); //rozmiary obrazka
  32. $background = imagecolorallocate($img, 215, 225, 235); //kolor tla obrazka
  33. $textcolor = imagecolorallocate($img, 0, 0, 0); //kolor tekstu obrazka
  34. imagestring($img, 5, 10, 7, 'Hackme.pl Przyk³adowy obrazek', $textcolor); //napis
  35. imagejpeg($img); //wys³anie obrazka do przegl±darki
  36. imagedestroy($img); //zniszczenie danych (przegl±darka ju¿ je otrzyma³a i nie s± potrzebne)
  37.  
  38. ?>
gcdreak
Równie dobrze mo¿esz stworzyæ plik obraz.php i w nim stworzyæ kod, który stworzy obrazek i zwróci go do przegl±darki. Wtedy te¿ wysy³asz do przegl±darki nag³ówki. Popatrz na ten kod:
  1. ini_set('display_errors', '1');
  2.  
  3. // An information for browser
  4. header('Content-type: image/png');
  5.  
  6.  
  7. $sx = 300; // horizontal size of image
  8. $sy = 300; // vertical size of image
  9.  
  10. $img = imagecreate($sx, $sy);
  11.  
  12. $blue = imagecolorallocate($img, 0, 0, 255);
  13. $red = imagecolorallocate($img, 255, 0 ,0);
  14.  
  15. $font = 'ttf-japanese-gothic';
  16. putenv('GDFONTPATH=/usr/share/fonts/truetype');
  17. $string = 'Hello world!';
  18.  
  19. imagettftext($img, 42, -45, 10, 35, $red, $font, $string);
  20. //tutaj obrazek jest wysy³any
  21. imagepng($img);
  22.  
  23. imagedestroy($img);

Ca³o¶æ jest zamkniêta w pliku .php i jest to bardziej czytelne - nie wprowadza zamieszania na serverze.
botnaizi
Tylko, ¿e mi w³a¶nie chodzi o to aby to by³o w pliku .jpg/.png . Wtedy chocia¿by w podpis mogê bez problemu dodaæ skrypt. Dlatego zale¿y mi aby by³o z innym rozszerzeniem ale jeszcze bardziej pytam z ciekawo¶ci smile.gif
gcdreak
Chyba, ¿e tak. Dobry pomys³ z tym podpisem guitar.gif
Je¶li jednak chesz to zrobiæ to troche dziwne ¿e co¶ nie dzia³a bo teoretycznie powinny wystarczyæ zmiany w .htaccess.
We¼ wklej do tego pliku ten mój kod i sprawd¼ czy to dzia³a. Je¶li zadzia³a to bêdziemy szukaæ b³êdu w twoim kodzie. Je¶li nie to co¶ w tych ustawieniach .htaccess bêdzie ¼le
botnaizi
wywali³o mi

  1. Warning: Cannot modify header information - headers already sent by (output started at /var/www/test/logo.php:1) in /var/www/test/logo.php on line 7
  2. PNG  ��� IHDR��,��,����SF���PLTE��ÿÿ��?¿¿?_����ß���_[}e��[IDATxíOoÜ6ÅiI»Ò1ÇkµEá³ÕñuÕúxÍ1kõ5!ÇUÑ4ùØå��HýñAÎkÁwðʲ��F£!õÈU****ê D:yU;éæÒ+éæTÒ1LIÇ0# ëV:©"¬°(ÂZ Öd C°2ÚIF*<5¬÷î0#¢&#65533;&#65533;±xiXtê&#65533;k&#65533;¡¥a]&#65533;C&#65533;µ&#65533;&#65533;¦gÖÁáÂ&#65533;uÛX\`°Tnq&#65533;ÁRÊàB&#65533;¥,.8X×k8XáÁ2¸ð`Y\x°&#65533;oC# Û°&#65533;&#65533;¥ HXJµXÉ/&#65533;íV?¥ÕÁú&#65533;hs g¬Ö%¯M)M/kE&#65533;Të¬&#65533;ûÔ Î-é`ñóç7õ&#65533;è¥t@FV¢?×&#65533;£ÛHGdä`m]ÍÏ&#65533;&#65533;²u&#65533;uèj~ëÆA²r°ÖÔ%Õ&#65533;^¸?åÄ¢ÒpÌ­·çÚPò&#65533;G:w&#65533;joÊÂÀJ&#65533;.WÝÓª$kX»Sæòp±TÌí½ûK#YÃrþQë²&#65533;\Á&#65533;¨O&#65533;ü&#65533;#2¸Ò`ÒF&#65533;2&#65533;®&#65533;ÅÕó¨Ò¸2&#65533;V&#65533;Î&#65533;Ôß&#65533;ÊÔØ&#65533;PH¬&#65533;&#65533;?ìp1¤"ÑÚZ¸!?®�¹ðÔÏÈ�(³´ ®��0,NùÒèþÁwóÒ°�:8,ùáÁ���Ì|�F�Å!�ãsò°8¹Æ���)�¿Ï�À2� } O@À²c×ðõ,3L J ,]éÃ�5�%ÙÕÏÃ�ìêC�2K´«÷g�t�ê4¾ ¥ÛT«ém�kZ³pÍÕ,á®�5Wàå�þj@Ño!a%�°RHXêqÐIÀÒ¥àb| ��:�xÌ`ñ|D9<����²�ß!`qr _GaÀâÂ>A`ÇréŸK7}G k X¡"¬°Ö\W ¹®^^ã®þÓM)É@î>ÿhóíùÿþ×4ìê[Î «o`8aWÏv úÂvõúnv|Àã»zy³áÀñ]½ ÂUì»zYî¦l{�� º®^ºËù¾a��ëêóC_ÁNrÞuõ«HXVÁmp���ûÞ¯$®Ü?² Åyw­Ö9§¾íÚµ«ë¾Àx&:­û�¯1ÜViG+r]0-�& E�»¶¡ éܸ¤ö&ÑÙ"��ðª{ÉÙb0¼tmßܱ(³X[;ìA[«/£c���@Zz}º{WJÇõÓQ:Y­ÐGV[ñY ÿÔæ&�j±ºh§¬v²Ít&ÆX÷«yv3&á´^zË �ÐÜ��Y ×b¼qñZqÂ?ñg(ZµÝkæ-Òt��º¬éU5¨]ë/hó��¶,¤£éµ§yE× O~åôÒaÇ%«â¿©]:$lÅ _ÌtEW-Ýë��0²ï¥ã±ÒÉþD§ƤØg ýÍ^tVqÂótÎN:+]FÍ Nx ÞÔz"xÍì h:ï½k¾9Î%TÜ8*JåÖnºâÀ)QJ}o âÀùSq½ºÝ»Iq?6îâ8p8á?¸KäÀ±µ«¿0®]öB9p> 8<Qò'�§pC0�úËü�sàXEÎEÎEÎEÎÍ8pR�Ä�qàT�C¡©'&#65533;¨Æ7&#65533;&#65533;8)Æ 9và`À;p4¬&#65533;¯?¿&#65533;&#65533;Âtongue.gif*ä©|\¡'%�3�uz÷cÌØ�aý¤?¿ô¸$÷ÀéUuÓ¨�]qEØÇï�­;s�°Nå��­{�lê��_Hµ:ÚO�SB5×q�ã ay�ã��%¾Î<,ñ´ÏÀ^n�aÂÒ�àqæ¬øÚì�RåÌ9qXó��5§k�"¬�°(ÂZ k�"¬�°(î�³@£=p²7�×ÝáN �NÃu<]ØùôjÉ!ö`;¹jÇE�è{°N̦Ö$iJ÷À1Ö¸7d^�f²� �=pøµËY©�Ì� ZØHè÷ÀiÜ$=[J�a{à°yðÈ)��Ãò{à¤ÝABçâ°¼kcßWz!«ß'ó¯YØ' «Û§éçâr:ÈÃêä½l ��e�û¯-J�ö"(�×X«�D8�Öî��ØÖ^t®þ¤O­Õ�ì\ýcÿÈÖ¬Vöõìc`u `$ëJè/â�¨+aíLgÃÍf2aXni¥é¹Xµ¸�ýÀÍVÞN` Ö-ûF�ÍÔòO¡Ä¹5Â��<,¥>Û°8¶ò°´>}¿ÁÅjư|A¸��²¬f©E¥K=$¬Pþ»¡Ô- Ë. ÄSdïÄ__ü]:©��5T~¬X¦8ââJ Å(*àöp±jaùõhú*@TTTTTTTTTTTTTTTTTTþìÉ0/s<&#65533;&#65533;&#65533;&#65533;IEND®B`&#65533;



Ale podkre¶lam wklei³em tylko ten kod od Ciebie nic nie dodaj±c smile.gif

P.S Zmieniaj±c .htaccess nic siê nie naprawia ani nie psuje smile.gif
gcdreak
Tak, musia³o wywaliæ b³êdy bo nie masz czcionek
  1.  
  2. ini_set('display_errors', '0');
  3. // An information for browser
  4. header('Content-type: image/png');
  5.  
  6.  
  7.  
  8. $sx = 300; // horizontal size of image
  9. $sy = 300; // vertical size of image
  10.  
  11. $img = imagecreate($sx, $sy);
  12.  
  13. $blue = imagecolorallocate($img, 0, 0, 255);
  14. $red = imagecolorallocate($img, 255, 0 ,0);
  15.  
  16.  
  17. //tutaj obrazek jest wysy³any
  18. imagepng($img);
  19.  
  20. imagedestroy($img);


Je¶li wy¶wietli niebieski kwadrat to ustawienia masz OK.
botnaizi
  1. ?PNG  questionmark.gif? IHDR??,questionmark.gif,questionmark.gif?C³6?questionmark.gifPLTE??ÿÿ??Åú?Ó?questionmark.gif"IDATh?íÁ1questionmark.gif


Czyli co¶ mam ¼le. Robiê to na pliku obrazek.php

a .htaccess wygl±da tak:

<Files obrazek.php>
ForceType application/x-httpd-php
</Files>

Nie wiem co jest nie tak


EDIT.

ok na zdalnym serwerze odpali³o teraz jak to zrobiæ w .jpg/.png ?
maxil
bo ty obrazek zapewne chcesz wy¶wietliæ poprzez

  1. include 'skrypt.php';


zrób to przez:

  1. <img src="skrypt.php" alt="" />
botnaizi
Nie bardzo rozumiem. Mo¿e wyt³umacze jeszcze raz. Chcê aby skrypt php wykonywa³ siê w pliku .jpg czyli kto¶ wejdzie w www.net.pl/obrazek.jpg i wykona mu siê skrypt
gcdreak
Konfiguracja jest dobra! Równie dobrze mo¿esz sprawdziæ konfiguracje .htaccess za pomoc± prostego kodu:
  1. echo "Hello world!";


Widaæ, ¿e pliki .jpg s± parsowane. Problem le¿y w skrypcie który ma bugi.
botnaizi
Czyli co ? Bedzie ciê¿ko to zrobiæ ?

a jak zmienie wszystko na .jpg to wy¶wietla tylko scie¿ke do pliku

http://***.***.***/pliki/test/obrazek.jpg

marcio
A EXIF?
botnaizi
exif ? Móg³bys pokazaæ jak co¶ tym zrobiæ ? smile.gif

A na 100% metoda z .jpg dzia³a bo w tutku z którego to bra³em jest odno¶nik do strony i tam w³a¶nie wykonuje siê taki skrypt.

A czy s± jakie¶ inne metody aby dodaæ skrypt do np podpisu na forum ?
marcio
Cytat
exif ? Móg³bys pokazaæ jak co¶ tym zrobiæ ?


Nie jestem na 100% pewny ale kiedys byl explo pod jakiegos cms'a gdzie mozna bylo zalaczac obrazki do postow czy tam upload byl no i mozna bylo wstrzyknac kod php do exif'a image, zreszta proste edytory daja mozliwosc ustawienia exifa wiec pokombinuj.




P.S na milw0rm poszukaj explo na ten temat.
EDIT: http://sillydog.org/forum/sdt_11374.php tutaj masz wszystko.
botnaizi
Nic z kodu z milw0rm'a nie rozumiem :] Problem le¿y w tym , ¿e w ogóle przegl±darka nie wy¶wietla obrazka chocia¿ kod jest dobry
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-2025 Invision Power Services, Inc.