Tag: przemo

phpBB 3 by przemo

phpBB 3 by przemo

phpBB3 by przemo niewątpliwie istnieje szansa na wydanie trzeciej wersji phpBB zmodyfikowanej przez przema jak i zapewne inne osoby… Aczkolwiek wersja phpBB 3.0.0 została wydana 13 grudnia 2007 (wersja phpBB 2 została wydana 4 kwietnia 2002 a wersja phpBB2 modified by przemo niewiadomego marca 2003)… Data mówi sama za siebie, ale daty nie mówią… Wiec pozostaje czekać.

W wersji trzeciej w porównaniu z phpBB2 przybyło wiele funkcji, dzięki czemu phpBB3 dorównuje funkcjonalnością phpBB2 by przemo. Są to między innymi:

  • Rozszerzony panel administracyjny ACP
  • Panel moderacyjny – panel moderatora MCP
  • Rozszerzone i przebudowane zarządzanie kontem użytkownika UCP
  • Zaawansowany system zezwoleń zwany także uprawnieniami
  • Moduł obsługi załączników – jest już w standardzie
  • Dodawanie własnych kodów BBCode
  • Własne pola w profilu
  • System ostrzeżeń
  • Raportowanie postów – system raportów
  • System przyjaciół i wrogów
  • W standardzie nowy ciekawy styl o nazwie prosilver

Więc funkcjonalnością już zaczyna ciekawić. Przy konwersji z phpBB 2 by przemo do zwykłego phpBB 3 zostają bez problemów przeniesione załączniki, avatary użytkowników jak i rangi oraz grupy. Mogą pojawić się drobne komplikacje z kategoriami ponieważ w phpBB3 nie istnieje takie coś jak kategorie, lecz bez problemów można to poprawić w panelu administratora.

Do pełnego szczęścia brakuje jeszcze portalu, downloadu oraz albumu zdjęć co niestety przy konwersji do zwykłego phpBB3 utracimy.

W oczekiwaniu na phpBB 3 by przemo możemy zaprzyjaźnić się ze zwykłym phpBB 3 chociażby dla zapoznania się z systemem uprawnień, który jest strasznie rozbudowany i na początku jest nie do zrozumienia.

usuwanie stopki phpbb by przemo

usuwanie stopki phpbb by przemo

Żaden ze znanych skryptów nie blokuje zmiany stopki ani jej usunięcia oprócz phpbb by przemo. Usunięcie stopki jest możliwe oraz jej modyfikacje.
Lecz tutaj po zmianie stopki wyświetla się komunikat i jakby tego mało wysyła email do przema… To nie jest instrukcja typu zrób to i tamto !

Jak jest wyświetlana stopka ?

Zaczynamy od tego iż stopka jest wyświetlana z pliku overall_footer.tpl za pomocą zmiennej stylu: {PAGE_LOAD_PLEASE_WAIT} (w uproszczonej stopce simple_footer.tpl usunięcie lub zmiana stopki nie powoduje wyświetlenia ostrzeżenia).

I jakakolwiek modyfikacja stopki lub usunięcie powoduje wyświetlenie ostrzeżenia.

Stopka forum została zmodyfikowana, forum nie będzie działać prawidłowo!
Ustaw prawidłowo stopkę w pliku overall_footer.tpl, musi być ona widoczna w przegladarce, nie może zawierać “sztuczek” maskujacych.

Wzór: Powered by <a href="http://www.phpbb.com" target="_blank" class="copyright">phpBB</a> modified by <a href="http://www.przemo.org/phpBB2/" class="copyright" target="_blank">Przemo</a> &copy; 2003 phpBB Group

Lecz ostrzeżenie wyświetla się tylko podczas wysyłania postu lub prywatnej wiadomości, a za to odpowiada plik posting.php lub includes/functions_post.php.

Niestety na darmo możemy szukać zmiennej stylu {PAGE_LOAD_PLEASE_WAIT} w pliku includes/page_tail.php (odpowiada ona za generowanie stopki), ale znajdziemy ją w pliku includes/page_header.php (odpowiada za generowanie headera – topu forum):

'PAGE_LOAD_PLEASE_WAIT' => append_sid('<a href="index.'.$phpEx.'?mode=tloading">' . $lang['Page_loading_wait'] . '</a>'),

Więc szukamy funkcji append_sid, znajduje się w pliku includes/sessions.php

function append_sid($url, $non_html_amp = false, $subdir_off = false)
{
	global $SID, $subdirectory;
 
	if ( !empty($SID) && !preg_match('#sid=#', $url) )
	{
		$url .= ( ( strpos($url, '?') !== false ) ?  ( ( $non_html_amp ) ? '&' : '&amp;' ) : '?' ) . $SID;
	}
 
	if ( isset($subdirectory) && !$subdir_off )
	{
		$url = $subdirectory . $url;
	}
 
	$sid1 = base64_decode('aGFzaF8x');
	$sid_s = base64_decode('aGFzaF8y');
 
	global $$sid1, $$sid_s;
 
	return (strpos($url, base64_decode('bW9kZT10bG9hZGluZw==')) !== false) ? base64_decode(base64_decode(str_replace('si', '', $$sid1))) : ((strpos($url, base64_decode('bW9kZT1lbG9hZGluZw==')) !== false) ? base64_decode(base64_decode($$sid_s)) : $url);
}

Na pierwszy rzut oka coś związanego z adresami i ID sesji… lecz base64_decode() i do tego podwójne budzi ciekawość więc sprawdźmy i zdekodujmy:

$sid1 = hash_1;
$sid_s = hash_2;

Co ciekawsze hash_1 i hash_2 to zmienne globalne (zmienne bo należy zwrócić uwagę na dwa $$ przed nazwą):

global $$sid1, $$sid_s;

Więc tak naprawdę mamy:

global $hash_1, $hash_2;

a te zmienne znajdują się w pliku includes/constans.php:

// Forum unique hash
$hash_1 = 'VUc5M1pYSmxaQ0JpZVNBOFlTQm9jbVZtUFNKb2RIUndPaTh2ZDNkM0xuQm9jR0ppTG1OdmJTSWdkR0Z5WjJWMFBTSmZZbXhoYm1zaUlHsiTnNZWE56UFNKamIzQjVjbWxuYUhRaVBuQm9jRUpDUEM5aFBpQnRiMlJwWm1sbFpDQmllU0E4WVNCb2NtVm1QU0pvZEhSd09pOHZkM2QzTG5CeWVtVnRieTV2Y21jdmNHaHdRa0l5THlJZ1kyeGhjM005SW1OdmNIbHlhV2RvZENJZ2RHRnlaMlYwUFNKZllteGhibXNpUGxCeWVtVnRiend2WVQ0Z0ptTnZjSGs3SURJd01ETWdjR2h3UWtJZ1IzSnZkWEE9';
$hash_2 = 'UENFdExTQlFiM2RsY21Wa0lHSjVJSEJvY0VKQ0lHMXZaR2xtYVdWa0lIWXhMamtnWW5rZ2NISjZaVzF2SUNnZ2FIUjBjRG92TDNkM2R5NXdjbnBsYlc4dWIzSm5MM0JvY0VKQ01pOGdLU0F0TFQ0PQ==';

Następnie funkcja zwraca nam wartość ale zależną od tego co znajdzie w $url (należy najpierw pamiętać o usunięciu si w $hash_1):

return (strpos($url, 'mode=tloading') !== false) ? 'Powered by <a href="http://www.phpbb.com" target="_blank" class="copyright">phpBB</a> modified by <a href="http://www.przemo.org/phpBB2/" class="copyright" target="_blank">Przemo</a> © 2003 phpBB Group' : ((strpos($url, 'mode=eloading') !== false) ? '<!-- Powered by phpBB modified v1.9 by przemo ( http://www.przemo.org/phpBB2/ ) -->' : $url);

Oczywiście nas interesuje to co zwróci dla mode=tloading, a zwróci stopkę z $hash_1.

To już wiemy jak jest wyświetlana stopka.

Jak jest sprawdzana poprawność stopki ?

W pliku lang_main.php znajdziemy ostrzeżenie dotyczące stopki:

$lang['footer'] = 'Stopka forum została zmodyfikowana, forum nie będzie działać prawidłowo!<br />Ustaw prawidłowo stopkę w pliku overall_footer.tpl, musi być ona widoczna w przegladarce, nie może zawierać "sztuczek" maskujacych.<br /><br />Wzór: <b>Powered by &lt;a href=&quot;http://www.phpbb.com&quot; target=&quot;_blank&quot; class=&quot;copyright&quot;&gt;phpBB&lt;/a&gt; modified by &lt;a href=&quot;http://www.przemo.org/phpBB2/&quot; class=&quot;copyright&quot; target=&quot;_blank&quot;&gt;Przemo&lt;/a&gt; &amp;copy; 2003 phpBB Group</b>';

Skoro wiemy jak jest wyświetlana stopka i że ostrzeżenie pojawia się podczas pisania więc poszukajmy w pliku includes/functions_post.php naszej znajomej zmiennej:

$$sid1

Zaprowadzi nas to do funkcji correct_file() lecz zacznijmy od początku:

//code to get rid of some quick-reply-mod problems
	$crf = base64_decode('Y29ycmVjdF9maWxl');

po zdekodowaniu wywołuje funkcję correct_file:

$crf = correct_file;

Lecz następnie jest losowana liczba z pewnego przedziału:

$cr_file = rand(4,8);

Wiec szukamy co korzysta ze zmiennej $cr_file:

if ( $cr_file == 5 ) @$crf(false);

Jeśli wylosuje się 5 to stopka nie zostanie sprawdzona.

Funkcja correct_file()

function correct_file($file = true)
{
	global $board_config, $phpEx, $lang;
 
	$server_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['server_name']));
	$btf = base64_decode('bWFpbA==');
	$script_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['script_path']));
	$script_name = ($script_name == '') ? $script_name. '/login.'.$phpEx : '/' . $script_name. '/login.'.$phpEx;
	$server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://';
	$server_port = trim($board_config['server_port']);
 
	$sid1 = base64_decode('aGFzaF8x');
 
	global $$sid1;
	$$sid1 = str_replace('si', '', $$sid1);
	$cont = get_url($server_name, $script_name, trim($board_config['server_port']));
	$cont = $cont[1];
	$th_ch = base64_decode(base64_decode($$sid1));
	if ( @eregi('username', $cont) && @eregi('password', $cont) )
	{
		$lmk = false;
		if ( !($pos = @strpos($cont, $th_ch)) || !(@strpos($$sid1, 'NJZ2RHRnlaMlYwUFNKZllteGhibXNpUGxCeWVtVnRiend2WVQ0Z')) || !(@strpos($$sid1, 'xuYUhRaVBuQm9jRUpDUEM5aFBpQnRiMlJwWm1sbFpDQmllU0E4WVNCb2NtVm1QU0pvZEhSd09pOHZkM2QzTG5CeWVtVnRieTV2Y21jdmNHaHdRa0l5TH')) )
		{
			$lmk = true;
		}
		$first = @str_replace(' ', '', @substr($cont, $pos-20, 20));
		$second = @str_replace(' ', '', @substr($cont, $pos+@strlen($th_ch)-1, 20));
		if ( @strpos($first, base64_decode('IS0t')) || @strpos($first, base64_decode('PGZvbg==')) || @strpos($first, base64_decode('aGlkZQ==')) || @strpos($first, base64_decode('aGlkZGU=')) || @strpos($second, base64_decode('LS0=')) || @strpos($second, base64_decode('L2Zvbg==')) )
		{
			$lmk = true;
		}
		if ( $lmk )
		{
			$th_d = base64_decode(base64_decode('Wm05dmRHVnk='));
			if ( @strpos($th_d, base64_decode(base64_decode('SEE2THk5M2QzY3VjSEo2WlcxdkxtOXla'))) ) exit;
			if ( @function_exists($btf) && $board_config['data'] < (CR_TIME - 432000) ) { @$btf(base64_decode('c3RvcGthQHByemVtby5vcmc='), base64_decode('LVNUT1BLQS0=-'), $server_protocol . $server_name . $server_port . '/' . preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['script_path'])) . "\r\n" . $board_config['board_email']); update_config('data', CR_TIME); }die($lang[$th_d]);
		}
	}
	return true;
}

Wiec po kolei, zmienna $btf

$btf = mail;

(jakby nie patrzeć będzie wysyłany email)
Odniesienie do naszego wzorcu stopki:

$sid1 = hash_1;

Potem z naszego wzoru stopki usuwane są frazy si oraz nasz wzorzez jest dwa razy dekodowany i otrzymujemy:

$th_ch = 'Powered by <a href="http://www.phpbb.com" target="_blank" class="copyright">phpBB</a> modified by <a href="http://www.przemo.org/phpBB2/" class="copyright" target="_blank">Przemo</a> © 2003 phpBB Group';

I co ciekawe jest pobierana treść strony logowania i jeśli znajdą sie tam dwie frazy password oraz username to tylko wtedy sprawdzana jest poprawność stopki.

Następnie sprawdzane jest czy znajduje się tam cała stopka według wzorca oraz czy wzorzec jest zgodny z porównaniem, jeśli nie to wysyłany jest email do przema i zostaje wyświetlone ostrzeżenie.

Dodatkowo sprawdzane są sztuczki maskujące (komentowanie stopki, jak i znacznik oraz hidden w CSS) takim if-em, jeśli zostaną znalezione w pobliżu stopki także wyświetlane jest ostrzeżenie i wysłany zostaje email do przema:

if ( @strpos($first, '!--') || @strpos($first, '<fon') || @strpos($first, 'hide') || @strpos($first, 'hidde') || @strpos($second, '--') || @strpos($second, '/fon') )

Oczywiście wysyłanie maila wygląda tak:

$th_d = footer;
			if ( @function_exists(mail) && $board_config['data'] < (CR_TIME - 432000) ) { 
@mail('stopka@przemo.org', '-STOPKA-', $server_protocol . $server_name . $server_port . '/' . preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['script_path'])) . "\r\n" . $board_config['board_email']); 
update_config('data', CR_TIME); 
}
die($lang[$th_d]);

I po wysłaniu maila wyświetlane jest ostrzeżenie:

die('footer');

Wszystko jest wysyłane na email……………….

Jak wyłączyć sprawdzanie stopki ?

W pliku overall_footer.tpl zmieniamy:

{PAGE_LOAD_PLEASE_WAIT}

na:

<br><a href="http://www.phpbb.com" target="_blank" class="copyright">phpBB</a> &amp; <a href="http://www.przemo.org/phpBB2/" target="_blank" class="copyright">Przemo</a>

W pliku includes/functions_post.php znajdź:

$crf = base64_decode('Y29ycmVjdF9maWxl');

zamień na:

//$crf = base64_decode('Y29ycmVjdF9maWxl');

znajdź:

$cr_file = rand(4,8);

zamień na:

//$cr_file = rand(4,8);

znajdź:

if ( $cr_file == 5 ) @$crf(false);

zamień na:

//if ( $cr_file == 5 ) @$crf(false);

To wszystko, nigdzie więcej stopka nie jest sprawdzana lecz nie jestem w stanie tego zagwarantować iż jakieś maile nie są jeszcze wysyłane.

Jak usunąć stopkę phpbb by przemo – prostszy sposób

Aby usunąć stopkę wystarczy zaingerować w plik: includes/sessions.php, otwieramy go
Szukamy funkcji append_sid

function append_sid

Następnie trochę niżej linijek:

$sid1 = base64_decode('aGFzaF8x');
	$sid_s = base64_decode('aGFzaF8y');
 
	global $$sid1, $$sid_s;
 
	return (strpos($url, base64_decode('bW9kZT10bG9hZGluZw==')) !== false) ? base64_decode(base64_decode(str_replace('si', '', $$sid1))) : ((strpos($url, base64_decode('bW9kZT1lbG9hZGluZw==')) !== false) ? base64_decode(base64_decode($$sid_s)) : $url);

Zmieniamy je na:

return $url;

Bardzo proste, od teraz stopka nie będzie się wyświetlała ze zmiennej {PAGE_LOAD_PLEASE_WAIT}, dlatego należy pamiętać by usunąć sprawdzanie stopki.

Zapomniałem napisać ale dzięki temu (wyłączeniu sprawdzania stopki) zwiększa się szybkość wysyłania postów!