<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jedrzej Schmeidel (aka Yunnan) &#187; Pomoce</title>
	<atom:link href="http://www.yunnan.tk/category/pomoce/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yunnan.tk</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 09 Jan 2012 22:52:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Telefon Philips VP5500 VP6500</title>
		<link>http://www.yunnan.tk/pomoce/komorki/telefon-philips-vp5500-vp6500/</link>
		<comments>http://www.yunnan.tk/pomoce/komorki/telefon-philips-vp5500-vp6500/#comments</comments>
		<pubDate>Thu, 25 Nov 2010 14:42:45 +0000</pubDate>
		<dc:creator>Yunnan</dc:creator>
				<category><![CDATA[Komórki]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.yunnan.tk/?p=476</guid>
		<description><![CDATA[Telefon SIP Philips VP6500 Ostatnio zaopatrzylem sie w bardzo obiecujacy telefon WiFi SIP &#8211; Philips VP6500. W skrocie specyfikacje wygladaja tak: WiFi (czyli WLAN) SIP &#8211; VoiceOverIP Kamerka do VideoOverIP a w srodku jest jakis linux Dlaczego te telefony sa zablokowane ? Dostalem telefon, ale tak jak sie spodziewalem jest on zablokowany na Holenderska siec [...]]]></description>
			<content:encoded><![CDATA[<h2>Telefon SIP Philips VP6500</h2>
<p>Ostatnio zaopatrzylem sie w bardzo obiecujacy telefon WiFi SIP &#8211; Philips VP6500.<br />
W skrocie specyfikacje wygladaja tak:</p>
<ul>
<li> WiFi (czyli WLAN)</li>
<li> SIP &#8211; VoiceOverIP</li>
<li> Kamerka do VideoOverIP</li>
<li> a w srodku jest jakis linux <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<h2>Dlaczego te telefony sa zablokowane ?</h2>
<p>Dostalem telefon, ale tak jak sie spodziewalem jest on zablokowany na Holenderska siec SIP &#8211; KPN, ktora to juz nie istnieje. Chyba im ten biznes z wideotelefonia nie wyszedl.<br />
Tak czy owak, zamowili oni dosc spora ilosc brandowanych wideotelefonow od Philipsa, ktore sa bardzo porzadnie i przemyslanie zrobione. Zarowno wykonanie jest bardzo sympatyczne, oraz oprogramowanie to linux.<br />
Po tym jak firma KPN wycofala (lub upadla) z tego biznesu, pozostaly wielkie ilosci telefonow Philipsa, ktore zostaly sprzedane po kosztach (mozna bylo je dostac za 10-20EUR).</p>
<h2>Co z ta blokada ?</h2>
<p>Jako ze tych telefonow byla/jest duza ilosc, a ich specyfikacje sa niczego sobie, glupio byloby zeby sie zmarnowaly. Rozni ludzie zaczeli sie zabierac za odblokowanie oprogramowania, zeby umozliwic korzystanie z dowolnych sieci. Calkiem mozliwe ze fakt ze jest to na linuxie, uproscilo sprawe.</p>
<p>Metod i stronek o odblokowywaniu jest 1500. Ja korzystalem z tej stronki<a href="http://spritesmods.com/?art=vpx500&amp;page=3"></a></p>
<p style="text-align: center;"><strong><a href="http://spritesmods.com/?art=vpx500&amp;page=3">http://spritesmods.com/?art=vpx500&amp;page=3</a></strong></p>
<p>Odblokowanie wg tej instrukcji trwa ok 15 minut, wymaga konfigurowalnego routera i podstawowej wiedzy komputerowej. Cala robote z rozgryzaniem oprogramowania jak rowniez utworzenie odpowiedniego wirtualnego DNSa i serwerka do update oprogramowania wykonal czlowiek ktory napisal powyzsza instrukcje w oryginale. Jesli ktos bedzie bardzo zadowolony z tego rozwiazania, moze autorowi rzucic pare groszy na PayPala (z prawej strony jest link <strong>Tip Jar</strong>). Juz widzialem ze na Allegro odblokowywanie tych telefonow jest po 35zl <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Ja mam zwykle lacze ADSL z routerem. W kazdym przypadku posiadania sieci ADSL, kablowki itp, zwykle wymagany jest router do dzielenia lacza, szczegolnie w przypadku korzystania z WiFi. Dobrze jesli router nie jest brandowany (czyli nie jest to skrzynka telekomuny itp), bo moze nie miec opcji ustawiania DNS.</p>
<ul>
<li>TELEFON VP6500 MUSI MIEC BATERIE ZALADOWANA DO PELNA</li>
<li>Skonfigurowac VP6500 do korzystania z lokalnej sieci WiFi</li>
<li>Wylaczyc VP6500</li>
<li>Ustawic w routerze internetowym recznie DNS na <strong>188.40.123.50</strong></li>
<li>Siec dla innych urzadzen/komputerow przestanie dzialac &#8211; bo DNSy beda nie &#8222;poprawne&#8221;</li>
<li>Wlaczyc VP6500</li>
<li>Zaczekac ~10 minut, w tym czasie telefon bedzie zmienial godzine i costam sciagal, az w koncu sam sie zresetuje</li>
<li>Jesli tak sie stanie, to aktualizacja sie juz udala, a w menu pojawi sie wiele nowych opcji</li>
<li>Po ukonczeniu tej procedury nalezy znowu ustawic DNS w routerze na automatyczny, albo na taki jaki byl ustawiony</li>
</ul>
<p>W jednym z nowych menu, bedzie mozna bezproblemowo skonfigurowac dowolne konto SIP. Procedura odblokowuje telefon na zawsze ! Po odblokowaniu nie trzeba juz nic kombinowac, wystarczy tylko korzystac.</p>
<h2>Ocena VP6500</h2>
<p>Telefon po odblokowaniu dziala dobrze. Nie jest to najnowszy sprzet, wiec moze byc nieco powolny, ale ma pelna funkcjonalnosc. Jest ladny (jakby dla kogos to bylo wazne) i solidnie wykonany. Niestety nie mialem mozliwosci przetestowac rozmowy video, bo mam tylko jeden taki telefon i moj serwer SIP nie obsluguje rozmow wideo.</p>
<h2>Problemy</h2>
<p>Jesli nie wiesz czy twoj DNS sie przestawil, korzystajac z innego komputera w tej sieci wejdz na dowolna strone (np google). Ta strona NIE powinna dzialac.<br />
Potem, sprobuj wejsc na strone http://vpcm-001.cust.kpn.net/ lub http://vpcm-001.cust.kpn.net/philips/VP6500/, ta strona powinna wyswietlic jakas informacje.<br />
Zwroc uwage ze przy normalnie skonfigurowanym DNSie, strona http://vpcm-001.cust.kpn.net/ nie jest dostepna.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yunnan.tk/pomoce/komorki/telefon-philips-vp5500-vp6500/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>mBank skrypt v3</title>
		<link>http://www.yunnan.tk/pomoce/programowanie/mbank-skrypt-v3/</link>
		<comments>http://www.yunnan.tk/pomoce/programowanie/mbank-skrypt-v3/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 21:03:30 +0000</pubDate>
		<dc:creator>Yunnan</dc:creator>
				<category><![CDATA[Programowanie]]></category>

		<guid isPermaLink="false">http://www.yunnan.tk/?p=431</guid>
		<description><![CDATA[Po ukończeniu skryptu do wyciągu z konta mBank w wersji 3, zdecydowałem się założyć nowy wpis, żeby uporządkować sprawy. mBank auto skrypt v3.0.0 v3.0.1 v3.0.3 v3.0.4 v3.0.5 v3.0.6 v3.0.8 Główna różnica to rozdzielenie skryptu na 4 pliki: plik README z instrukcją itp plik konfiguracyjny plik z funkcjami główny plik wykonywalny Readme to każdy wie co [...]]]></description>
			<content:encoded><![CDATA[<p>Po ukończeniu skryptu do wyciągu z konta mBank w wersji 3, zdecydowałem się założyć nowy wpis, żeby uporządkować sprawy.</p>
<h2>mBank auto skrypt <del datetime="2010-03-10T21:36:44+00:00">v3.0.0</del> <span style="text-decoration: line-through;">v3.0.1 v3.0.3 v3.0.4 v3.0.5 v3.0.6</span> v3.0.8</h2>
<p>Główna różnica to rozdzielenie skryptu na 4 pliki:</p>
<ul>
<li>plik README z instrukcją itp</li>
<li>plik konfiguracyjny</li>
<li>plik z funkcjami</li>
<li>główny plik wykonywalny</li>
</ul>
<p>Readme to każdy wie co tam jest.<br />
Plik konfiguracyjny ma być o tyle korzystnym rozwiązaniem, że przy updacie pozostałych plików, plik z konfiguracją może pozostać nieruszony.<br />
Plik z funkcjami, to będzie prawdopodobnie najczęściej aktualizowany plik.<br />
Plik główny wykonywalny, łączy pozostałe pliki do kupy, oraz zawiera wygląd danych wyjściowych. To właśnie w pliku głównym należy podłączyć skrypt np do bazy danych.</p>
<p>Będę się starał żeby zarówno plik konfiguracyjny, jak i zmienne wychodzące z funkcji były zawsze takie same. Przez to przy nawet przy zintegrowaniu skryptu z czymś innym, aktualizacja powinna być bezproblemowa.</p>
<h2>Aktualne pliki skryptu</h2>
<p>Aktualizacja v3.0.3 dotyczy dwóch plików: mbank_auto_skrypt i mbank_auto_skrypt.func.<br />
Aktualizacja v3.0.4 dotyczy pliku: mbank_auto_skrypt.func.<br />
Aktualizacja v3.0.5 dotyczy pliku: mbank_auto_skrypt.func i mbank_auto_skrypt.README.<br />
Aktualizacja v3.0.6 dotyczy pliku: mbank_auto_skrypt.func i mbank_auto_skrypt.README.<br />
Aktualizacja v3.0.8 dotyczy pliku: zasadniczo wszystkich, ale teoretycznie konfig moze zostac jesli sie go odpowiednio poprawi.<br />
<a href="http://www.yunnan.tk/wp-content/files/skrypty/mbank_auto_skrypt_v308/mbank_auto_skrypt.README">mbank_auto_skrypt_v308/mbank_auto_skrypt.README</a><br />
<a href="http://www.yunnan.tk/wp-content/files/skrypty/mbank_auto_skrypt_v308/mbank_auto_skrypt.conf">mbank_auto_skrypt_v308/mbank_auto_skrypt.conf</a><br />
<a href="http://www.yunnan.tk/wp-content/files/skrypty/mbank_auto_skrypt_v308/mbank_auto_skrypt.func">mbank_auto_skrypt_v308/mbank_auto_skrypt.func</a><br />
<a href="http://www.yunnan.tk/wp-content/files/skrypty/mbank_auto_skrypt_v308/mbank_auto_skrypt">mbank_auto_skrypt_v308/mbank_auto_skrypt</a></p>
<h2>Kod źródłowy skryptu</h2>
<p>http://www.yunnan.tk/wp-content/files/skrypty/mbank_auto_skrypt_v308/mbank_auto_skrypt.README</p>
<pre class="code">#-#############################################
# mBank_auto_skrypt v3.0.8
# Made by Jedrzej Schmeidel (Yunnan)
# on 2009/02
# www.yunnan.tk
# yunnan@yunnan.tk
#-#############################################

#-## LICENCJA
# Creative Commons License - Attribution, Share Alike
# http://creativecommons.org/licenses/by-sa/2.5/pl/
# WOLNO: Kopiowac, rozpowszechniac, odtwarzac i wykonywac utwor.
# WOLNO: Tworzyc utwory zalezne.
# WARUNEK: Uznanie autorstwa.
# WARUNEK: Na tych samych warunkach.

#-## OPIS
# Skrypt do zautomatyzowanego uzyskiwania wyciagu
# z kont mBanku.
# Bardzo przydatny do integracji z programami ksiegowymi itp.
# Przy odpowiednich zmianach moze wysylac mejle, albo zapisywac
# transakcje w bazie danych.
# SKRYPT WYSWIETLA transakcje przychodzace i wychodzace
# SKRYPT WYSWIETLA oplatydodatkowe (prowadzenie konta, przelew, oplaty za przelewy, stale zlecenia, podatek od odsetek itp)

#-## HISTORIA
# v0.1 dziala
# v0.2 zakodowane hasla base64
#      nie daja calkowitego bezpieczenstwa !
#      zabezpieczaja jedynie przy przegladaniu kodu
# v0.3 listowanie kont
# v0.4 listowanie transakcji dla kazdego konta
# v1.0 oczyszczenie kodu, definicje
# v1.1 mozliwosc wybrania pojedynczego konta do listowania
# v1.1 uzyskiwanie numeru transakcji
# v1.2 opisy i instrukcje
# v1.3 wybor rodzaju transakcji po numerze typu, mozliwosc wielokrotnego wyboru (regexp)
# v1.4 wybor konta, mozliwosc wielokrotnego wyboru (regexp), wiecej pol transakcji
# v1.5 usuwanie wielokrotnych spacji, oczyszczanie stringow, czytelniejsze domyslne wyswietlanie
# v1.6 przechwytywanie bledow
# v1.6.1 argument read byl za maly i nie wszystkie konta sie odczytywaly
# v1.6.2 poprawki instrukcji i opisu
# v1.6.3 dodatkowe opisy transakcji
# v1.6.4 wyswietlanie w "prawdziwym" utf8
# v2.0.0 wersja dostosowana do nowego interfejsu mBanku
# UWAGA: Tylko funkcje get_konta i get_trans zostaly zmienione i tylko je nalezy zaktualizowac
# czyli jesli ktos uzywa tego skryptu jako modulu, wystarczy ze zamieni te dwie fukcje, a output
# jest identyczny (komorki sa numerowane tak samo i sposob wyswietlania jest taki sam)
# v2.0.1 drobny blad przy logowaniu (dziwna niepotrzebna komorka None=)
# v2.0.2 get_konta: zmienna nr 3 to "saldo" konta, dodano zmienna 5, czyli "dostepne srodki"
# v2.0.3 zmiana wyswietlania, obok salda dodano walute oraz w nawiasie wyswietlane sa "dostepne srodki"
# UWAGA: dostepne srodki zawieraja zablokowane srodki (wykonane ale nie zaksiegowane transakcje) oraz odnawialne kredyty
# v2.0.4 skrypt akceptuje ujemny stan konta
# v2.0.5 mBankowcy znowu cos zmieniali, musialem przepisac regexpy
# UWAGA: numeryczny kod transakcji nie jest juz podawany przez mBank, tak wiec filtrowanie po tym numerze nie dziala !
# UWAGA: tylko funkcje sz_konto, sz_trans1, sz_trans2 i sz_trans3 sie zmienily !!! wystarczy je podstawic
# v2.1.0 znowu mozna wybierac rodzaje operacji, teraz przebiega to przez system mbanku uzywajac ich trzyliterowych kodow
#        mozna wybierac dowolny okres do wyswietlenia wstecz
#        wybieranie przedzialu bedzie w nastepnej wersji <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
# v2.1.1 dodane pauzy na czekanie na odpowiedz
#        sa podejrzenia ze za szybkie zapytania do serwera byly powodem sporadycznych timeoutow
# v2.1.2 drobne poprawki, optymalizacja sleepow, chyba bylo ich za duzo <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
# v2.2.0 sciaganie calej listy transakcji, nawet jak jest na paru stronach
# v3.0.0 podzial na plik glowny, funkcje i plik konfiguracyjny
# v3.0.1 usprawnienie includowania pozostalych plikow
# v3.0.2 Pawel Maziarz - poprawka pozwalajaca uruchamianie skryptu z dowolnego katalogu
# v3.0.3 mbank znowu musial cos zmienic... poprawione <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
# v3.0.4 chyba jakas drobnostka, bo nie pamietam co poprawilem <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />
# v3.0.? mbank tak szybko zmienil kod html (usuniecie informacji o transakcji),
#        a potem przywrocil spowrotem stary, ze nie zdazylem zareagowac <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />
# v3.0.5 skrypt nie wyswietlal kont z cyframi w nazwie - poprawione
#        drobne oczyszczenie kodu
# v3.0.6
# v3.0.7 mbank zmienil troche nazwy w selektorze operacji, tak wiec plik konfiguracji i func sie troszke zmienil
# v3.0.8 wpisanie kodowania utf-8 do wszystkich plikow uruchamialnych, bo python zaczal narzekac
#        pewnie nie dotyczy to nikogo oprocz mnie, bo nie kazdy jedzie na debianie experimental <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> 

#-## AKTUALNE WERSJE
# zeby zachowac porzadek i wyjasnic ktore pliki nalezy zaktualizowac, zrobilem liste aktualnych wersji plikow
# posiadajac wymieniona wersje pliku, nie trzeba go aktualizowac
# mbank_auto_skrypt           v3.0.8 Nowy
# mbank_auto_skrypt.README    v3.0.8 Nowy
# mbank_auto_skrypt.conf      v3.0.8 Nowy
# mbank_auto_skrypt.func      v3.0.8 Nowy

#-## TODO
# wykrywanie kredytu gotowkowego
# wypisywanie operacji karta, ktore sa wykonane, ale jeszcze nie zaksiegowanie na koncie
# wypisywanie inwestycji
# wypisywanie lokat

#-## Instalacja i uruchomienie
# - program wymaga Python i Python-Mechanize
#   (w debianie to paczki "python" i "python-mechanize")
# - plik skryptu wgrac do dowolnego katalogu
# - z powodow bezpieczenstwa katalogowi i skryptowi nadac prawa odczytu tylko dla wlasciciela
# - podac uzytkownika i haslo do mbanku, z powodow bezpieczenstwa jest zakodowane base64
#   UWAGA: podajac prawdziwy login, nalezy podawac prawdziwe haslo !!!
#   3 bledne logowania powoduja zablokowanie dostepu do konta !!! Trzeba potem odblokowywac przez telefon <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
# - mozna ustawic zmienna "wybrane" na jedno z kont ktore ma byc monitorowane, np:
#   wybor_konto = '(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)'
#   jesli zmienna jest '(.*)', skrypt wyswietla wszystkie konta tego uzytkownika, np:
#   wybor_konto = '(.*)'
#   zwykle wyrazenie regularne
# - mozna wybrac tylko okreslone transakcje do wyswietlenia
#####
### Selektory operacji
# ALL000000 Wszystkie
# ABO000000 Uznania rachunku
# CAR000000 Obci??enia rachunku
# TRI111000 Przelewy przychodz?ce
# TRO111000 Przelewy wychodz?ce
# TUS111000 Przelewy podatkowe
# TRZ101000 Przelewy do ZUS
# LDS100000 Operacje kartowe
# CRE100000 Operacje na kredycie
# CAI100000 Wp?aty gotówkowe
# CAO100000 Wyp?aty gotówkowe
# INT000000 Kapitalizacja odsetek
# COM100000 Prowizje i op?aty
# TDI111000 Przelew z/na r-ek brokerski
#####
# - jak zakodowac haslo i uzytkownika base64 ?
#   mozna uzyc dowolnego base64 calculator z googli
#   albo ponizszej funkcji pythona
#print 'nasze_haslo'.encode('base64')

#-## Integracja i edycja
# - program zostal napisany w Linuxie, tak wiec mozna go dowolnie zintegrowac w Linuxie
# - aby uruchomic program w Windowsie potrzebny jest Python do windowsa z pakietem Mechanize
#   ODRADZAM uzywania go na Windowsie, z powodu latwego dostepu do wszystkich plikow i zapisanych w nich hasel
#   nalezy posiadac zaufany komputer, najlepiej tylko z jednym (wlasnym) kontem uzytkownika
# - funkcje podaja tablice z numerami kont oraz odpowiednio wyciag z konta
#   tablica moze byc w dowolny sposob przetworzona i wyswietlona, wyslana mejlem, lub zapisana do bazy
#   python w prosty sposob oferuje te wszystkie mozliwosci
# - skrypt mozna bez problemu uruchamiac cronem
# - pola danych sa wziete bezposrednio ze strony, tak wiec ich kolejnosc jest podobna jak na stronie
#   tabela z informacjami o koncie ma 6 pol
#   0 - zmienna POST, niezbedna do uzyskania wyciagu, raczej nieczytelna <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />
#   1 - nazwa konta
#   2 - numer konta
#   3 - saldo
#   4 - waluta
#   5 - dostepne srodki
#   tabela z informacjami o transakcji ma 11 pol
#   0 - data wydania polecenia transakcji
#   1 - data wykonania polecenia transakcji
#   2 - wewnetrzny systemowy numer transakcji, transakcje numerowane kolejno
#   3 - numer oznaczajacy rodzaj transakcji (opisane ponizej) - NIEAKTUALNE ! NUMERYCZNY TYP TRANSAKCJI NIE JEST JUZ PODAWANY PRZEZ MBANK
#   4 - slownie rodzaj transakcji
#   5 - druga strona bioraca udzial w transakcji
#   6 - numer konta drugiej strony bioracej udzial w transakcji (w niektorych przypadkach pusty)
#   7 - tytul przelewu/transakcji
#   8 - kwota transakcji
#   9 - saldo po transakcji
#   10- waluta transakcji

#-## Bezpieczenstwo i gwarancje
# Uzywanie na wlasna odpowiedzialnosc !!! Uzywajac programu zgadzasz sie na to ze nie
# ponosze odpowiedzialnosci za za zadne szkody ktore moga powstac uzywajac tego skryptu.
# Gwarantuje jednak ze moj oryginalny kod nie zawiera zadnych spyware, zadnych metod
# podgladania i przechwytywania czulych danych. Mozna to oczywiscie zobaczyc przegladajac
# krociutki kod.
# Aby zwiekszyc bezpieczenstwo, niektore pola i zmienne sa zakodowane base64. To uniemozliwia
# bezposrednie odczytanie lub znalezienie hasel w pliku.
</pre>
<p>http://www.yunnan.tk/wp-content/files/skrypty/mbank_auto_skrypt_v308/mbank_auto_skrypt.conf</p>
<pre class="code">#!/usr/bin/python
# coding: utf-8
#-#############################################
# KONFIGURACJA
# mBank_auto_skrypt v3.0.8
#-#############################################
#user zakodowany base64
Y3VzdG9tZXI = ''
#haslo zakodowane base64
cGFzc3dvcmQ = ''
#-#############################################
# wybrane konta
# aby wyswietlic wszystkie konta (.*), aby wyswietlic wybrane (xxx|xxx) znak | to znak OR
#wybor_konto = '(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)'
wybor_konto = '(.*)'
#-#############################################
# kryteria wyswietlania operacji
# wybor_typ => rodzaje operacji opisane na koncu pliku i w readme
wybor_typ = 'ALL000000'
# wybor_period => okres - D dzien, W tydzien, M miesiac
# wybor_numer => liczba dni, miesiecy, tygodni, czyli np wybor_numer 1 i wybor_period M to jeden miesiac
wybor_period = 'W'
wybor_numer = '4'
#-#############################################
# nie zaimplementowane
#rangepanel_group=[daterange_radio, *lastdays_radio, lastlogin_radio])>
#wybor_data_od = '20091101'
#wybor_data_do = '20091203'
################
### Selektory operacji
# ALL000000 Wszystkie
# ABO000000 Uznania rachunku
# CAR000000 Obci??enia rachunku
# TRI111000 Przelewy przychodz?ce
# TRO111000 Przelewy wychodz?ce
# TUS111000 Przelewy podatkowe
# TRZ101000 Przelewy do ZUS
# LDS100000 Operacje kartowe
# CRE100000 Operacje na kredycie
# CAI100000 Wp?aty gotówkowe
# CAO100000 Wyp?aty gotówkowe
# INT000000 Kapitalizacja odsetek
# COM100000 Prowizje i op?aty
# TDI111000 Przelew z/na r-ek brokerski
###</pre>
<p>http://www.yunnan.tk/wp-content/files/skrypty/mbank_auto_skrypt_v308/mbank_auto_skrypt.func</p>
<pre class="code">#!/usr/bin/python
# coding: utf-8
#-#############################################
# FUNKCJE
# mBank_auto_skrypt v3.0.8
#-#############################################
def strip_space(value): 	#oczyszczanie ze spacji
    return re.sub(r'\ ', '', value)

def strip_dspace(value):	#usuwanie podwojnych niepotrzebnych spacji z tekstu
    return re.sub(r'\ [\ ]+', ' ', value)

def get_konta(br, value='(.*)'):
    #global wybor_period
    #time.sleep(1)
    response_get = br.open("https://www.mbank.com.pl/accounts_list.aspx") # otwarcie listy kont
    # response_get.seek(5000)
    strona = response_get.read().decode('iso8859-2')
    strona = re.sub(r'&lt;li>|&lt;/li>', '\n', strona)
    # magiczny regexp 2010.09, poprawiony dla kont z cyframi z nazwie rachunku
    sz_konto = re.compile('\'/account_details.aspx\',\'\',\'POST\',\'[^&lt;]+href="#">([^&lt;]+)\ ([0-9\ ]{28}[0-9]{4})&lt;/a>.*\'/account_oper_list.aspx\',\'\',\'POST\',\'([^\']+)\'[^&lt;]+href="#">([0-9-,\ ]+)\ ([A-Z]{3})&lt;/a>&lt;/p>&lt;p class="Amount">.*">([0-9-,\ ]+)\ [A-Z]{3}&lt;/span>&lt;/p>')

    r_konta = []
    for konto_temp in list(sz_konto.findall(strona)):
	konto_temp = list(konto_temp)
	# odwracanie zmiennych, zeby zachowac kolejnosc
	temp = konto_temp[2]
	konto_temp[2] = konto_temp[1]
	konto_temp[1] = konto_temp[0]
	konto_temp[0] = temp
	#
	konto_temp[2] = strip_space(konto_temp[2])
	konto_temp[3] = strip_space(konto_temp[3])
	konto_temp[5] = strip_space(konto_temp[5])
	if re.match(value, str(konto_temp[2])):
	    r_konta.append(konto_temp)
    return r_konta

def get_trans(br, value='', valuea='ALL000000'):
    global wybor_period
    #time.sleep(1)
    br.open("https://www.mbank.com.pl/accounts_list.aspx") # powrot na liste kont
    # magiczny regexp
    sz_grep = re.compile('&lt;p class="Date">&lt;(.*\n)')
    # magiczny regexp po 2009.11
    sz_trans1 = re.compile('_0_0">([0-9-]+)&lt;/span>&lt;span[^&lt;]+_0_1">([0-9-]+)&lt;/span>&lt;.*MCheckBox_[0-9]+_1_([0-9]+)" />().*href="#">([^&lt;]+)&lt;/a>&lt;span>([^&lt;]+)&lt;/span>&lt;span>([^&lt;]+)&lt;/span>&lt;span>([^&lt;]+)&lt;/span>.*">([0-9-\ ,]+)\ [A-Z]+&lt;/span>&lt;/p>.*">([0-9-\ ,]+)\ ([A-Z]+)&lt;/span>&lt;/p>\n')
    sz_trans2 = re.compile('_0_0">([0-9-]+)&lt;/span>&lt;span[^&lt;]+_0_1">([0-9-]+)&lt;/span>&lt;.*MCheckBox_[0-9]+_1_([0-9]+)" />().*href="#">([^&lt;]+)&lt;/a>&lt;span>([^&lt;]+)&lt;/span>&lt;span>([^&lt;]+)&lt;/span>()&lt;/p>&lt;p.*">([0-9-\ ,]+)\ [A-Z]+&lt;/span>.*">([0-9-\ ,]+)\ ([A-Z]+)&lt;/span>&lt;/p>\n')
    sz_trans3 = re.compile('_0_0">([0-9-]+)&lt;/span>&lt;span[^&lt;]+_0_1">([0-9-]+)&lt;/span>&lt;.*MCheckBox_[0-9]+_1_([0-9]+)" />().*href="#">([^&lt;]+)&lt;/a>&lt;span>([^&lt;]+)&lt;/span>()()&lt;/p>&lt;p.*">([0-9-\ ,]+)\ [A-Z]+&lt;/span>.*">([0-9-\ ,]+)\ ([A-Z]+)&lt;/span>&lt;/p>\n')
    # magiczny regexp po 2010.12
    sz_next = re.compile('button\ id="PrevPage"\ onclick="doSubmit\(\'/account_oper_list.aspx\',\'\',\'POST\',\'(.*)\',true,false,true,null\);return false"\ class="button">Poprzednie')

    # przejscie do konta
    submit = []
    for form in br.forms():
        for forma in form.controls:
    	    submit.append((forma.name, forma.value))
    submit[0] = ('__PARAMETERS', value)
    none = None, ''
    while submit.count(none)>0:
	submit.remove(none)
    submitstr = urlencode(submit) # zbieranie danych do POST
    br.open("https://www.mbank.com.pl/account_oper_list.aspx", submitstr)

    # strona z kontem, teraz istnieje mozliwosc filtrowania operacji
    br.select_form(name="MainForm")

#    br["daterange_from_day"] = '21'
#    br["daterange_from_month"] = '11'
#    br["daterange_from_year"] = '2009'
#    br["daterange_to_day"] = '5'
#    br["daterange_to_month"] = '12'
#    br["daterange_to_year"] = '2009'

    br["lastdays_period"] = [str(wybor_period)]
    br["lastdays_days"] = str(wybor_numer)
    br["accoperlist_typefilter_group"] = [str(wybor_typ)]

    response_get = br.submit()

    # zbieranie danych do klikniecia guzika Poprzednie operacje
    strona = ''
    stronatmp = response_get.read()

    while sz_next.findall(stronatmp).__len__() == 1:
	strona = strona+stronatmp
        submit = []
        for form in br.forms():
            for forma in form.controls:
        	submit.append((forma.name, forma.value))
        trans_next = sz_next.findall(stronatmp)
        submit.pop(0) # bezpieczniejsze jest remove (('__PARAMETERS', '')) ale wtedy potrzeba try
        submit[0] = ('__PARAMETERS', trans_next) # niby trans_next[0] bedzie poprawniej, ale tak tez dziala <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />
        while submit.count(none)>0:
	    submit.remove(none)
        submitstr = urlencode(submit) # zbieranie danych do POST
        submitstr = re.sub(r'\%5B|\%5D|\%27|\&#038;account[^=]+=', '', submitstr)
        response_get = br.open("https://www.mbank.com.pl/account_oper_list.aspx?",submitstr)
	stronatmp = response_get.read()
    ###
    strona = strona+stronatmp
    strona = strona.decode('iso8859-2')

#    print strona
    strona = re.sub(r'\&shy;|&lt;wbr />', '', strona)
    strona = re.sub(r'&lt;/li>|&lt;li class="alternate">|&lt;li>', '\n', strona)

#    print strona
    r_trans = []
    for trans_html in sz_grep.findall(strona):
	trans_temp = sz_trans1.findall(strip_dspace(trans_html))
	if trans_temp.__len__() == 0:
	    trans_temp = sz_trans2.findall(trans_html)
	if trans_temp.__len__() == 0:
	    trans_temp = sz_trans3.findall(trans_html)
	if trans_temp.__len__() == 1: # and re.match(valuea, str(trans_temp[0][3])):
	    trans_temp = list(trans_temp[0])
	    trans_temp[8] = strip_space(trans_temp[8])
	    trans_temp[9] = strip_space(trans_temp[9])
	    r_trans.append(trans_temp)
	#if trans_temp.__len__() == 0:
	    #print "Rodzaj nieznany"+trans_html
#    print r_trans
    return r_trans
</pre>
<p>http://www.yunnan.tk/wp-content/files/skrypty/mbank_auto_skrypt_v308/mbank_auto_skrypt</p>
<pre class="code">#!/usr/bin/python
# coding: utf-8
#-#############################################
# mBank_auto_skrypt v3.0.8
# Made by Jedrzej Schmeidel (Yunnan)
# on 2009/02
# www.yunnan.tk
# yunnan@yunnan.tk
#-#############################################

import os
import time
import re
import sys
from mechanize import Browser
from urllib import urlencode
#from urllib2 import Request

#-#############################################
# KONFIGURACJA i FUNKCJE
#-#############################################

execfile(os.path.dirname(sys.argv[0]) + '/mbank_auto_skrypt.conf')
execfile(os.path.dirname(sys.argv[0]) + '/mbank_auto_skrypt.func')

#-########mBank#####################################
print "===> Uruchomienie wersja mBank_auto_skrypt v3.0.3"
br = Browser()	# uruchomienie przegladarki
# ewentualny debugging
#br.set_debug_redirects(True)
#br.set_debug_responses(True)
#br.set_debug_http(True)
br.open("https://www.mbank.com.pl/")
##################
# LOGOWANIE
#time.sleep(1)
br.select_form(name="MainForm") # wypelnienie formularza
try:
    br['Y3VzdG9tZXI='.decode('base64')] = Y3VzdG9tZXI.decode('base64')
    br['cGFzc3dvcmQ='.decode('base64')] = cGFzc3dvcmQ.decode('base64')
except:
    print "===> BLAD przy odszyfrowywaniu - ", sys.exc_info()[1]
    sys.exit()
#time.sleep(1)
response_in = br.submit() # wyslanie formularza
if response_in.geturl() == "https://www.mbank.com.pl/frames.aspx":
    print "===> Zalogowano poprawnie"
else:
    print "===> BLAD przy logowywaniu"
    sys.exit()
##################
# Wyswietlanie listy kont i wyciagow
# funkcja get_konta pobiera wszystkie konta i potrzebne dane do uzyskania wyciagu z konta
# jako opcje przyjmuje numer/numery konta bez spacji ktore maja zostac wyswietlone
# funkcja get_trans pobiera transakcje w ostatnich 14 dniach (domyslnie w mbanku)
# jako opcje przyjmuje zmienna post do uzyskania wyciagu oraz rodzaj transakcji do wyswietlenia
# (wg specjalnej numeracji mbanku)
##################
##################
konta = get_konta(br, wybor_konto)
print "===> Znalezione konta:",konta.__len__()
for konto in konta:
    print ("---> "+konto[2]+"  "+(konto[3]+"("+konto[5]+")"+konto[4]).rjust(15, ' ')+"  "+konto[1]).encode("utf8")
    trans = get_trans(br, konto[0], wybor_typ)
    for transa in trans:
#        print transa
        print ("  -> "+transa[2].ljust(4, ' ')+"  "+transa[0]+"  "+transa[3]+"  "+transa[6].ljust(32,' ')+"  "+transa[8].rjust(10,' ')+"  "+transa[7]).encode("utf8")
##################
##################
# WYLOGOWANIE
response_out = br.open("https://www.mbank.com.pl/logout.aspx")
response_out.seek(2000)
if response_out.read(6000).find('Poprawne wylogowanie z cz') > 0:
    print "===> Wylogowano poprawnie"
else:
    print "===> BLAD przy wylogowywaniu"
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.yunnan.tk/pomoce/programowanie/mbank-skrypt-v3/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>Porownanie cennikow (luty 2010)</title>
		<link>http://www.yunnan.tk/pomoce/voip/porownanie-cennikow-luty-2010/</link>
		<comments>http://www.yunnan.tk/pomoce/voip/porownanie-cennikow-luty-2010/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 00:31:15 +0000</pubDate>
		<dc:creator>Yunnan</dc:creator>
				<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.yunnan.tk/?p=422</guid>
		<description><![CDATA[Kolejne zestawienie cennikow VoIP. Jak zwykle istotnymi krajami beda Polska Niemcy Wielka Brytania Do porownania postaralem sie dorzucic paru popularniejszych operatorow: SkypeOut VoipDiscount (Betamax) SMSDiscount (Betamax) Nonoh (Betamax) Freeconet SkypeOut VoipDiscount SMSDiscount Nonoh Freeconet Polska (stacjonarne) 0,02 FREE lub 0,011 FREE lub 0,012 FREE lub 0,013 ~0,012 Polska (komorki) 0,23 0,075 0,065 0,065 ~0,08 Niemcy [...]]]></description>
			<content:encoded><![CDATA[<p>Kolejne zestawienie cennikow VoIP. Jak zwykle istotnymi krajami beda</p>
<ul>
<li>Polska</li>
<li>Niemcy</li>
<li>Wielka Brytania</li>
</ul>
<p>Do porownania postaralem sie dorzucic paru popularniejszych operatorow:</p>
<ul>
<li>SkypeOut</li>
<li>VoipDiscount (Betamax)</li>
<li>SMSDiscount (Betamax)</li>
<li>Nonoh (Betamax)</li>
<li>Freeconet</li>
</ul>
<table border="1">
<tbody>
<tr>
<th></th>
<th>SkypeOut</th>
<th>VoipDiscount</th>
<th>SMSDiscount</th>
<th>Nonoh</th>
<th>Freeconet</th>
</tr>
<tr>
<td>Polska (stacjonarne)</td>
<td><span style="color: #ff0000;">0,02</span></td>
<td><span style="color: #339966;">FREE</span> lub <span style="color: #339966;">0,011</span></td>
<td><span style="color: #339966;">FREE</span> lub <span style="color: #339966;">0,012</span></td>
<td><span style="color: #339966;">FREE</span> lub <span style="color: #339966;">0,013</span></td>
<td><span style="color: #ffcc00;">~0,012</span></td>
</tr>
<tr>
<td>Polska (komorki)</td>
<td><span style="color: #ff0000;">0,23</span></td>
<td><span style="color: #ffcc00;">0,075</span></td>
<td><span style="color: #339966;">0,065</span></td>
<td><span style="color: #339966;">0,065</span></td>
<td><span style="color: #ffcc00;">~0,08</span></td>
</tr>
<tr>
<td>Niemcy (stacjonarne)</td>
<td><span style="color: #ff0000;">0,02</span></td>
<td><span style="color: #339966;">FREE</span> lub <span style="color: #339966;">0,016</span></td>
<td><span style="color: #339966;">0,006</span></td>
<td><span style="color: #339966;">FREE</span> lub <span style="color: #339966;">0,019</span></td>
<td><span style="color: #339966;"><span style="color: #ff0000;">~0,02</span><br />
</span></td>
</tr>
<tr>
<td>Niemcy (komorki)</td>
<td><span style="color: #ff0000;">0,23</span></td>
<td><span style="color: #ffcc00;">0,183</span></td>
<td><span style="color: #ffcc00;">0,083</span></td>
<td><span style="color: #339966;">0,081</span></td>
<td><span style="color: #339966;"><span style="color: #ffcc00;">~0,13</span><br />
</span></td>
</tr>
<tr>
<td>Wielka Brytania (stacjonarne)</td>
<td><span style="color: #ff0000;">0,02</span></td>
<td><span style="color: #339966;">FREE</span> lub <span style="color: #339966;">0,011</span></td>
<td><span style="color: #339966;">0,006</span></td>
<td><span style="color: #339966;">FREE</span> lub <span style="color: #339966;">0,011</span></td>
<td><span style="color: #339966;"><span style="color: #ffcc00;">~0,01</span><br />
</span></td>
</tr>
<tr>
<td>Wielka Brytania (komorki)</td>
<td><span style="color: #ff0000;">0,236</span></td>
<td><span style="color: #ffcc00;">0,194</span></td>
<td><span style="color: #ffcc00;">0,089</span></td>
<td><span style="color: #339966;">0,065</span></td>
<td><span style="color: #339966;"><span style="color: #ffcc00;">~0,10</span><br />
</span></td>
</tr>
</tbody>
</table>
<p>Cennik Freeconet jest w PLN, zeby ulatwic porownanie przeliczylem ceny na EUR po kursie 4:1.</p>
<p>Skype pobiera dodatkowa oplate za ustanowienie polaczenia telefonicznego, wynosi ona 0,045 EUR dla wiekszosci krajow (0,091 EUR w szczegolnych przypadkach).</p>
<p>Produkty z Betamax maja wliczone darmowe minuty do wykorzystania na wiekszosc telefonow stacjonarnych (pisze przy nich FREE). VoipDiscount i SMSDiscount maja po 300 minut darmowych tygodniowo. Nonoh ma 200 minut darmowych tygodniowo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yunnan.tk/pomoce/voip/porownanie-cennikow-luty-2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mały darmowy proxy serwer dla Windowsa</title>
		<link>http://www.yunnan.tk/pomoce/windows/maly-darmowy-proxy-serwer-dla-windowsa/</link>
		<comments>http://www.yunnan.tk/pomoce/windows/maly-darmowy-proxy-serwer-dla-windowsa/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 20:33:48 +0000</pubDate>
		<dc:creator>Yunnan</dc:creator>
				<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.yunnan.tk/?p=379</guid>
		<description><![CDATA[Wiadomo ze linux jest lepszy i w tym temacie, ale zalozmy ze juz mamy tego windowsa (lub kilka) i chcemy przez niego proxowac ruch. Nie chcemy zadnych wielkich instalujacych sie kobyl, ani zadnego cachowania. Np. chcemy jedynie wykorzystac pare adresow IP. 3proxy bardzo maly (~130kb) i prosty serwerek proxy ale duze mozliwosci konfiguracji SOCKS i [...]]]></description>
			<content:encoded><![CDATA[<p>Wiadomo ze linux jest lepszy i w tym temacie, ale zalozmy ze juz mamy tego windowsa (lub kilka) i chcemy przez niego proxowac ruch.</p>
<p>Nie chcemy zadnych wielkich instalujacych sie kobyl, ani zadnego cachowania. Np. chcemy jedynie wykorzystac pare adresow IP.</p>
<h3><a href="http://www.3proxy.ru/" target="_blank">3proxy</a></h3>
<ul>
<li>bardzo maly (~130kb) i prosty serwerek proxy ale duze mozliwosci konfiguracji</li>
<li>SOCKS i HTTP proxy</li>
<li>nie ma interfejsu graficznego, bo po co</li>
<li>wersja standalone &#8211; proste uruchamianie z linii polecen z paroma zmiennymi, bez instalacji<br />
ta wersja nie ma tylu funkcji co wersja zwykla</li>
<li>wersja zwykla &#8211; pozwala na zainstalowanie service (uslugi/demona) w tle,<br />
w takim wypadku mozemy skorzystac z prostego pliku konfiguracyjnego</li>
</ul>
<h3><a href="http://www.handcraftedsoftware.org/index.php?page=5" target="_blank">Freeproxy</a></h3>
<ul>
<li>duzy ~5Mb</li>
<li>posiada duze mozliwosci konfiguracji<br />
white/black listy<br />
cachowanie<br />
pluginy</li>
<li>uruchamianie jako service i jako standalone</li>
</ul>
<h3><a href="http://www.eternallines.com/httpproxy/" target="_blank">ElHTTPproxy</a></h3>
<ul>
<li>instalka zajmuje ~400kb</li>
<li>po prostu HTTP proxy</li>
<li>musialem o tym wspomniec, mimo ze nie jest darmowy !<br />
bo to najbanalniejszy proxy serwer jaki widzialem, posiada GUI z guzikami <strong>ENABLE</strong> i <strong>DISABLE</strong> <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </li>
<li>posiada rowniez bardziej zaawansowane ustawienia kryjace sie pod trzecim guzikiem <strong>SETTINGS</strong></li>
<li>tak czy owak 29,95USD lub ~26,55EUR to delikatna przesada jak za taki program</li>
</ul>
<h3>Podsumowanie</h3>
<p>Do moich zastosowan uzywalbym ElHTTPproxy, ale przegieli z cena. Freeproxy jest niby darmowy, ale juz jest lekko kobylasty, za to 3proxy radzi sobie swietnie. Niestety wersja standalone nie ma mozliwosci ograniczania po IP albo na uzytkownikow, wersja zwykla juz ma te funkcje.</p>
<p>Tak wiec polecam 3proxy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yunnan.tk/pomoce/windows/maly-darmowy-proxy-serwer-dla-windowsa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Przestrzeń dyskowa w internecie</title>
		<link>http://www.yunnan.tk/pomoce/przestrzen-dyskowa-w-internecie/</link>
		<comments>http://www.yunnan.tk/pomoce/przestrzen-dyskowa-w-internecie/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 19:40:26 +0000</pubDate>
		<dc:creator>Yunnan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Pomoce]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.yunnan.tk/?p=373</guid>
		<description><![CDATA[Skad zalatwic sobie przestrzen dyskowa w internecie ? Nie chodzi tutaj o miejsce na strone, tylko bardziej o bezpieczne miejsce na backup albo cos w tym stylu. Naturalnie mozna sobie kupic bezpieczny serwer dedykowany i z glowy. Zeby bylo taniej mozna kupic serwer wspoldzielony, w koncu zadnych specjalnych programow nie chcemy uruchamiac. UWAGA: Nalezy zwracac [...]]]></description>
			<content:encoded><![CDATA[<h2>Skad zalatwic sobie przestrzen dyskowa w internecie ?</h2>
<p>Nie chodzi tutaj o miejsce na strone, tylko bardziej o bezpieczne miejsce na backup albo cos w tym stylu.<br />
Naturalnie mozna sobie kupic bezpieczny serwer dedykowany i z glowy. Zeby bylo taniej mozna kupic serwer wspoldzielony, w koncu zadnych specjalnych programow nie chcemy uruchamiac.</p>
<p><span style="color: #ff0000;">UWAGA: Nalezy zwracac nie tylko na stosunek pojemnosci do ceny naszego dysku internetowego, nalezy rowniez przyjrzec sie jego szybkosci ! Wiekszosc tanich hostingow do stron znajduje sie w USA, przez co transfery sa zwykle biedne.</span></p>
<h3>Hosting jako backup</h3>
<p>Bardzo tanie oferty serwerow wspoldzielonych to np (porownane sa najtansze oferty):</p>
<ul>
<li><a href="http://www.midphase.com/website-hosting/" target="_blank">http://www.midphase.com/website-hosting/</a><br />
nieskonczonosc miejsca<br />
2,95 USD/miesiac</li>
<li><a href="http://www.hostmonster.com/" target="_blank">http://www.hostmonster.com/</a><br />
nieskonczonosc miejsca<br />
6,95 USD/miesiac (chwilowa promocja 5,95$/miesiac)</li>
<li><a href="http://www.dreamhost.com/" target="_blank">http://www.dreamhost.com/</a><br />
nieskonczonosc miejsca<br />
8,95 USD/miesiac</li>
<li><a href="http://www.godaddy.com/" target="_blank">http://www.godaddy.com/</a><br />
10Gb miejsca<br />
1,66 USD/miesiac (dokladniej 4,99$/3 miesiace)</li>
<li><a href="http://www.ovh.pl/serwer_wirtualny/" target="_blank">http://www.ovh.pl/serwer_wirtualny/</a><br />
25Gb miejsca<br />
9,75 PLN (~3,5 USD)/miesiac<br />
serwerownia we Francji kolo Paryza, wiec duzo lepsze transfery niz hostingi z USA</li>
</ul>
<h3>Specjalne rozwiązania do backupu / przechowywania plikow</h3>
<p>Mozna zawsze zainwestowac w cos specjalnie zaplanowanego do backupu:</p>
<ul>
<li><a href="http://aws.amazon.com/s3/" target="_blank">http://aws.amazon.com/s3/</a><br />
nie ma ograniczenia miejsca, placisz za to co uzywasz<br />
0,18 USD/1 Gb (w Europie)<br />
+ 0,10 USD/1Gb wgranych danych<br />
+ 0,17 USD/1 Gb sciagnietych danych</li>
<li><a href="http://www.idrive.com/" target="_blank">http://www.idrive.com/</a><br />
150Gb miejsca<br />
4,95 USD/miesiac (49,50 USD/miesiac)</li>
<li><a href="http://www.box.net/" target="_blank">http://www.box.net/</a><br />
5Gb miejsca<br />
9,99 USD/miesiac</li>
<li><a href="http://www.filesanywhere.com/" target="_blank">http://www.filesanywhere.com/</a><br />
5Gb miejsca<br />
7,95 USD/miesiac, cennik elastyczny !</li>
<li><a href="https://www.dropbox.com/" target="_blank">https://www.dropbox.com/</a><br />
50Gb miejsca<br />
9,99 USD/miesiac</li>
<li><a href="http://www.syncplicity.com/" target="_blank">http://www.syncplicity.com/</a><br />
50Gb miejsca<br />
9,99 USD/miesiac</li>
<li><a href="https://www.elephantdrive.com/" target="_blank">https://www.elephantdrive.com/</a><br />
nieskonczonosc miejsca<br />
9,99 USD/miesiac (Home Plus Edition)<br />
na 4 komputery, do 10 wersji wstecz</li>
<li><a href="http://www.adrive.com/" target="_blank">http://www.adrive.com/</a><br />
50Gb miejsca<br />
6,95 USD/miesiac (Signature)<br />
dostęp przez WebDav (rzuc okiem nizej na darmowa wersje bez WebDav)</li>
</ul>
<p>Wiekszosc firm oferuje darmowe konta o wielkosci 1-2Gb oraz ograniczenie na wielkosc pliku, ale to zwykle nie jest wystarczajace.<br />
<span style="color: #ff0000;">UWAGA: Niektore firmy oferuja mozliwosc wspoldzielenia i wspolpracy na plikach domyslnie, a niektore kaza sobie za to placic. Rowniez ilosc oddzielnych uzytkownikow przypisanych do konta jest rozna, zwykle 1. Czasami nie mozna w ogole dodac uzytkownika.</span></p>
<h3>Darmowa przestrzeń dyskowa itp.</h3>
<p>A mozna rowniez atakowac na cos darmowego&#8230;</p>
<ul>
<li>GSpace czyli uzywanie skrzynki Google Mail jako przestrzeni dyskowej<br />
ok 7Gb miejsca, ale pojedynczy plik moze miec chyba tylko 10Mb<br />
dosc szybkie, latwe w linuxie za pomoca GoogleFS, w Windzie ???<br />
chyba nie jest zgodne z zasadami uzytkowania Google ;D</li>
<li><a href="https://www.mesh.com/" target="_blank">Live Mesh (Microsoft)</a><br />
5Gb miejsca<br />
mozliwosc wspolpracowania i wspoldzielenia plikow<br />
specjalny program do ciaglej synchronizacji plikow</li>
<li><a href="http://skydrive.live.com/" target="_blank">SkyDrive (Microsoft)</a><br />
25Gb miejsca<br />
dostęp jedynie przez przeglądarkę ! <span style="color: #ff0000;">brak webdav, brak scp, brak ftp !<br />
</span>w windzie mozna sie uzyc plugina do Total Commandera &#8211; <a href="http://skydrivewfx.codeplex.com/" target="_blank">SkydriveWFX</a></li>
<li><a href="http://www.adrive.com/" target="_blank">http://www.adrive.com/</a><br />
50Gb miejsca (Basic)<br />
dostęp jedynie przez przeglądarkę ! <span style="color: #ff0000;">brak webdav, brak scp, brak ftp !</span><br />
jak widac wyzej, dostep przez WebDav kosztuje tutaj 6,95 USD/miesiac</li>
</ul>
<h3>Zakończenie</h3>
<p>Jak widac wybor jest trudny. Ja zaopatrzylem sie w dedykowany serwer z raidem 750Gb i narazie zyje <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Ale podejrzewam ze niektorym chodzi o jakies tansze rozwiazania, dlatego zrobilem to zestawienie.</p>
<p>Porownanie innych backupow online na Wikipedii:<br />
<a href="http://en.wikipedia.org/wiki/List_of_online_backup_services" target="_blank">http://en.wikipedia.org/wiki/List_of_online_backup_services</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yunnan.tk/pomoce/przestrzen-dyskowa-w-internecie/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Porównanie hardphonów-telefonów do VoIP</title>
		<link>http://www.yunnan.tk/pomoce/voip/porownanie-telefonow-do-voip/</link>
		<comments>http://www.yunnan.tk/pomoce/voip/porownanie-telefonow-do-voip/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 19:06:31 +0000</pubDate>
		<dc:creator>Yunnan</dc:creator>
				<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.yunnan.tk/?p=371</guid>
		<description><![CDATA[Hardphony do VoIP Zadne tam USB badziewia, tylko telefony dzialajace samodzielnie. Jedynie w przypadku TC 300 potrzebny jest rowniez WiFi Access Point. Siemens Gigaset A450 IP Tani jak woda, niestety chyba juz niedostepny w sklepach. Obsluguje normalny VoIP (SIP), popularni providerzy sa juz skonfigurowani. Wlasny serwer SIP wpisuje sie przez panel zarzadzania na stronie www. [...]]]></description>
			<content:encoded><![CDATA[<h3>Hardphony do VoIP</h3>
<p>Zadne tam USB badziewia, tylko telefony dzialajace samodzielnie. Jedynie w przypadku TC 300 potrzebny jest rowniez WiFi Access Point. <a href="http://gigaset.com/shc/0,1935,pl_pl_0_160381_rArNrNrNrN,00.html" target="_blank"></a></p>
<h3><a href="http://gigaset.com/shc/0,1935,pl_pl_0_160381_rArNrNrNrN,00.html" target="_blank">Siemens Gigaset A450 IP</a></h3>
<p>Tani jak woda, niestety chyba juz niedostepny w sklepach. Obsluguje normalny VoIP (SIP), popularni providerzy sa juz skonfigurowani. Wlasny serwer SIP wpisuje sie przez panel zarzadzania na stronie www.</p>
<ul>
<li> telefon bezprzewodowy DECT</li>
<li> jednoczesna obsluga VoIP i zwyklej linii telefonicznej</li>
<li>duze guziki</li>
<li>niestety niewielki wyswietlacz, ale mimo to czytelny</li>
<li>proste zarzadzanie przez panel www (zarzadza sie stacja bazowa a nie sluchawka)</li>
<li> losowanie portu wychodzacego &#8211; przydaje sie za NATem</li>
<li>kiedys kosztowal ok 150PLN</li>
</ul>
<h3><a href="http://gigaset.com/shc/0,1935,pl_pl_0_145510_rArNrNrNrN,00.html" target="_blank">Siemens Gigaset C470 IP</a></h3>
<p>Nastepna modelu C450, z wiekszym ekranikiem. Duzy minusem jest, ze nie da sie latwo wybierac czy chcesz dzwonic przez zwykla linie telefoniczna czy przez internet, aby to zmienic trzeba wejsc w opcje.<br />
Ta sama (lub podobna) stacja bazowa czyli te same funkcje co przy modelu A450 IP.</p>
<ul>
<li> telefon bezprzewodowy DECT</li>
<li> jednoczesna obsluga VoIP i zwyklej linii telefonicznej</li>
<li>duze guziki</li>
<li>wiekszy wyswietlacz oraz lepsza rozdzielczosc</li>
<li>proste zarzadzanie przez panel www (zarzadza sie stacja bazowa a nie sluchawka)</li>
<li> losowanie portu wychodzacego &#8211; przydaje sie za NATem</li>
<li>ok 200PLN</li>
</ul>
<h3><a href="https://hilfe.telekom.de/hsp/cms/content/HSP/de/3388/theme-71990825/theme-2000985/theme-6307865/theme-6308220" target="_blank">T-Com TC 300</a> / Arcor D910 Twintel / Pirelli DP-L10 / Speedphone 300</h3>
<p>Telefon komorka z obsluga WiFi i z softem obslugujacym standardowe serwery SIP. VoIP ma zasieg tam gdzie WiFi, ale poza zasiegiem VoIP mozna dzwonic przez normalne polaczenie komorkowe.</p>
<ul>
<li>komorka i telefon VoIP w jednym, klient SIP zintegrowany w sofcie telefonu</li>
<li>nieintuicyjny i zamotany soft, ale dziala dobrze po skonfigurowaniu <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li>wymaga Access Pointa do prowadzenia rozmow VoIP</li>
<li> obsluguje proste szyfrowania polaczenia WiFi</li>
<li> slaba bateria</li>
<li>ok 50EUR (ok 200PLN)</li>
</ul>
<ul></ul>
<h3>Podsumowanie</h3>
<p>Ze wszystkich korzystalem, dla domu polecam Siemens C450, lub T-Com TC 300. Jako ze teraz wiele komorek ma WiFi to VoIP w nich to nie jest nic specjalnego. Jedynie ze jakis czas temu kupilem TC 300 za ok 50EUR, a wtedy najtanszy telefon z VoIP kosztowal ok 200EUR <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Uzywam wciaz jako domowy VoIP.</p>
<p>Siemens C450 jest prostszy niz C470, ale wg mnie lepszy. Mianowicie w C450 ustawiamy jako domyslne polaczenie VoIP i zwykle przez nie dzwonimy, co sygnalizuja nam  literki &#8222;IP&#8221; w prawym gornym rogu wyswietlacza.<br />
Jesli jednak chcemy wymusic polaczenie przez zwykla linie telefoniczna, trzymamy zielona sluchawke ok 3 sekundy wcisnieta, wtedy dzwonimy przez zwykla linie i literki &#8222;IP&#8221; sie nie pojawiaja (przydatne przy numerach darmowych 0800, policji itp, na ktore zwykle nie da sie dzwonic z VoIP).<br />
Siemenst C470 nie ma takiej funkcji ! Po pierwsze nie wiadomo czy dzwonimy przez zwykla linie czy przez VoIP (poniewaz nie ma na wyswietlaczu takiej informacji), po drugie aby zadzwonic przez zwykla linie, musimy zmienic w opcjach domyslne polaczenie !</p>
<p>Dodatkowym bledem oprogramowania obu telefonow Siemens, jest to ze przy recznej konfiguracji serwera SIP mozna wpisac numery na ktore polaczenie ma byc zawsze nawiazywane przez zwykla linie telefoniczna. Pomysł dobry i wszystko byloby swietnie gdyby nie to, ze w okienko da sie wpisac tylko jeden numer !!!<br />
<span style="color: #ff0000;">UWAGA: Sugeruje wpisac w okienko <a href="http://pl.wikipedia.org/wiki/112_%28numer_alarmowy%29" target="_blank">numer alarmowy 112</a> !</span></p>
<p>Jako ze telefony Siemens posiadaja funkcje autoaktualizacji oprogramowania, mozliwe ze te bledy zostana kiedys usuniete.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 349px; width: 1px; height: 1px;">
<h1 class="fontColor1">Speedphone 300</h1>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.yunnan.tk/pomoce/voip/porownanie-telefonow-do-voip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TeamSpeak &#8211; Ochrona przed flood</title>
		<link>http://www.yunnan.tk/pomoce/linux/teamspeak-ochrona-przed-flood/</link>
		<comments>http://www.yunnan.tk/pomoce/linux/teamspeak-ochrona-przed-flood/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 10:23:02 +0000</pubDate>
		<dc:creator>Yunnan</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[VoIP]]></category>

		<guid isPermaLink="false">http://www.yunnan.tk/?p=348</guid>
		<description><![CDATA[Mimo tego ze TeamSpeak to chyba najgorszy z chatow glosowych, jest bardzo rozpowszechniony (pewnie dlatego ze byl jednym z pierwszych). Jego minusy mozna by dlugo wymieniac, ale ogranicze sie do dwoch najwiekszych: hasla w bazie danych nie sa szyfrowane !!! w ogole !!! lista banow zawiera tylko 20 pozycji przy zapchaniu listy, nowe bany nie [...]]]></description>
			<content:encoded><![CDATA[<p>Mimo tego ze <strong>TeamSpeak</strong> to chyba najgorszy z chatow glosowych, jest bardzo rozpowszechniony (pewnie dlatego ze byl jednym z pierwszych). Jego minusy mozna by dlugo wymieniac, ale ogranicze sie do dwoch najwiekszych:</p>
<ul>
<li>hasla w bazie danych nie sa szyfrowane !!! w ogole !!!</li>
<li>lista banow zawiera tylko 20 pozycji<br />
przy zapchaniu listy, nowe bany nie sa dodawane (nikt nie jest banowany)</li>
</ul>
<p>Pierwszy problem jest bardzo prosty do rozwiazania, trzeba bardzo uwazac na swoja baze danych uzytkownikow (zwrocic uwage na to kto moze, a kto nie moze tego pliku czytac, kto ma dostep do konta na ktorym biega TS itp).</p>
<h3>TeamSpeak AntiFlood</h3>
<p>Drugi problem, ktorym zajme sie doglebniej, jest bardzo czestym powodem problemow z serwerem. Mianowicie skuteczne floodowanie serwera uniemozliwa jego prace (20 banow zapelnia sie bardzo szybko), a jesli nawet serwer moze pracowac, to utrudnione jest korzystanie z niego (pelno komunikatow o wchodzacych i wychodzacych uzytkownikach). W najgorszym (ale wcale nie rzadkim) przypadku, serwer zawiesza sie.</p>
<p>Naturalnie mozna pisac skrypty do <strong>perl_mod</strong>, ale <strong>perl_mod</strong> potrafi skutecznie zezrec duzo mocy serwera. Najlepiej skorzystac z narzedzi ktore mamy juz dostepne.</p>
<h3>iptables prosty TeamSpeak AntiFlood</h3>
<p>Wpisanie ponizszych linijek do tablic <strong>iptables</strong>, spowoduje ze problem floodow prawie przestanie istniec:<br />
<code>iptables -A INPUT -p udp --dport 8767 -m length <strong>--length 208</strong> -m state --state NEW   -m recent --set --name TS<br />
iptables -A INPUT -p udp --dport 8767 -m recent --update <strong>--seconds 30 --hitcount 3</strong> --rttl --name TS -j DROP</code><br />
Pakiet o <strong>dlugosci 208</strong> (wielkosc pakietu logowania) przychodzacy na <strong>port UDP 8767</strong> (standardowy port TS), jest zliczany. Jesli z jednego adresu IP przyjda 3 takie pakiety w ciagu 30 sekund, dalsze pakiety sa odrzucane (na okres 30 sekund od czasu przyjscia ostatniego pakietu).<br />
<span style="color: #ff0000;">UWAGA: Kazdy kolejny pakiet, przychodzacy w czasie bana odnawia czas bana ! Czyli floodujac bez przerwy przez np 10 minut, przejda jedynie 2 pierwsze pakiety, a potem reszta bedzie blokowana. Ban zostanie zniesiony, jesli przez 30 sekund nie przyjdzie zaden pakiet logowania z danego adresu IP.</span></p>
<h3>iptables zrzucanie duzych pakietow</h3>
<p>Wiem ze niektorzy maja wielka radoche z psucia cudzych zabawek. Niestety nie za bardzo istnieje mozliwosc doprowadzenia takiej osoby do pionu, taki wiec w pierszej kolenosci nalezy sie odpowiednio bronic.<br />
Studiujac skrypty do floodowania TS ktore znalazlem w internecie, od razu rzucilo mi sie w oczy ze skrypty te wysylaja pakiety losowej wielkosci od 1 do 65k. Jest to oczywisce poniewaz wiekszych pakietow nie da sie prosto przeslac, a im wiekszy pakiet tym wiecej zajmuje serwerowi czasu, zeby go przejrzec i odpowiedziec.</p>
<p><strong>TeamSpeak</strong> nie przesyla pakietow wiekszych niz 1k !!! (z moich badan wynika ze te pakiety nigdy nie sa wieksze niz 600, ale zalozmy pewien margines bezpieczenstwa). Linijka:<br />
<code>iptables -A INPUT -p udp --dport 8767 -m length <strong>--length 1000:</strong> -j DROP</code><br />
zalatwia sprawe duzych pakietow. Wszystkie pakiety wyslane na <strong>port UDP 8768</strong> wieksze niz <strong>1000</strong> sa odrzucane. W ten sposob serwer TS nie otrzymuje tych pakietow i nie musi sie z nimi meczyc.</p>
<h3>iptables logowanie floodow</h3>
<p>Aby moc przegladac logi, kiedy ktos nas floodowal, nalezy dodac jedna linijke kodu. Tak wiec cale zapytanie bedzie wygladac nastepujaco:<br />
<code>iptables -A INPUT -p udp --dport 8767 -m length --length 208 -m state --state NEW   -m recent --set --name TS<br />
<strong>iptables -A INPUT -p udp --dport 8767 -m recent --update --seconds 30 --hitcount 3 --rttl --name TS -m limit --limit 1/hour -j LOG --log-prefix "TS_flood "</strong><br />
iptables -A INPUT -p udp --dport 8767 -m recent --update --seconds 30 --hitcount 3 --rttl --name TS -j DROP</code><br />
W logach systemu znajdziemy odpowiednie wpisy. Fragment &#8211;limit 1/hour oznacza ze logowanie okreslonego flooda bedzie jedynie raz na godzine. Jesli usuniemy ten fragment, logowany bedzie kazdy pakiet ktory spowoduje flooda i w ten sposob zapchamy cale logi serwera.</p>
<h3>iptables TeamSpeak AntiFlood na okreslony adres IP</h3>
<p>Jesli nasz serwer ma pare adresow IP, a my chcemy filtrowac tylko jeden (np TS chodzi na jednym z nich), to nalezy dodac opcje <strong>-d</strong>. Naturalnie w zmiennej <strong>IPADDR</strong> nalezy podac swoj adres IP.<br />
<code><strong>IPADDR=127.0.0.1</strong><br />
iptables -A INPUT <strong>-d $IPADDR</strong> -p udp --dport 8767 -m recent --update --seconds 30 --hitcount 3 --rttl --name TS -j DROP<br />
iptables -A INPUT <strong>-d $IPADDR</strong> -p udp --dport 8767 -m length --length 208 -m state --state NEW   -m recent --set --name TS</code><br />
Dla bardziej zaawansowanych wpisow, sugeruje przeczytac manual od <strong>iptables.</strong></p>
<h3>outlook</h3>
<p>Przy filtrowaniu pakietow logowania, mozna by, oprocz wielkosci pakietu, rowniez sprawdzac tresc pakietu. W czasie wielodniowych pomiarow, jedynie pakiet logowania mial wielkosc 208 (razem z naglowkami itp), tak wiec wydalo mi sie to zbedne.<br />
Tak czy owak, pakiet logowania zawiera w sobie bardzo charakterystyczny wpis &#8222;TeamSpeak&#8221; ktory by ulatwil jego odfiltrowanie, ale to tylko dla nadgorliwych.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yunnan.tk/pomoce/linux/teamspeak-ochrona-przed-flood/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mBank skrypt do zautomatyzowanego pobierania wyciagu z konta</title>
		<link>http://www.yunnan.tk/pomoce/programowanie/mbank-skrypt-do-zautomatyzowanego-pobierania-wyciagu-z-konta/</link>
		<comments>http://www.yunnan.tk/pomoce/programowanie/mbank-skrypt-do-zautomatyzowanego-pobierania-wyciagu-z-konta/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 16:04:18 +0000</pubDate>
		<dc:creator>Yunnan</dc:creator>
				<category><![CDATA[Programowanie]]></category>

		<guid isPermaLink="false">http://www.yunnan.tk/?p=227</guid>
		<description><![CDATA[-&#62; NOWA WERSJA SKRYPTU &#60;- Moze sie komus przyda skrypt do zautomatyzowanego logowania i pobierania wyciagu z konta z banku mBank. Na nieszczescie brakuje takiej funkcj w mBanku, a przysylanie mejli po dwoch dniach, ktore potem rowniez ciezko sparsowac nie rozwiazuje problemu. Logowanie, sciaganie codziennie recznie wyciagu w CSV i parsowanie go, to tez nie [...]]]></description>
			<content:encoded><![CDATA[<p><br/><br/></p>
<h1 style="text-align: center;"><a href="http://www.yunnan.tk/pomoce/programowanie/mbank-skrypt-v3/">-&gt; NOWA WERSJA SKRYPTU &lt;-<br />
</a></h1>
<p><br/><br/></p>
<p>Moze sie komus przyda skrypt do zautomatyzowanego logowania i pobierania wyciagu z konta z banku mBank. Na nieszczescie brakuje takiej funkcj w mBanku, a przysylanie mejli po dwoch dniach, ktore potem rowniez ciezko sparsowac nie rozwiazuje problemu.</p>
<p>Logowanie, sciaganie codziennie recznie wyciagu w CSV i parsowanie go, to tez nie rozwiazanie. Takwiec stwierdzilem ze napisze skrypt ktory robi to sam.</p>
<p>I tak powstal:</p>
<h2>mBank auto skrypt <span style="text-decoration: line-through;">v1.2</span> <span style="text-decoration: line-through;">v1.5</span> <span style="text-decoration: line-through;">v1.6.3 v2.0.1</span> <span style="text-decoration: line-through;">v2.0.3</span> <span style="text-decoration: line-through;">v2.0.4</span> <span style="text-decoration: line-through;">v2.0.5</span> <span style="text-decoration: line-through;">v2.1.0</span> <span style="text-decoration: line-through;">v2.2.0</span></h2>
<p>Skrypt automatycznie pobiera wyciag ze wszystkich kont bankowych zalogowanego uzytkownika. Mozna rowniez wybrac pojedyncze konto ktore ma byc monitorowane.</p>
<p>Bardzo przydatny do integracji z programami ksiegowymi itp. Przy odpowiednich zmianach moze wysylac mejle, albo zapisywac transakcje w bazie danych.</p>
<h3>Instalacja i wymagania</h3>
<p>Krotka instrukcja instalacji:</p>
<ul>
<li>plik skryptu wgrac do dowolnego katalogu</li>
<li> z powodow bezpieczenstwa katalogowi i skryptowi nadac prawa odczytu tylko dla wlasciciela</li>
<li>podac uzytkownika i haslo do mbanku, z powodow bezpieczenstwa jest zakodowane base64<br />
<span style="color: #ff0000;">UWAGA: podajac prawdziwy login, nalezy podawac prawdziwe haslo !!!<br />
3 bledne logowania powoduja zablokowanie dostepu do konta !!!<br />
Trzeba potem odblokowywac przez telefon <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </span></li>
<li>mozna ustawic zmienna &#8222;wybrane&#8221; na jedno z kont ktore ma byc monitorowane, np:<br />
wybrane = &#8216;xx xxxx xxxx xxxx xxxx xxxx xxxx xxxx&#8217;<br />
jesli zmienna jest zostawiona pusta, skrypt wyswietla wszystkie konta tego uzytkownika, np:<br />
wybrane = &#8221;</li>
<li>jako zakodowac haslo i uzytkownika base64 ?<br />
mozna uzyc dowolnego base64 calculator z googli<br />
albo ponizszej funkcji pythona<br />
print &#8216;nasze_haslo&#8217;.encode(&#8216;base64&#8242;)</li>
</ul>
<p>Program wymaga:</p>
<ul>
<li>python</li>
<li>python-mechanize<br />
(w debianie to paczki &#8222;python&#8221; i &#8222;python-mechanize&#8221;)</li>
</ul>
<p><strong>Bezpieczenstwo i gwarancje</strong></p>
<p>Uzywanie na wlasna odpowiedzialnosc !!!<br />
Uzywajac programu zgadzasz sie na to ze nie ponosze odpowiedzialnosci za za zadne szkody ktore moga powstac uzywajac tego skryptu.</p>
<p>Gwarantuje jednak ze moj oryginalny kod nie zawiera zadnych spyware, zadnych metod podgladania i przechwytywania czulych danych. Mozna to oczywiscie zobaczyc przegladajac krociutki kod.<br />
Aby zwiekszyc bezpieczenstwo, niektore pola i zmienne sa zakodowane base64. To uniemozliwia bezposrednie odczytanie lub znalezienie hasel w pliku. Nie daje to jednak calkowitej gwarancji ze ktos po przechwyceniu zakodowanego hasla, po prostu go nie odkoduje (to nie hash jednokierunkowy, jedynie kodowanie base64).</p>
<p><strong>Historia wersji</strong></p>
<ul>
<li>v0.1 dziala</li>
<li>v0.2 zakodowane hasla base64<br />
<span style="color: #ff0000;">nie daja calkowitego bezpieczenstwa !<br />
zabezpieczaja jedynie przed podejrzeniem hasla przy przegladaniu kodu</span></li>
<li>v0.3 listowanie kont</li>
<li>v0.4 listowanie transakcji dla kazdego konta</li>
<li>v1.0 oczyszczenie kodu, definicje</li>
<li>v1.1 mozliwosc wybrania pojedynczego konta do listowania</li>
<li>v1.1 uzyskiwanie numeru transakcji</li>
<li>v1.2 opisy i instrukcje</li>
<li>v1.3 wybor rodzaju transakcji po numerze typu, mozliwosc wielokrotnego wyboru (regexp)</li>
<li>v1.4 wybor konta, mozliwosc wielokrotnego wyboru (regexp), wiecej pol transakcji</li>
<li>v1.5 usuwanie wielokrotnych spacji, oczyszczanie stringow, czytelniejsze domyslne wyswietlanie</li>
<li><strong>v2.0.1 skrypt dostosowany do nowego interfejsu mBanku !!!<br />
UWAGA: jedynie dwie glowne funkcje (get_konta i get_trans) zostaly zmienione, kolejnosc zmiennych, sposob wyswietlania jest identycznie jak bylo, co powinno ulatwic update zaimplementowanego skryptu (wystarczy podmienic te dwie fukcje ;D)</strong></li>
<li>v2.0.3 wyswietlanie &#8222;dostepnych srodkow&#8221; i waluty konta</li>
<li>v2.0.4 skrypt akceptuje ujemny stan konta</li>
<li>v2.0.5 dostosowanie do zmian w mbanku</li>
<li>v2.1.0 znowu mozna wybrac typy transakcji oraz mozna okreslic okres wyswietlania wstecz</li>
<li>v2.1.1 drobne poprawki i optymalizacje</li>
<li>v2.2.0 skrypt sciaga cala liste transakcji nawet jak jest rozbita w mbanku na pare stron</li>
</ul>
<p><span style="text-decoration: underline;">Ponizszy kod jest tylko podany informacyjnie, wyrazenia regularne nie sa za dobrze trawione przez WordPressa tak wiec najlepiej sciagnij kod w pliku powyzej.</span></p>
<p><a href="http://www.yunnan.tk/wp-content/files/skrypty/mbank_auto_skrypt_v205">SCIAGNIJ SKRYPT w wersji v2.0.5</a><br />
<a href="http://www.yunnan.tk/wp-content/files/skrypty/mbank_auto_skrypt_v220">SCIAGNIJ SKRYPT w najnowszej wersji</a></p>
<pre class="code">#!/usr/bin/env python
# coding: utf8
#-#############################################
# mBank_auto_skrypt v2.2.0
# Made by Jedrzej Schmeidel (Yunnan)
# on 2009/02
# www.yunnan.tk
# yunnan@yunnan.tk

#-## LICENCJA
# Creative Commons License - Attribution, Share Alike
# http://creativecommons.org/licenses/by-sa/2.5/pl/
# WOLNO: Kopiowac, rozpowszechniac, odtwarzac i wykonywac utwor.
# WOLNO: Tworzyc utwory zalezne.
# WARUNEK: Uznanie autorstwa.
# WARUNEK: Na tych samych warunkach.

#-## OPIS
# Skrypt do zautomatyzowanego uzyskiwania wyciagu
# z kont mBanku.
# Bardzo przydatny do integracji z programami ksiegowymi itp.
# Przy odpowiednich zmianach moze wysylac mejle, albo zapisywac
# transakcje w bazie danych.
# SKRYPT WYSWIETLA transakcje przychodzace i wychodzace
# SKRYPT WYSWIETLA oplatydodatkowe (prowadzenie konta, przelew, oplaty za przelewy, stale zlecenia, podatek od odsetek itp)

#-## HISTORIA
# v0.1 dziala
# v0.2 zakodowane hasla base64
#      nie daja calkowitego bezpieczenstwa !
#      zabezpieczaja jedynie przy przegladaniu kodu
# v0.3 listowanie kont
# v0.4 listowanie transakcji dla kazdego konta
# v1.0 oczyszczenie kodu, definicje
# v1.1 mozliwosc wybrania pojedynczego konta do listowania
# v1.1 uzyskiwanie numeru transakcji
# v1.2 opisy i instrukcje
# v1.3 wybor rodzaju transakcji po numerze typu, mozliwosc wielokrotnego wyboru (regexp)
# v1.4 wybor konta, mozliwosc wielokrotnego wyboru (regexp), wiecej pol transakcji
# v1.5 usuwanie wielokrotnych spacji, oczyszczanie stringow, czytelniejsze domyslne wyswietlanie
# v1.6 przechwytywanie bledow
# v1.6.1 argument read byl za maly i nie wszystkie konta sie odczytywaly
# v1.6.2 poprawki instrukcji i opisu
# v1.6.3 dodatkowe opisy transakcji
# v1.6.4 wyswietlanie w "prawdziwym" utf8
# v2.0.0 wersja dostosowana do nowego interfejsu mBanku
# UWAGA: Tylko funkcje get_konta i get_trans zostaly zmienione i tylko je nalezy zaktualizowac
# czyli jesli ktos uzywa tego skryptu jako modulu, wystarczy ze zamieni te dwie fukcje, a output
# jest identyczny (komorki sa numerowane tak samo i sposob wyswietlania jest taki sam)
# v2.0.1 drobny blad przy logowaniu (dziwna niepotrzebna komorka None=)
# v2.0.2 get_konta: zmienna nr 3 to "saldo" konta, dodano zmienna 5, czyli "dostepne srodki"
# v2.0.3 zmiana wyswietlania, obok salda dodano walute oraz w nawiasie wyswietlane sa "dostepne srodki"
# UWAGA: dostepne srodki zawieraja zablokowane srodki (wykonane ale nie zaksiegowane transakcje) oraz odnawialne kredyty
# v2.0.4 skrypt akceptuje ujemny stan konta
# v2.0.5 mBankowcy znowu cos zmieniali, musialem przepisac regexpy
# UWAGA: numeryczny kod transakcji nie jest juz podawany przez mBank, tak wiec filtrowanie po tym numerze nie dziala !
# UWAGA: tylko funkcje sz_konto, sz_trans1, sz_trans2 i sz_trans3 sie zmienily !!! wystarczy je podstawic
# v2.1.0 znowu mozna wybierac rodzaje operacji, teraz przebiega to przez system mbanku uzywajac ich trzyliterowych kodow
#        mozna wybierac dowolny okres do wyswietlenia wstecz
#        wybieranie przedzialu bedzie w nastepnej wersji <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
# v2.1.1 dodane pauzy na czekanie na odpowiedz
#        sa podejrzenia ze za szybkie zapytania do serwera byly powodem sporadycznych timeoutow
# v2.1.2 drobne poprawki, optymalizacja sleepow, chyba bylo ich za duzo <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
# v2.2.0 sciaganie calej listy transakcji, nawet jak jest na paru stronach

#-## TODO
# wykrywanie kredytu gotowkowego

#-## Instalacja i uruchomienie
# - program wymaga Python i Python-Mechanize
#   (w debianie to paczki "python" i "python-mechanize")
# - plik skryptu wgrac do dowolnego katalogu
# - z powodow bezpieczenstwa katalogowi i skryptowi nadac prawa odczytu tylko dla wlasciciela
# - podac uzytkownika i haslo do mbanku, z powodow bezpieczenstwa jest zakodowane base64
#   UWAGA: podajac prawdziwy login, nalezy podawac prawdziwe haslo !!!
#   3 bledne logowania powoduja zablokowanie dostepu do konta !!! Trzeba potem odblokowywac przez telefon <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
# - mozna ustawic zmienna "wybrane" na jedno z kont ktore ma byc monitorowane, np:
#   wybor_konto = '(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)'
#   jesli zmienna jest '(.*)', skrypt wyswietla wszystkie konta tego uzytkownika, np:
#   wybor_konto = '(.*)'
#   zwykle wyrazenie regularne
# - mozna wybrac tylko okreslone transakcje do wyswietlenia
#     ALL - Wszystkie
#     ABO - Uznania rachunku
#     CAR - Obci??enia rachunku
#     TRI - Przelewy przychodz?ce
#     TRO - Przelewy wychodz?ce
#     TUS - Przelewy podatkowe
#     TRZ - Przelewy do ZUS
#     LDS - Operacje kartowe
#     CRE - Operacje na kredycie
#     CAI - Wp?aty gotówkowe
#     CAO - Wyp?aty gotówkowe
#     INT - Kapitalizacja odsetek
#     COM - Prowizje i op?aty
# - jak zakodowac haslo i uzytkownika base64 ?
#   mozna uzyc dowolnego base64 calculator z googli
#   albo ponizszej funkcji pythona
#print 'nasze_haslo'.encode('base64')

#-## Integracja i edycja
# - program zostal napisany w Linuxie, tak wiec mozna go dowolnie zintegrowac w Linuxie
# - aby uruchomic program w Windowsie potrzebny jest Python do windowsa z pakietem Mechanize
#   ODRADZAM uzywania go na Windowsie, z powodu latwego dostepu do wszystkich plikow i zapisanych w nich hasel
#   nalezy posiadac zaufany komputer, najlepiej tylko z jednym (wlasnym) kontem uzytkownika
# - funkcje podaja tablice z numerami kont oraz odpowiednio wyciag z konta
#   tablica moze byc w dowolny sposob przetworzona i wyswietlona, wyslana mejlem, lub zapisana do bazy
#   python w prosty sposob oferuje te wszystkie mozliwosci
# - skrypt mozna bez problemu uruchamiac cronem
# - pola danych sa wziete bezposrednio ze strony, tak wiec ich kolejnosc jest podobna jak na stronie
#   tabela z informacjami o koncie ma 6 pol
#   0 - zmienna POST, niezbedna do uzyskania wyciagu, raczej nieczytelna <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />
#   1 - nazwa konta
#   2 - numer konta
#   3 - saldo
#   4 - waluta
#   5 - dostepne srodki
#   tabela z informacjami o transakcji ma 11 pol
#   0 - data wydania polecenia transakcji
#   1 - data wykonania polecenia transakcji
#   2 - wewnetrzny systemowy numer transakcji, transakcje numerowane kolejno
#   3 - numer oznaczajacy rodzaj transakcji (opisane ponizej) - NIEAKTUALNE ! NUMERYCZNY TYP TRANSAKCJI NIE JEST JUZ PODAWANY PRZEZ MBANK
#   4 - slownie rodzaj transakcji
#   5 - druga strona bioraca udzial w transakcji
#   6 - numer konta drugiej strony bioracej udzial w transakcji (w niektorych przypadkach pusty)
#   7 - tytul przelewu/transakcji
#   8 - kwota transakcji
#   9 - saldo po transakcji
#   10- waluta transakcji

#-## Bezpieczenstwo i gwarancje
# Uzywanie na wlasna odpowiedzialnosc !!! Uzywajac programu zgadzasz sie na to ze nie
# ponosze odpowiedzialnosci za za zadne szkody ktore moga powstac uzywajac tego skryptu.
# Gwarantuje jednak ze moj oryginalny kod nie zawiera zadnych spyware, zadnych metod
# podgladania i przechwytywania czulych danych. Mozna to oczywiscie zobaczyc przegladajac
# krociutki kod.
# Aby zwiekszyc bezpieczenstwo, niektore pola i zmienne sa zakodowane base64. To uniemozliwia
# bezposrednie odczytanie lub znalezienie hasel w pliku.

############# KONFIGURACJA
#user zakodowany base64
Y3VzdG9tZXI = ''
#haslo zakodowane base64
cGFzc3dvcmQ = ''
#wybrane konta, aby wyswietlic wszystkie konta (.*), aby wyswietlic wybrane (xxx|xxx) znak | to znak OR
#wybor_konto = '(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)'
wybor_konto = '(.*)'
# kryteria wyswietlania operacji
# wybor_typ => rodzaje operacji opisane wyzej - ALL, ABO, CAR, TRI, TRO, TUS, TRZ, LDS, CRE, CAI, CAO, INT, COM
wybor_typ = 'ALL'
# wybor_period => okres - D dzien, W tydzien, M miesiac
# wybor_numer => liczba dni, miesiecy, tygodni, czyli np wybor_numer 1 i wybor_period M to jeden miesiac
wybor_period = 'D'
wybor_numer = '14'
#############
#rangepanel_group=[daterange_radio, *lastdays_radio, lastlogin_radio])>
#wybor_data_od = '20091101'
#wybor_data_do = '20091203'
####

import time
import re
import sys
from mechanize import Browser
from urllib import urlencode
from urllib2 import Request

#-#############################################
# Program
#-#############################################
def strip_space(value): 	#oczyszczanie ze spacji
    return re.sub(r'\ ', '', value)

def strip_dspace(value):	#usuwanie podwojnych niepotrzebnych spacji z tekstu
    return re.sub(r'\ [\ ]+', ' ', value)

def get_konta(value='(.*)'):
    time.sleep(1)
    response_get = br.open("https://www.mbank.com.pl/accounts_list.aspx") # otwarcie listy kont
    # response_get.seek(5000)
    strona = response_get.read().decode('iso8859-2')
    strona = re.sub(r'&lt;li>|&lt;/li>', '\n', strona)
    # magiczny regexp przed 2009.11
    #sz_konto = re.compile('\'account_details.aspx\',\'\',\'POST\',\'[^&lt;]+href="#">([^0-9&lt;]+)\ ([0-9\ ]+)&lt;/a>.*(bLast14=[^\']+).*\ href="#">([0-9-,\ ]+)\ ([A-Z]{3})&lt;/a>&lt;/p>&lt;p class="Amount">.*">([0-9-,\ ]+)\ [A-Z]{3}&lt;/span>&lt;/p>&lt;p class="Actions">')
    # magiczny regexp po 2009.11
    sz_konto = re.compile('\'account_details.aspx\',\'\',\'POST\',\'[^&lt;]+href="#">([^0-9&lt;]+)\ ([0-9\ ]+)&lt;/a>.*\'account_oper_list.aspx\',\'\',\'POST\',\'([^\']+)\'[^&lt;]+href="#">([0-9-,\ ]+)\ ([A-Z]{3})&lt;/a>&lt;/p>&lt;p class="Amount">.*">([0-9-,\ ]+)\ [A-Z]{3}&lt;/span>&lt;/p>&lt;p class="Actions">')

    r_konta = []
    for konto_temp in list(sz_konto.findall(strona)):
	konto_temp = list(konto_temp)
	# odwracanie zmiennych, zeby zachowac kolejnosc
	temp = konto_temp[2]
	konto_temp[2] = konto_temp[1]
	konto_temp[1] = konto_temp[0]
	konto_temp[0] = temp
	#
	konto_temp[2] = strip_space(konto_temp[2])
	konto_temp[3] = strip_space(konto_temp[3])
	konto_temp[5] = strip_space(konto_temp[5])
	if re.match(value, str(konto_temp[2])):
	    r_konta.append(konto_temp)
    return r_konta

def get_trans(value='', valuea='ALL'):
    time.sleep(1)
    br.open("https://www.mbank.com.pl/accounts_list.aspx") # powrot na liste kont
    # magiczny regexp
    sz_grep = re.compile('&lt;p class="Date">&lt;(.*\n)')
    # magiczny regexp przed 2009.11
    #sz_trans1 = re.compile('span>([0-9-]+)&lt;/span>&lt;span>([0-9-]+)&lt;/span>.*iNumber=([0-9]+).*cCodeOper=([0-9]+).*href="#">([^&lt;]+)&lt;/a>&lt;span>([^&lt;]+)&lt;/span>&lt;span>([0-9]+)&lt;/span>&lt;span>([^&lt;]+)&lt;/span>.*">([0-9-\ ,]+)\ [A-Z]+&lt;/span>&lt;/p>.*">([0-9-\ ,]+)\ ([A-Z]+)&lt;/span>&lt;/p>\n')
    #sz_trans2 = re.compile('span>([0-9-]+)&lt;/span>&lt;span>([0-9-]+)&lt;/span>.*iNumber=([0-9]+).*cCodeOper=([0-9]+).*href="#">([^&lt;]+)&lt;/a>&lt;span>([^&lt;]+)&lt;/span>&lt;/p>()().*">([0-9-\ ,]+)\ [A-Z]+&lt;/span>&lt;/p>&lt;p class="Amount">.*">([0-9-\ ,]+)\ ([A-Z]+)&lt;/span>&lt;/p>\n')
    #sz_trans3 = re.compile('span>([0-9-]+)&lt;/span>&lt;span>([0-9-]+)&lt;/span>.*iNumber=([0-9]+).*cCodeOper=([0-9]+).*href="#">([^&lt;]+)&lt;/a>()()().*">([0-9-\ ,]+)\ [A-Z]+&lt;/span>&lt;/p>&lt;p.*">([0-9-\ ,]+)\ ([A-Z]+)&lt;/span>&lt;/p>\n')
    # magiczny regexp po 2009.11
    sz_trans1 = re.compile('_0_0">([0-9-]+)&lt;/span>&lt;span[^&lt;]+_0_1">([0-9-]+)&lt;/span>&lt;.*MCheckBox_[0-9]+_1_([0-9]+)" />().*href="#">([^&lt;]+)&lt;/a>&lt;span>([^&lt;]+)&lt;/span>&lt;span>([^&lt;]+)&lt;/span>&lt;span>([^&lt;]+)&lt;/span>.*">([0-9-\ ,]+)\ [A-Z]+&lt;/span>&lt;/p>.*">([0-9-\ ,]+)\ ([A-Z]+)&lt;/span>&lt;/p>\n')
    sz_trans2 = re.compile('_0_0">([0-9-]+)&lt;/span>&lt;span[^&lt;]+_0_1">([0-9-]+)&lt;/span>&lt;.*MCheckBox_[0-9]+_1_([0-9]+)" />().*href="#">([^&lt;]+)&lt;/a>&lt;span>([^&lt;]+)&lt;/span>&lt;span>([^&lt;]+)&lt;/span>()&lt;/p>&lt;p.*">([0-9-\ ,]+)\ [A-Z]+&lt;/span>.*">([0-9-\ ,]+)\ ([A-Z]+)&lt;/span>&lt;/p>\n')
    sz_trans3 = re.compile('_0_0">([0-9-]+)&lt;/span>&lt;span[^&lt;]+_0_1">([0-9-]+)&lt;/span>&lt;.*MCheckBox_[0-9]+_1_([0-9]+)" />().*href="#">([^&lt;]+)&lt;/a>&lt;span>([^&lt;]+)&lt;/span>()()&lt;/p>&lt;p.*">([0-9-\ ,]+)\ [A-Z]+&lt;/span>.*">([0-9-\ ,]+)\ ([A-Z]+)&lt;/span>&lt;/p>\n')
    sz_next = re.compile('button\ id="PrevPage"\ onclick="doSubmit\(\'\',\'\',\'\',\'(.*)\',true,false,true,null\);return false"\ class="button">Poprzednie')

    # przejscie do konta
    submit = []
    for form in br.forms():
        for forma in form.controls:
    	    submit.append((forma.name, forma.value))
    submit[0] = ('__PARAMETERS', value)
    none = None, ''
    while submit.count(none)>0:
	submit.remove(none)
    submitstr = urlencode(submit) # zbieranie danych do POST
    br.open("https://www.mbank.com.pl/account_oper_list.aspx", submitstr)

    # strona z kontem, teraz istnieje mozliwosc filtrowania operacji
    br.select_form(name="MainForm")

#    br["daterange_from_day"] = '21'
#    br["daterange_from_month"] = '11'
#    br["daterange_from_year"] = '2009'
#    br["daterange_to_day"] = '5'
#    br["daterange_to_month"] = '12'
#    br["daterange_to_year"] = '2009'

    br["lastdays_period"] = [str(wybor_period)]
    br["lastdays_days"] = str(wybor_numer)
    br["accoperlist_typefilter_group"] = [str(wybor_typ)]

    response_get = br.submit()

    # zbieranie danych do klikniecia guzika Poprzednie operacje
    strona = ''
    stronatmp = response_get.read()
    while sz_next.findall(stronatmp).__len__() == 1:
	strona = strona+stronatmp
        submit = []
        for form in br.forms():
            for forma in form.controls:
        	submit.append((forma.name, forma.value))
        trans_next = sz_next.findall(stronatmp)
        submit[0] = ('__PARAMETERS', trans_next)
        while submit.count(none)>0:
	    submit.remove(none)
        submitstr = urlencode(submit) # zbieranie danych do POST
        submitstr = re.sub(r'\%5B|\%5D|\%27|\&#038;account[^=]+=', '', submitstr)
        response_get = br.open("https://www.mbank.com.pl/account_oper_list.aspx?",submitstr)
	stronatmp = response_get.read()
    ###
    strona = strona+stronatmp
    strona = strona.decode('iso8859-2')

#    print strona
    strona = re.sub(r'\&shy;|&lt;wbr />', '', strona)
    strona = re.sub(r'&lt;/li>|&lt;li class="alternate">|&lt;li>', '\n', strona)

#    print strona
    r_trans = []
    for trans_html in sz_grep.findall(strona):
	trans_temp = sz_trans1.findall(strip_dspace(trans_html))
	if trans_temp.__len__() == 0:
	    trans_temp = sz_trans2.findall(trans_html)
	if trans_temp.__len__() == 0:
	    trans_temp = sz_trans3.findall(trans_html)
	if trans_temp.__len__() == 1: # and re.match(valuea, str(trans_temp[0][3])):
	    trans_temp = list(trans_temp[0])
	    trans_temp[8] = strip_space(trans_temp[8])
	    trans_temp[9] = strip_space(trans_temp[9])
	    r_trans.append(trans_temp)
	#if trans_temp.__len__() == 0:
	    #print "Rodzaj nieznany"+trans_html
    return r_trans

#-########mBank#####################################
print "===> Uruchomienie wersja mBank_auto_skrypt v2.2.0"
br = Browser()	# uruchomienie przegladarki
# ewentualny debugging
#br.set_debug_redirects(True)
#br.set_debug_responses(True)
#br.set_debug_http(True)
br.open("https://www.mbank.com.pl/")
##################
# LOGOWANIE
time.sleep(1)
br.select_form(name="MainForm") # wypelnienie formularza
try:
    br['Y3VzdG9tZXI='.decode('base64')] = Y3VzdG9tZXI.decode('base64')
    br['cGFzc3dvcmQ='.decode('base64')] = cGFzc3dvcmQ.decode('base64')
except:
    print "===> BLAD przy odszyfrowywaniu - ", sys.exc_info()[1]
    sys.exit()
time.sleep(1)
response_in = br.submit() # wyslanie formularza
if response_in.geturl() == "https://www.mbank.com.pl/frames.aspx":
    print "===> Zalogowano poprawnie"
else:
    print "===> BLAD przy logowywaniu"
    sys.exit()
##################
# Wyswietlanie listy kont i wyciagow
# funkcja get_konta pobiera wszystkie konta i potrzebne dane do uzyskania wyciagu z konta
# jako opcje przyjmuje numer/numery konta bez spacji ktore maja zostac wyswietlone
# funkcja get_trans pobiera transakcje w ostatnich 14 dniach (domyslnie w mbanku)
# jako opcje przyjmuje zmienna post do uzyskania wyciagu oraz rodzaj transakcji do wyswietlenia
# (wg specjalnej numeracji mbanku)
##################
##################
konta = get_konta(wybor_konto)
print "===> Znalezione konta:",konta.__len__()
for konto in konta:
    print ("---> "+konto[2]+"  "+(konto[3]+"("+konto[5]+")"+konto[4]).rjust(15, ' ')+"  "+konto[1]).encode("utf8")
    trans = get_trans(konto[0], wybor_typ)
    for transa in trans:
#        print transa
        print ("  -> "+transa[2].ljust(4, ' ')+"  "+transa[0]+"  "+transa[3]+"  "+transa[6].ljust(32,' ')+"  "+transa[8].rjust(10,' ')+"  "+transa[5]).encode("utf8")
##################
##################
# WYLOGOWANIE
response_out = br.open("https://www.mbank.com.pl/logout.aspx")
response_out.seek(2000)
if response_out.read(6000).find('Poprawne wylogowanie z cz') > 0:
    print "===> Wylogowano poprawnie"
else:
    print "===> BLAD przy wylogowywaniu"
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.yunnan.tk/pomoce/programowanie/mbank-skrypt-do-zautomatyzowanego-pobierania-wyciagu-z-konta/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Mountowanie SSH w Windowsie</title>
		<link>http://www.yunnan.tk/pomoce/windows/mountowanie-ssh-w-windowsie/</link>
		<comments>http://www.yunnan.tk/pomoce/windows/mountowanie-ssh-w-windowsie/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 21:33:57 +0000</pubDate>
		<dc:creator>Yunnan</dc:creator>
				<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.yunnan.tk/?p=307</guid>
		<description><![CDATA[Mozliwe ze nie tylko ja spotkalem sie z pewnym problemem. Mianowicie nie mam zaufania do mojego dysku twardego i chcialbym jakos szybko i bezproblemowo backupowac (lub wrecz zdalnie pracowac) pliki. Pojawia sie kilka rozwiazan, z ktorego kazde ma plusy i minusy: Subversion (SVN) mountowanie WebDav (windowe Web folders) mountowanie FTP mountowanie SSH Subversion wyglada na [...]]]></description>
			<content:encoded><![CDATA[<p>Mozliwe ze nie tylko ja spotkalem sie z pewnym problemem. Mianowicie nie mam zaufania do mojego dysku twardego i chcialbym jakos szybko i bezproblemowo backupowac (lub wrecz zdalnie pracowac) pliki.</p>
<p>Pojawia sie kilka rozwiazan, z ktorego kazde ma plusy i minusy:</p>
<ul>
<li>Subversion (SVN)</li>
<li>mountowanie WebDav (windowe Web folders)</li>
<li>mountowanie FTP</li>
<li>mountowanie SSH</li>
</ul>
<p>Subversion wyglada na sympatyczne rozwiazanie. Jedynie ze strony serwera sytuacja sie komplikuje, poniewaz trzeba to skonfigurowac (mysql itp) i nie zapisuje plikow w na tyle czytelnym formacie zeby mozna je edytowac na serwerze (oczywistym plusem jest kontrola wersji, ale na tym mi az tak bardzo nie zalezy). Pozatym trzeba zawsze synchronizowac pliki, przed i po edytowaniu.<br />
Klienty sa rowniez opensource, wiec znajdzie sie cos zawsze.</p>
<p>WebDav &#8211; ma prawie wszystkie plusy. Latwy do uzycia w windowsie (windowsy potrafia mountowac katalogi sieciowe) i mozna pracowac jak na dysku sieciowym. Znowu serwer wymaga zainstalowania calego Apache z modulem WebDav, oraz, co najgorsze, jest problem z prawami dostepu do pliku, ktore zawsze sa prawami Apache&#8217;a ! Mozna kazdemu uzytkownikowi dac jedna instancje Apache&#8230; ale to juz chyba za duzo zachodu.<br />
Windows potrafi to od razu mountowac, mimo to mozna znalezc duzo prostych klientow.</p>
<p>Mountowanie FTP &#8211; ma juz prawie wszystkie plusy. Instalacja na serwerze nie jest az tak problemowa, uzytkownik ma dostep do swoich plikow i szybkosc jest ok. Niestety brakuje szyfrowania !!!<br />
Sa zarowno darmowe opensource rozwiazania do mountowania dyskow, ale rowniez chyba Vista i Win7 potrafi to samemu podmountowac (ale moich serwerow FTP nie potrafil zjesc). Zawsze jest <a href="http://www.killprog.com/fdrve.html" target="_blank">FTPDrive</a> albo <a href="http://www.netdrive.net/" target="_blank">NetDrive</a>.<br />
FTP to tak czy siak polowiczne rozwiazanie w drodze do celu, czyli&#8230;</p>
<p>Mountowanie SSH. To cel naszej podrozy i mojego wyboru protokolu. Szyfrowany, szybki, nie potrzeba zadnej ingerencji w serwer (jesli serwer nie ma SSH to to nie serwer <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ), uzytkownik ma swoje pliki i wszystko jest swietnie, ale&#8230; Windows tego nie lubi&#8230;</p>
<p>Mapowanie/mountowanie dysku SSH w Windowsie</p>
<p>Tak wiec wiemy co trzeba zrobic, ale potrzebujemy narzedzi (jak to zawsze w windowsie). Co do linuxa to nie bede w ogole sie rozpisywal poniewaz sshfs jest zbyt banalny zeby jeszcze raz przepisywac internet.</p>
<p>Do wyboru mamy:</p>
<ul>
<li><a href="http://www.webdrive.com/download/index.html" target="_blank">WebDrive</a> ($$$)</li>
<li><span style="text-decoration: line-through;">SftpDrive</span> <a href="http://www.expandrive.com/windows/" target="_blank">ExpanDrive</a> ($$$)</li>
<li><a href="http://sshdrive.com/" target="_self">SSHDrive</a> (free !!!)</li>
<li><a href="http://dokan-dev.net/en/" target="_blank">Dokan</a> (free !!!)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.yunnan.tk/pomoce/windows/mountowanie-ssh-w-windowsie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SlimRat plugins</title>
		<link>http://www.yunnan.tk/pomoce/programowanie/slimrat-plugins/</link>
		<comments>http://www.yunnan.tk/pomoce/programowanie/slimrat-plugins/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 12:34:02 +0000</pubDate>
		<dc:creator>Yunnan</dc:creator>
				<category><![CDATA[Programowanie]]></category>

		<guid isPermaLink="false">http://www.yunnan.tk/?p=292</guid>
		<description><![CDATA[Na prosbe czytelnikow zmotywowalem sie do napisania paru pluginow do SlimRata. Na pierwszy ogien poszly: ShareBase.to OK FastShare.org OK OdSiebie.com OK HotFile.com OK DepositFiles.com Poprawione SendSpace.pl Share-Now.net Raczej sie nie uda Musze powiedziec ze kiedys zdarzylo mi sie cos napisac w Perlu, ale teraz jestem nie przekonany do tego jezyka (zeby nie powiedziec ze wrecz [...]]]></description>
			<content:encoded><![CDATA[<p>Na prosbe czytelnikow zmotywowalem sie do napisania paru pluginow do SlimRata.</p>
<p>Na pierwszy ogien poszly:</p>
<ul>
<li><span style="text-decoration: line-through;">ShareBase.to</span> OK<span style="text-decoration: line-through;"><br />
</span></li>
<li><span style="text-decoration: line-through;">FastShare.org</span> OK<span style="text-decoration: line-through;"><br />
</span></li>
<li><span style="text-decoration: line-through;">OdSiebie.com</span> OK<span style="text-decoration: line-through;"><br />
</span></li>
<li><span style="text-decoration: line-through;">HotFile.com</span> OK</li>
<li><span style="text-decoration: line-through;">DepositFiles.com</span> Poprawione<span style="text-decoration: line-through;"><br />
</span></li>
<li>SendSpace.pl</li>
<li><span style="text-decoration: line-through;">Share-Now.net</span> Raczej sie nie uda<span style="text-decoration: line-through;"><br />
</span></li>
</ul>
<p>Musze powiedziec ze kiedys zdarzylo mi sie cos napisac w Perlu, ale teraz jestem nie przekonany do tego jezyka (zeby nie powiedziec ze wrecz go nie lubie). Od jakiegos czasu mam duzo milych doswiadczen z Pythonem, wiec mialem pewne trudnosci zeby wrocic do Perla&#8230;<br />
Nie wspominam o drobnych roznicach pakietu Mechanize dla Perla i Pythona. Na szczescie (lub moje chwilowe nieszczescie) znowu przekonalem sie ze Python jest lepszym jezykiem.</p>
<h3>Problem z Captcha</h3>
<p>Wiele podobnych stron stosuje Captcha aby uniknac zautomatyzowanego pobierania plikow. Chwilowo takie strone sa stosunkowo niezagrozone, poniewaz systemy AntiCaptcha niestety nie do konca daja sobie rade. Pozatym, po np 3-krotnym blednym wpisaniu Captcha mozna zabanowac IP na dluzej, podejrzewajac skrypt sciagajacy.</p>
<p>Bazy danych obrazkowo Captcha wydaja sie prawie niezawodnym rozwiazaniem, ale troche przesadzonym, no i ktos musi te literki Captcha chociaz raz zgadnac&#8230;</p>
<p>Tak czy owak, moze kiedys bedzie warto zajac sie stronkami z Captcha, tymczasem jednak jest dosc bez takich zabezpieczen <img src='http://www.yunnan.tk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>ShareBase.to v0.2</h3>
<p>Oto plugin do ShareBase.to. Transfery duzo szybsze niz RapidShare (do 7MB/s). Wystarczy skopiowac go do katalogu plugins i od razu powinien zaczac dzialac.</p>
<p><a href="http://www.yunnan.tk/wp-content/files/slimrat/ShareBase.pm">Sciagnij plugin do ShareBase.to.<br />
</a>(testowane na Slimrat 0.9.4)<a href="http://www.yunnan.tk/wp-content/files/slimrat/ShareBase.pm"></a></p>
<h3>FastShare.org v0.1</h3>
<p>Rowniez szybkie transfery do 5MB/s.</p>
<p><a href="http://www.yunnan.tk/wp-content/files/slimrat/FastShare.pm">Sciagnij plugin do FastShare.org.<br />
</a>(testowane na Slimrat 0.9.4)</p>
<h3>OdSiebie.com v0.3</h3>
<p>Sympatyczne transfery do 4MB/s (podobno tylko tymczasowo bez Captcha).</p>
<p><a href="http://www.yunnan.tk/wp-content/files/slimrat/OdSiebie.pm">Sciagnij plugin do OdSiebie.com.<br />
</a>(testowane na Slimrat 0.9.4)</p>
<h3>HotFile.com v0.3</h3>
<p>Powolny, ale mozna co 3 minuty sciagac.</p>
<p><a href="http://www.yunnan.tk/wp-content/files/slimrat/HotFile.pm">Sciagnij plugin do HotFile.com.</a></p>
<h3>DepositFiles.com corrected/poprawiony</h3>
<p>Powolny, ale mozna czesto sciagac.</p>
<p><a href="http://www.yunnan.tk/wp-content/files/slimrat/DepositFiles.pm">Sciagnij plugin do DepositFiles.com.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yunnan.tk/pomoce/programowanie/slimrat-plugins/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using apc
Object Caching 845/965 objects using apc

Served from: www.yunnan.tk @ 2012-02-09 11:24:04 -->
