PDA

View Full Version : سوال: بدست آوردن آی پی فرد با بازدید از تصویر



ravand
پنج شنبه 11 آبان 1391, 11:58 صبح
سلام
یکی از بچه ها ادعا میکرد که برنامه ای نوشته که باهاش میشه آی پی و مشخصات فردی که از یک تصویر بازدید کرده رو بدست آورد.
آیا این شدنیه؟

lordofphp
پنج شنبه 11 آبان 1391, 18:27 عصر
سلام
خوبین؟
خوب اگه تو وب پیج باشه که آره
اما تصویر عادی فکر نکنم

MMSHFE
پنج شنبه 11 آبان 1391, 20:29 عصر
اگه تصویر با PHP ساخته بشه (به کمک GD) بله میشه. حتی میشه با یک ترفند ساده، ایمیلی بفرستین که به محض باز شدن، به شما اعلام کنه که ایمیل خونده شده و ساعت و تاریخ خونده شدن، IP فرد و کلی اطلاعات دیگه رو در اختیارتون بگذاره.

eshpilen
دوشنبه 15 آبان 1391, 07:55 صبح
اصلا GD هم نمیخواد.
حتی با تصاویر استاتیک هم میشه این کار رو کرد.
میای با htaccess تنظیم میکنی که آدرس تصاویر استاتیک درخواست شده ترجمه بشه به آدرس یک فایل PHP که آدرس فایل تصویر استاتیک درخواست شده رو بعنوان پارامتر بهش پاس میکنه.
خب بعدش هم توی اون فایل PHP میتونی قبل از اینکه محتویات تصویر رو توسط توابع فایل بخونی و به کلاینت ارسال کنی، مشخصات کلاینت رو لاگ کنی.
البته ارسال هدر تعیین کنندهء MIME یادتون نره. یعنی مثلا برای تصاویر PNG این هدر رو هم باید به کلاینت ارسال کنید:


header('Content-type: image/png');

در حالت عادی آپاچی خودش این هدر Content-type رو برحسب نوع فایل (که فکر میکنم از روی پسوند فایل تشخیص میده) به کلاینت ارسال میکنه، ولی حالا که شما دارید محتویات تصویر رو از طریق یک فایل PHP ارسال میکنید، این هدر بصورت خودکار مطابق با نوع دادهء ارسالی ارسال نمیشه.

ravand
دوشنبه 15 آبان 1391, 08:03 صبح
اگه تصویر با PHP ساخته بشه (به کمک GD) بله میشه. حتی میشه با یک ترفند ساده، ایمیلی بفرستین که به محض باز شدن، به شما اعلام کنه که ایمیل خونده شده و ساعت و تاریخ خونده شدن، IP فرد و کلی اطلاعات دیگه رو در اختیارتون بگذاره.

برای اینکه تصویر امنیتی رو برای فرد بفرستی مجبور ادرس یه فایل php رو براش بفرستی که تصویر امنیتی نمایش داده بشه. ولی اونی که این حرف رو به من زد گفت به عکس رو فرد باز میکنه.

eshpilen
دوشنبه 15 آبان 1391, 08:14 صبح
ما شونصد سال پیش این چیزا رو توی ذهنمون ساختیم و تست کردیم تموم شد رفت.
اینقدر من از این چیزا به ذهنم رسیده، منتها وقت و انگیزه نداشتم که کاری باهاشون بکنم.
چند ایده برای هک کردن و سوء استفاده از ضعف های عمومی بسیاری از نرم افزارها هم دارم، اما خب آخه این کارا آخرش که چی!!
بجای اینا آدم میره دوتا چیز مفیدتر یاد میگیره دوتا کار مفیدتر انجام میده.
یه زمانی شونصد سال پیش فکر میکنم برای اولین بار در ایران، بنده مقاله ای درمورد web bug دادم. اون زمان هنوز مقالهء ویکیپدیا هم براش نبود. اصلا کل اینترنت رو جستجو میکردی فقط یکی دوتا مطلب راجع بهش پیدا میشد. تازه بعد از اینکه اون مقاله رو دادم اون یکی دوتا مطلبی هم که موجود بود به طرز مرموزی ناپدید شد!!
ولی الان اوضاع تغییر کرده!
web bug یا web beacon تصاویر پنهانی هستن که مثلا در ایمیل ها جاسازی میکنن تا به مشابه همین روشهایی که گفتیم درخواستها و ایمیل ها رو ردیابی کنن.
قدیم یاهو خودش این کار رو میکرد (یعنی حتی اگر ایمیلی از طریق یاهو به ایمیل غیریاهو ارسال میشد، هنوز هم یاهو اون رو ردگیری میکرد). احتمالا هنوز هم این کار رو میکنه.

البته اینم بگم که نرم افزارها و فیلترهای امنیتی هم برای جلوگیری از web bug ها وجود دارن.
یکی از دلایلی که میتونید نمایش تصاویر رو در ایمیل خاموش کنید برای همینه. اما بصورت خودکار هم فیلترها و نرم افزارهای امنیتی هستن که تصاویری رو که مشکوک هستن حذف میکنن. مثلا تصاویری که طول و عرض خیلی کمی دارن (که دیده نمیشن یا به سختی دیده میشن) یا بهرصورت دیده نمیشن.

eshpilen
دوشنبه 15 آبان 1391, 08:15 صبح
برای اینکه تصویر امنیتی رو برای فرد بفرستی مجبور ادرس یه فایل php رو براش بفرستی که تصویر امنیتی نمایش داده بشه. ولی اونی که این حرف رو به من زد گفت به عکس رو فرد باز میکنه.
پست بالاییت رو بخون.
گفتم که با htaccess میشه این کار رو کرد.
مهم نیست طرف به خیال خودش یک فایل استاتیک رو مستقیما باز میکنه، اما درواقع پشت پرده یک فایل PHP اجرا میشه و اون فایل رو Serve میکنه.

بعدم ببخشید این همچین چیز عجیب و دشوار و بی سابقه ای نیست که اصلا!
مگه آپاچی خودش درخواستها رو لاگ نمیکنه؟ فکر میکنم قابل تنظیم هم باشه.
شایدم آپاچی نبود، اما یادمه قبلا یه جایی چنین لاگی رو دیده بودم. تمام درخواستها لاگ میشدن همراه با IP کلاینت.
کلیتش همه درخواستها در نهایت توسط سرور و در مرحلهء بعد توسط آپاچی دریافت و پاسخ داده میشن. پس همهء درخواستها و همه چیز درخواستها رو میشه لاگ کرد یا بر اساس اونها هر عمل دیگری انجام داد. مهم نیست فایل استاتیک باشه یا دینامیک، تصویر باشه یا فلش، ... مشخصات همه درخواستها قابل دریافت و ثبت است. مرورگر هم تمام اطلاعات مثل کوکی ها و user agent رو در هر درخواست ارسال میکنه، چه ظاهرا فایل استاتیک باشه و چه دینامیک، چه تصویر و چه هر فرمت دیگری.

ravand
دوشنبه 15 آبان 1391, 20:52 عصر
یعنی شما میگید که باید با htaccess کاری کرد که وقتی مثلا من آدرس عکسی رو باز میکنم در واقع آدرس یه فایل php باز بشه؟
هر چی در این مورد سرچ زدم چیزی پیدا نکردم من خودم زیاد با htaccess کار نکردم. حالا بازم در موردش سرچ میکنم.

Unique
سه شنبه 16 آبان 1391, 01:48 صبح
دوستان توضیحاتشون کامل بود و فکر کنم مشکل شما اینه که توی src عکس بجای آدرس یک فایل php از یک فایل مثلا jpg استفاده کنید ! خوب اگه کمی از Rewrite کردن توی htaccess بذونین (که من مطمئن هستم میدونین) میشه گفت اکه a.jpg صدا زده شد شما فرض کن a.php بوده و با استفاده از header های صحیح عکس را برای شخص بسیازید و اطلاعات ip و غیره را هم به دست بیارین !

eshpilen
سه شنبه 16 آبان 1391, 08:30 صبح
یعنی شما میگید که باید با htaccess کاری کرد که وقتی مثلا من آدرس عکسی رو باز میکنم در واقع آدرس یه فایل php باز بشه؟
هر چی در این مورد سرچ زدم چیزی پیدا نکردم من خودم زیاد با htaccess کار نکردم. حالا بازم در موردش سرچ میکنم.
بله.
البته آدرس عکس درخواست شده هم بصورت پارامتر بهش پاس بشه.

کاملا شدنیه و کار دشواری هم نیست.
فقط طبیعتا پرفورمنس رو میاره پایین.

ravand
سه شنبه 16 آبان 1391, 10:08 صبح
من یه برنامه با جاوا J2SE (نه جاوا اسکریپت) نوشتم و خواستم تعداد استفاده کننده هاش رو بدست بیارم. امدم به جای ادرس عکس آدرس فایل مثلا http://site.ir/aks.php رو گذاشتم. بعد توی فایل aks.php این فایل زیر رو گذاشتم:

<?php Header( "Location: http://www.site.ir/pic.gif" );?>
به محضی که کاربر برنامه ی جاوای من رو باز میکنه فایل aks.php هم باز میشه و آی پی طرف هم ثبت میشه و بعد ادرس عکس نمایش داده میشه.
ولی ای کاش می تونستم فقط آدرس عکس رو که به طرف میدم بشه آی پیش رو گرفت. اینطوری جالب تر میشد.

MMSHFE
چهارشنبه 17 آبان 1391, 01:18 صبح
این کد رو توی فایل htaccess. توی ریشه سایتتون بنویسید:


RewriteEngine on
RewriteRule ^/([^\.]+)\.(png|jpg|gif)$ /image.php?file=$1.$2 [NC,L]

اگه دوست داشتین پسوندهای دیگه رو هم اضافه کنید.
حالا یک فایل به اسم image.php با محتوای زیر توی ریشه سایت ایجاد کنید:


<?php
if(isset($_GET['file'])) {
$fp = fopen('log.txt', 'a');
fwrite($fp, $_SERVER['REMOTE_ADDR'] . PHP_EOL);
fclose($fp);
$ext = substr($_GET['file'], strrpos($_GET['file'], '.') + 1);
$valid_exts = array('png', 'jpg', 'gif');
if(in_array($ext, $valid_exts)) {
switch($ext) {
case 'png':
header('Content-type: image/png');
$image = imagecreatefrompng($_GET['file']);
imagepng($image);
imagedestroy($image);
break;
case 'jpg':
header('Content-type: image/jpeg');
$image = imagecreatefromjpeg($_GET['file']);
imagepng($image);
imagedestroy($image);
break;
case 'gif':
header('Content-type: image/gif');
$image = imagecreatefromgif($_GET['file']);
imagepng($image);
imagedestroy($image);
break;
}
}
}
?>

طبیعتاً اینجا هم درصورت نیاز به پسوندهای دیگه باید اونها رو به switch اضافه کنید. البته راه دیگه ای هم برای نمایش تصویر با دستوری شبیه کد زیر هم هست:

echo file_get_contents($_GET['file']);
که طبیعتاً امنیت GD بیشتره.
نکته مهم: برای کارکردن این روش باید mod_rewrite در Apache و همچنین GD در PHP فعال باشن.
موفق باشید.

Unique
چهارشنبه 17 آبان 1391, 02:01 صبح
دوست عزیز شما متوجه منظور دوستان نشدین ! کدی که گذاشتین یک redirect خیلی ساده توی php هست ! ما اینجا داریم از apache حرف میزنیم. لطفا کد زیر را دانلود و ملاحظه کنید متوجه میشین توی این کد اگه شما Image_log.jpg را توی مرورگر درخواست کنید یک عکس بهتون نمایش داده میشه و Ip شما هم Log گرفته میشه !

ravand
چهارشنبه 17 آبان 1391, 06:48 صبح
از همتون متشکرم.
من این کار رو قبلا کرده بودم و چون ریدراکت رو توی برنامه ی ومپ فعال نکرده بودم برای همین کار نمیکرد.
http://forum.joomina.ir/thread-13161-post-82168.html#pid82168
این اسم عکس رو هم توی این خط اشتباه وارد کرده بودید:

RewriteRule ^image_log.jpg$ image_log.php
متشکرم.