<?
function fakeip(){
return long2ip( mt_rand(0, 65537) * mt_rand(0, 65535) );
}
function Get_File($url) {
$timeout = 30;
$cerez = "cookie.txt";
$useragent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0";
$headers = array(
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Cache-Control: private, max-age=0',
'Connection: keep-alive',
'Keep-Alive: 115',
'Accept-Language: en-US;q=0.6,en;q=0.4',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("REMOTE_ADDR: ".fakeip(),"X-Client-IP: ".fakeip(),"Client-IP: ".fakeip(),"HTTP_X_FORWARDED_FOR: ".fakeip(),"X-Forwarded-For: ".fakeip()));
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cerez);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cerez);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}Yardımcı olacak üstatlarıma şimdiden teşekkürler
Siteye giren kişinin ipini çekme
7
●601
- 30-09-2017, 03:34:30Selam elimde bir kod var fakeip diye yazmış yazan siteye giren kişinin ipini nasıl çekerim bu kodu bana düzeltebilirmisiniz.
- 30-09-2017, 03:39:18Burdan Ulaşabilirsiniz : https://www.r10.net/1065341554-post1.html
- 30-09-2017, 04:00:17RemziKurcan adlı üyeden alıntı: mesajı görüntüle
Ben oradakileri burada verdiğim kodların içerisine nasıl koyacağım usta anlamıyorum ki - 30-09-2017, 04:21:33YusufKURT adlı üyeden alıntı: mesajı görüntüle
Can sıkıntısından bir cevap yazayım devamına katılamam muhtemelen ;
Öncelikle IP adresleri
255.255.255.255 -> 2^8 x 2^8 x 2^8 x 2^8 kombinasyona sahiptir (v4 için söylüyorum) bu kombinasyon kapsamında
http://www.ipaddressguide.com/ip
0.0.0.1 ip adresinin decimal değeri 1
255.255.255.255 ip adresinin decimal değeri 4294967295 dir . yani (2^8)^4 değerine eşittir.
IP adresleri matematiksel olarak bu şekilde oluşturulur.
Ilk fonksiyonun :
function fakeip(){ return long2ip( mt_rand(0, 65537) * mt_rand(0, 65535) ); }
2^16 * 2^16 = 2^32 = (2^8) ^4 yani dünyadaki 0.0.0.0 dan 255.255.255.255 e kadar ip adreslerinin decimal değerinden herhangi birini seç ve bunu ip ye çevir demiş ;
return long2ip ( random bir değer seç : 4294967295 içinden ) örnek 1283432323 seçti diyelim https://www.browserling.com/tools/dec-to-ip adresinden bakarsan çevirdiği ip : 76.127.159.131
peki bu arkadaş bunla ne yapmış ;
curl_setopt($ch, CURLOPT_HTTPHEADER, array("REMOTE_ADDR: ".fakeip(),"X-Client-IP: ".fakeip(),"Client-IP: ".fakeip(),"HTTP_X_FORWARDED_FOR: ".fakeip(),"X-Forwarded-For: ".fakeip()));
siteler cloudflare gibi servislerden geçtiği sırada şu şekilde çalışır :
Siz ----> (Sizin IP adresiniz) cloudflare ----------> (Cloudflare ip adresi) sunucu
ancak sunucu ziyaretçilerin ip sini bilmek ister. Cloudflare kendi ipsi yerine sizin ip adresiniz ile istek açsa cevap size döner o da TCP protokolunde bir trafiğin tamamlanmasına müsade etmez ;
Çünkü TCP de
SYN client gönderdiğinde Sunucu ACK cevaplar Client tekrar SYN ACK gönderir bu paketler gönderilirken SYN paketinde Sequnece numarası vardır geriye Sequence numarasına + paket içindeki veri kadar eklenerek Acknowledgement numarasında geri almak ister ve sunucu ACK paketini gönderirken random bir sequence numarası ekler .
Bu sebep ile cloudflare sizin ip niz ile cagrıyı sunucuya iletirise sunucu sizin cloudflare ile aranızdaki siz de cloudflare ile sunucu arasındaki paketlerde yer alan seq / ack_seq numaralarını beklemediğiniz ve bilmediğiniz için protokol kötü trafik olarak dökülecektir.
Bu durumda cloud flare gibi proxyler sitelere sizin ip bilginizi :
curl_setopt($ch, CURLOPT_HTTPHEADER, array("REMOTE_ADDR: ".fakeip(),"X-Client-IP: ".fakeip(),"Client-IP: ".fakeip(),"HTTP_X_FORWARDED_FOR: ".fakeip(),"X-Forwarded-For: ".fakeip()));
bu şekilde Client-ıp / x-client-ip / x-forward-for şeklinde iletir. Sunucu da buradan aaaaaaa arkadaş client bu ama istek proxyden geliyor der. Ziyaretçi ip si olarak paketin içindeki bu header daki ip yi kaydeder ama cevabı proxy e verir
Sizin yazdığınız kod ile acılan istek de sunucu sizi Proxy sanacaktır cloudflare gibi ama ziyaretçi olarak random seçilen ip yi kaydedecektir böylece sunucuda kendi ip iziniz kalmayacak.
Kod bu işe yarıyor paylaştığınız
Bilemiyorum açıklayıcı oldumu ama bu konuya bir ansiklopedi yazılır
o yüzden soru çok açık cevap vermek zor
Edit :
Burada peki sunucu kime cevap verecek nasıl seçiyor diyen olursa ;
PHP bir yazılım dili ve framework dür ona paketi apache / nginx / litespeed / IIS vs iletir. PHP zaten bağlanan ipye değil paket içindeki veriye bakar.
TCP paketleri
Head room + Ethernet Options + IP Options + TCP Options + Payload + Tail room
şeklinde oluşutur . php sadece payload ile ilgilienir
Apache ise IP optionsdan source / destination ip ve tcp options dan dinlediği porta gelen istekleri TCP optionsdan okuyup kaydeder örnek :
37.123.98.12 : 5670 -> 88.12.33.33:80 portuna gelen istek
IP : TCP.OPT -> IP.TCP.opt içerisinde yer alır ve açık 5670 portuna cevabı php işini bitirince geri verir :
88.12.33.33:80 -> 37.123.98.12 : 5670 şeklinde
bu yuzden trafik karışmadan , gerçek bir protokol el sıkışması ile yukarıdaki method sizi sunucuya fake tanıtır
Ama amatörler kanar profesyoneller bunu yemez
- 30-09-2017, 07:27:55spdnet adlı üyeden alıntı: mesajı görüntüle
ustam bende amatörüm çok anlamıyorum hatta php den hiç anlamıyorum desem yeri var kendimi geliştirmeye çalışıyorum. O fakeip yazılan satırı fake değilde kullanıcının keni ipi gelecek şekilde ayarlamak istiyorum bilmediğim için yapamıyorum r10'da bir üstadımızdan yardım bekliyorum.
- 30-09-2017, 13:03:41buu hiç yapmasanız zaten kullanıcının kendi ip si ile gider. Oyleyse bu kodu kullanmaktaki amac ne ?YusufKURT adlı üyeden alıntı: mesajı görüntüle
- 30-09-2017, 17:59:15Üyeliği durdurulduBununla gerçek ip adresini alamazsın zaten gerçek ip alınmasını engellemek için yazılmış bir fonksiyon o.YusufKURT adlı üyeden alıntı: mesajı görüntüle
Gerçek ip adresini şu kod ile alırsın :
<?php echo $_SERVER['REMOTE_ADDR']; ?>
Fonksiyon halinde istersen de :
function GetIP(){ if(getenv("HTTP_CLIENT_IP")) { $ip = getenv("HTTP_CLIENT_IP"); } elseif(getenv("HTTP_X_FORWARDED_FOR")) { $ip = getenv("HTTP_X_FORWARDED_FOR"); if (strstr($ip, ',')) { $tmp = explode (',', $ip); $ip = trim($tmp[0]); } } else { $ip = getenv("REMOTE_ADDR"); } return $ip; }Fonksiyonu kullanmak için :
$ip_adresi = GetIP(); // "echo GetIP();" diyerek ekrana da yazdırabilirsiniz.