Proste szyfrowanie

6 06 2010

Dawno już nie pisałem i z całą pewnością wyszedłem już z wprawy. Od czasu ostatniego mojego wpisu miałem mnóstwo tematów i pomysłów do blogowania jednak mimo wszystko nie znalazłem na to ani chwili czasu.

Całkiem niedawno stanąłem przed małym problemem natury raczej algorytmicznej. W czasach kiedy kradzież contentu jest coraz bardziej powszechna, a ludzie czynią to bez krzty sumienia dostałem do pracy małą modyfikacje.
Z baza danych pewnego serwisu, o którym pisać tu nie mam zamiaru wczytywane były rekordy według pewnego wzorca:

domena.pl/index.php?id=231

Aby uniknąć parserowego pobierania zawartości miałem między innymi zmodyfikować sposób prezentowania linków. Czyli szybka transformacja do:

domena.pl/gVw8zQ.

W podobny sposób prezentowane są linki w tak popularnym serwisie jak YouTube.com czy w niektórych miejscach portalu o grach komputerowych. W swoim artykule zajmę się ostania część adresu, która charakteryzuje się niepowtarzalnością i ma być moim kluczem według którego wpisy będą pobierane z bazy. Do rzeczy!

Dla ustalenia uwagi mam takie oto id: 1823042. Chcę je w jakiś w miarę logiczny sposób przekształcić do postaci jakiegoś string’a. Stworzyłem sobie tablicę cyfr oraz odpowiadającą im tablicę liter.

$cyfra = array(0=>'akwGR0', 'blxHS1', 'cmyIT2', 'dnzJU3', 'eoAKW4', 'fpBLX5', 'grCMY6', 'hsDNZ7', 'itEOx8', 'juFPy9');

Gdybym przyjął, że cyfra 1 to litera C, 5 – g, 8 – m itd. to gdyby ktoś dotarł do mojego algorytmu w łatwy sposób uczyniłby moją pracę bezcelową. Przy założeniu (w moim przypadku), że liczba jest 7 cyfrowa mamy: Każda cyfra ma 6 odpowiedników literowych. Czyli właściwie liczba 1823042 może być zakodowana na [C_{6}^{1}]^7 sposobów = 6*6*6*6*6*6*6. Aż strach to nawet liczyć!

Prostą pętelką while podzielę dużą liczbę na pojedyncze cyfry. Wykorzystam tutaj odpowiedniki DIV i MOD znane choćby z DELPHI.


while($liczba>0)
{
$reszta=$liczba%10;
$code.=$cyfra[$reszta][rand(0,5)];

$liczba=($liczba-$reszta)/10;
}

Część z moich wykładowców rzekłaby: „Hohoho! A gdzie tabelka egzekucji!”. Przedstawię więc ją tutaj dość schematycznie:


START
code:='';
$liczba:=3211;
1 – $cyfra[1][rand(0,5)] //wylosowałem liczbę 3.
$cyfra[1][3]=’H';
code:=’H';
$liczba := (3211-1)/10=321
1 – $cyfra[1][rand(0,5)] //wylosowałem liczbę 1.
$cyfra[1][1]=’l';
code:=’Hl’
$liczba:=(321-1)/10=32
2 – $cyfra[2][rand(0,5)] //wylosowałem liczbę 5.
$cyfra[2][5]=’2′;
$code:=’Hl2′
$liczba:=(32-2)/10=3
3 – $cyfra[3][rand(0,5)] //wylosowałem liczbę 2.
$cyfra[3][2]=’z';
$code:=’Hl2z’;
$liczba:= (3-3)/10=0
return $code //Hl2z
KONIEC

Jak widać w naszym generatorze wykorzystaliśmy rozróżnienie wielkości liter. ‘A’!=’a’. Aby zneutralizować to przeoczenie gdybyśmy korzystali z bazy danych wykorzystamy kodowanie znaków z rozszerzeniem “_cs” (z ang. skrótu od Case Sensitive). Uwaga! Kodowanie UTF nie jest niestety w nie wyposażone (jest jedynie „_ci” -„Case Insensitive”). W tym wypadku w naszym zapytaniu SELECT dopisujemy BINARY.

$baza->query("SELECT [fields] FROM [table] WHERE id= BINARY '".$code."' LIMIT 0,1");

Przykład zastosowania prostego generatora przedstawiam tutaj.



Prawko zdane :)

4 07 2008

Seria niepowodzeń w WORDzie… najpierw 17 kwietnia egzamin teoretyczny zdany, praktyczny- oblany… :( Błąd dość głupi, przekroczenie prędkości.

Następne podejście 27 maja skończyło się na mojąniekorzyść. Wynik egzaminu negatywny, a błąd równie głupi, bo już na łuku, tak więć nawet na miasto sobie nie wyjechałem.

Jak to mówią do 3 razy sztuka… 26 czerwca o 7:15 egzamin. Wcześniej od 600-700 jeszcze jazdy doszkalające. Każda minuta coraz bardziej stresująca, dopiero uspokoiłem się kiedy usłyszałęm swoje imie i nazwisko.

Pan Grzegorz Dziubiński zapraszam do pojazdu numer 21

Egzaminator bardzo miły i jazda była dla mnie czystąprzyjemnością. Całe 35min przebiegło praktycznie bez żadnej pomyłki. A kilka ostatnich minut, ostatnie kilometry najbardziej mnie stresowały i poczyniłem kilka małych niedociągnięć. Jednak wynik egzaminu pozytywny!

Praktycznie codziennie śledziłem postępy wytwarzania mojego prawa jazdy na stronie Polskiej Wytwórni Papierów Wartościowych. I włąśnie dziś moim oczom ukazał się komunikat:

(2008-06-30) Prawo Jazdy: przyjęto wniosek, trwa postępowanie administracyjne.
(2008-07-03) Prawo Jazdy do odbioru w Urzędzie.

Niestety z powodu urzędu czynnego tylko do piątku do godziny 14:30 mój plastik odbiorę dopiero w poniedziałek. ;/



CSS goły dzień

4 04 2008

Dnia 05 kwietnia obchodzimy w Polsce CSS Goły Dzień. Tego dnia rozbieramy strony z ich graficznych ubrań.

CSS GOŁY DZIEŃ 2008 ma na celu promocję czystego, zgodnego ze standardami, kodu stron internetowych. Akcja polega na wyłączeniu (na jeden dzień) arkuszy stylów przypisanych do strony, co uwidacznia czysty kod. Jeśli jest to kod poprawnie skonstruowany strona pozostaje czytelna, pokazując wszystkim, że warstwa graficzna nie jest jedynym elementem funkcjonalnej i przyjaznej strony internetowej.

Promujemy w ten sposób standardy W3C według których powinny być produkowane serwisy WWW. Zapewnia to maksymalną ich przystępność w wielu obszarach. Dbamy, aby serwisy były poprawnie czytane przez programy dla osób niewidomych, roboty wyszukiwarek (np: Google, Onet), a także przez wszystkie najważniesze przeglądarki internetowych.



wrzuta.pl

21 12 2007

Ostatnio ponownie wróciłem do zainteresowania mojego, mało rowiniętego… php. Zastanawiało mnie bowiem, w jaki sposób stworzone są programy (których pełno) do pobierania utworów z serwisu wrzuta.pl. Nigdzie jednak nie był przedstawiony algorytm działania programu. Oto moja propozycja:

Najpierw prosty formularz do wklejania linku:


<form action="plik.php” method=”get“>   
      URL:<input name=’link’ type=”text” />
      <input type=”submit” value=”Pobierz” />
</form>

Czytaj dalej »



Witam

18 12 2007

eH taka przerwa, sam już nie wiem co mam pisać.
Po krótce opiszę co się zmieniło.

  • Po pierwsze to właśnie przeżywamy gorączke świąt, a także gorączke lenistwa jakim jest chodzenie do szkoły i męczenie się w tych codzień tych samych ścianach. Jak już wcześniej chyba mówiłem nacisk w tym semestrze położyłem na angielski i przede wszsytkim matme. Sądzę żę to była na prawdę dobra decyzja.
  • W kwestii pozaszkolnej to oprócz codziennego przeglądania stron www nie znajduję już czasu na zainteresowania jakim jest m.in. xHTML & CSS. Zajmuję sie juz tym w mniejszym stopniu.

Do końca tygodnia zostało kilka dni, życzę wiec wytrwałości i
WSZYSTKIEGO NAJLEPSZEGO NA ŚWIĘTA.
P.S. Przed końcem roku jeszcze coś napiszę czysto technicznego jeśli starczy mi sił :)



Problem z pulpitem?

6 09 2007

Ostanio pracując na kompie wpadłem z kumplem na genialny sposób. Tak sztuczka polegała no tym aby każde działanie na naszym pulpicie było daremne :D Wystarczy choć na chwile przejąć działanie nad czyimś komputerem i…

Co robimy?

  • Tworzymy screenshot’a pulpitu
  • Zrobionego screenshot’a ustawiamy jako tło pulpitu. Będzie to wyglądało mniej więcej tak:

  • Co ukryć?
  • Skoro mamy już tapetę z “ikonami”. Przechodzimy do ukrywania prawdziwych ikon. :)
    PPM > Rozmieść ikony > Pokazuj ikony (odznaczamy)

    Teraz nasz pulpit będzie wyglądał tak samo jednak nie będziemy na nim w stanie nic zrobić. Wiemy jednak, to działanie jest daremne, bowiem nawet jeśli ktoś nie będzie weidział jak pokazać ikony skorzysta z opcji Start. Warto także ukryć pasek start zwężając go po prostu. :)

  • Więc co teraz?
  • Otwieramy więć panel z procesami (Ctrl+Alt+Del) lub po prostu wpisujemy w wierszu poleceń i kończymy proces explorer.exe odpowiedzialny za m.in.: Menu Start, Pulpit.

    Czynności które zrobiliśmy (oprócz zamknięcia procesu explore.exe) zachowają sie jak wiadomo do każdego uruchomienia systemu.

  • A co powiedzieli/robili w tej sytuacji wkręceni?
  • Uczeń Gim: 13lat
    Na początku reset kompa. W wyniku powtarzającego sie problemu wyszedł z hipotezą:
    -Chyba mam wirusa… ;/ +szybki skan Avast :D
    Uczeń klasy mat-fiz-inf (1)
    Reset komputera i niechęć chwalenia sie o tym iż jego komputer jest hmm… nie w pełni sprawny ;D
    Uczeń klasy mat-fiz-inf (2)
    I oto najsprytniejsza metoda radzenia sobie w tego typu problemie buahahah :D
    Skorzystanie z pulpitu w C:\Documents and Settings\Nazwa_użytkownika\Pulpit\

  • Jak bez restartu powrócic do porządku?
  • Robimy od końca:

  • Start > Uruchom > explorer.exe
  • Zmieniamy tapete

To chyba wszystko :)