Historia Pojazdu na Androida

Tym razem wyjątkowo piszę po polsku, bo i sprawa jest typowo polska. Wczoraj na Google Play pojawił się mój program umożliwiający proste sprawdzenie historii pojazdu z poziomu urządzenia w systemem Android. Jak zauważył pewnie każdy czytający polskie serwisy o tematyce IT pod koniec czerwca MSW udostępniło serwis umożliwiający sprawdzenie historii pojazdu przez Internet. Serwis ten stanowi interfejs dostępu do części danych zgromadzonych w bazie CEPiK.

Widok programu pokazującego podstawowe dane pojazdu

Widok programu pokazującego podstawowe dane pojazdu

Tuż po tym jak przetestowałem funkcjonalność tego serwisu, zadałem sobie pytanie: dlaczego by nie zrobić czegoś takiego na telefon. I tak po kilku dniach pisania oddaję do użytku wszystkim program przenoszący ową funkcjonalność na Androida. Program ten rzecz jasna komunikuje się z serwisem ministerialnym. Jako taki wymaga on więc do pobrania danych takich samych danych wejściowych, czyli: aktualnego numeru rejestracyjnego, numeru VIN, daty pierwszej rejestracji oraz, chyba już obowiązkowego we wszystkich formularzach, przepisanego kodu CAPTCHA.

Po wprowadzeniu powyższych danych możliwy jest dostęp do takich informacji jak rok produkcji pojazdu, status jego rejestracji, ważność polisy OC oraz badania technicznego czy też, najbardziej przydatnego chyba (przynajmniej dla potencjalnych kupców danego pojazdu), stanu licznika podczas ostatniego przeglądu. Z tym ostatnim haczyk jest taki, że stan licznika diagności zbierają dopiero od tego roku, jeśli więc auto nie przeszło w tym roku jeszcze przeglądu to musicie obejść się smakiem. Oprócz wymienionych baza udostępnia wiele innych mniej lub bardziej przydatnych danych. Można też pobrać raport w formacie PDF, co również jet funkcją dostępną w oryginalnym serwisie.

W (mam nadzieję niedalekiej) przyszłości mam zamiar dodać kilka funkcji sprawiających, że program ten będzie nieco bardziej atrakcyjny (o ile możliwość użycia smartfona lub tabletu komuś nie wystarcza) niż oryginalny serwis. Kod źródłowy programu jest dostępny (jak zawsze) w serwisie GitHub, dokładniej tu. Udostępniłem go w zasadzie robię z dwóch powodów: po pierwsze zawsze staram się dzielić efektami swojej pracy, po drugie  dane, które powierzą mojej aplikacji użytkownicy są jak by nie patrzeć danymi poufnymi. Dlaczego więc ktoś miałby mi ufać na słowo? Wiem, że takich, niestety, znajdzie się wielu, ale dla tych bardziej uświadomionych technologicznie będzie to dowód, że z ich danymi nie dzieje się nic złego.

Na koniec skoro już jesteśmy przy kwestiach prywatności warto wspomnieć wymagania aplikacji jeżeli chodzi o uprawnienia. Program wymaga dostępu do Internetu (co jest raczej oczywiste) i komunikuje się wyłącznie z serwisem historiapojazdu.gov.pl (niedowiarki niech odpalą sobie emulator i Wiresharka) oraz praw do zapisu na karcie pamięci (wymagane tylko do zapisu PDFa).

BTW: dzisiaj mój GIST powiększył się o prosty programik, napisany w C, jako zadanie z przedmiotu Telekomunikacja, do przesyłania plików przez port szeregowy przy użyciu protokołu XMODEM.

Posted in Uncategorized | Tagged , , , | 2 Comments

SDC file format description and security analysis of SDM

As promised in my previous post I’m publishing description of Microsoft’s SDC file format. At the beginning I’d like to explain what SDC file is. SDC is the abbreviation of Secure Download Cabinet/Secure Digital Container. It is used by Microsoft in its Dreamspark program (formerly MSDNAA). Theoretically it is secure container that can be sent using Internet without additional encryption and it should prevent its content from being read by any third party. But that’s theory, let’s look at how it works in practice.

Overview

Firstly let’s look at the packing process. Let’s say we are in Microsoft and we want to “secure” some data. We got some file (or possibly few files) ie. Windows ISO. Next we generate some random number and write it down somewhere. Now we use least significant byte of that number to do XOR on EVERY single byte of that file. Now it may be considered secure 🙂 But some day Microsoft realized it isn’t enough. So what did they do? They used deflate (it is compression method used ie. in zip, gzip). Actually there are two versions of the deflate: one with all headers necessary to realize method of compression by using a tool like binwalk and the other that haven’t any header. Now it is time to combine all the files we have in one. Of course we still need to know some information about them (ie. their size before/after compression, file name). After concatenation we need to count CRC of all the data we have as of now. And finally we need to build a file header. At first we need to write header size. Then starts actual header. It is important because here starts region that will be encrypted. Here is some info about the header itself and then about each file. It is possibly padded with random data (don’t know for sure). Now we need two random 32-byte keys consisting of printable characters. We use first to encrypt filenames and the second to encrypt whole header (beside its size). Finally we concatenate header with the rest and here we have SDC file.

Header format

Sample header

Sample header

So, we have basic overview on the format, now let’s look at the details. You think it isn’t secure, huh? It would be worse. On the right you can see example header after decryption. First four bytes determine size of the header counting from the next byte. After that we have area encrypted using Blowfish (sometimes referred blowfish-compat) with ECB mode (Electronic CodeBook) using the key stored in edv variable of webpage linked from SDX file. In that area we have 3 dwords describing the header itself. First is header signature. It can be one of the following values: 0xb4, 0xb5, 0xc4, 0xd1. All I know now is that the one with sig = 0xd1 can store files larger than 4 GiB. The next value is interesting one. It looks like it is used to “encrypt” file name in memory so that the static analysis would result in “not found”. As in other cases it is “very advanced encryption”, the same situation as with the whole file: get all the buffer, iterate through it and XOR with the value’s LSB. I have to admit that this one is even does the job. Now we have something called header size. Actually it is probably number of files packed in the container. While reversing I concluded that SDM iterates from 0 to that number, and while this it is reading 0x38 bytes from file. Next it is probably reading fileNameLength and fileName, so whole header must be in format:

<size><description><0x38-bytes-of-file-description><fileNameLength><fileName><0x38...>

and so on until we reach headerSize. Then we have a lot of values not necessary to unpack the file. First of them is offset of file name. While its value is usually 0 (at least in newer headers with blowfish encryption) it is still probably possible to encounter a file with this value greater than zero. If that happened the first thing to do is probably decrypt filename and then move pointer this amount of bytes right. Next value describes file attributes. In fact I didn’t bother about what bit means what attribute, but I suppose it is the same map as in FAT (see my libfatdino library). The next three values are timestamps (creation, access and modification). They all are in Windows 64-bit format called “file time” used for instance by .NET Framework’s DateTime class (DateTime.FromFileTime method; they are number of 100-nanosecond ticks that elapsed since epoch at 1st January 1601 midnight and I suppose that this value is unsigned). That format is very interesting in comparison with another approach of saving date on 64-bit value used on Linux. UNIX timestamp traditionally uses 1st January of 1970 as its epoch and there is usually signed value in use. It isn’t as precise as Windows (counts only seconds) but its end is about 300 billion (10^9) years in future and since it is signed, in past too. Comparing to that Windows’ date will wrap about year 60000 A.C. and cannot store any date before 1601. I know that is still unreachable (like 4 billion computers in 80’s 🙂 but good to know:) After that we have size of the compressed file (be beware of the difference between 64-bit variant and 32-bit one). When we have container with only one file the equation

compressedSize + headerSize + 4 == sdcSize

should always be true. The next one is uncompressed size of the file which can be used to check if the file has been downloaded entirely. After that there is boolean that indicates if file is inflated (compressed), another one-byte value that is probably reserved for future use, one-word padding, which is also interesting because it looks like it contains random numbers (really?). And after that more padding (this time empty) after which we have size of the file name. It may be a bit tricky because the size we have here is the size AFTER decryption and blowfish demands its output to have length divisible by 8. So to decrypt it we need to count next divisor of 8. File name is encrypted using the same method as the header itself and the second key from edv.

Decryption key

Now something more about the keystring (edv). Its format is:

<crc>^^<fileNameKey><headerKey><xorKey>

where:

  • <crc> is a checksum of whole data area of a file (everything beside header size and header)
  • <fileNameKey> is the key used to encrypt file names
  • <headerKey> is the key used to encrypt whole header
  • <xorKey> is the key used to “encrypt” the files

Security of the whole program

People who are familiar with security should already know how insecure is the SDM. For others I have short description.

  1. At first the files itself AREN’T ENCRYPTED in any way. They are only XORed using one byte long key. XOR itself is very weak protection, even with extremely long key. It is due to the fact that many file formats have some of their bytes predictable (this concerns EXEs, ISOs and ZIPs and these are the formats most frequent on Dreamspark). That predictable bytes are usually the beginnings (headers) which usually have so called magic bytes to easily identify file format. So when we know what byte we expect we could try to XOR that byte with actual byte and it is very probable that we get the “encryption” key.
  2. Deflate which is used to hide this patterns from the end user is just compression method. We don’t need anything special to decompress this data.
  3. ECB which is used as blowfish encryption mode is the most insecure mode of block ciphers. It can cause some parts of data to be revealed without actual decryption (see: Wikipedia).
  4. All the data SDM downloads/sends from/to Microsoft’s servers are UNENCRYPTED. Everything: request from the user, SDC itself and decryption keys are all plaintext so with knowledge how SDC looks we can decrypt the file even when it is not intended for us, but we are only in the middle of its road. Furthermore malicious node is able to modify the file on the fly and i.e. put a backdoor into the file, for instance Windows image.

Conclusion

For all the above reasons Secure Download Manager cannot be called a software for securely downloading the files from Microsoft’s servers. All the users using this are the same way INSECURE as users downloading i.e. their copy of Windows from warez sites. Both are susceptible to MITM attacks.

So we still don’t know the answer: why Microsoft is using dedicated software to share their software. The only answer I have is that it is just for making user’s not using Microsoft’s operating system life difficult. In place of decision-making people like the ones in European Commission I would think if this policy is not intended to be only to keep Microsoft’s monopoly for operating system.

Update 20.07.2014

Description updated thanks to GMMan and his great work on reverse engineering the whole program. He also reminded me about older variants of SDC files. I have currently sample(s) of files with 0xb3, 0xb5 and 0xd1 signatures. I know at the moment that there are also signatures 0xa9, 0xb2, 0xb4, 0xc4 and it is possible that they still are reachable through Dreamspark. It is also likely that Microsoft (or Kivuto on Microsoft’s order) will create new format so if you have a sample of file with different header, please let me know in comments!

Posted in Uncategorized | Tagged , , , , , | 2 Comments

Introducing libfatdino – low-level Linux library to handle FAT32 volumes at /dev file level

Today it’s finally time to introduce my first Linux project. Its main function is to provide all functions needed to handle block device formatted using FAT32 volume. For now it is early alpha providing only functions for reading. It also contain simple C++ demo that was used initially for testing. Main program repository is placed on github, so I hope all progress will be immediately uploaded and available for everyone. Whole library has been written in C with building scripts in make so it is possible to port it to every environment including BIOS which is as mentioned below one of its targets. Compilation should also be possible on environments other than Linux i.e. Windows. Important: library’s dependencies are glibc (Linux default so it shouldn’t be problem) and PCRE (found on most of the distributions) and there is no configure script as of now to check their presence so if you haven’t them you will get compilation error!

Starting to write this library I had 2 main goals. First one was to write read/write functions for use under Linux environment. This one will be achieved by completing this library. The second is to rewrite part of this lib responsible for reading to use it in pure BIOS environment. This goal will be the most important step to complete my another project that I won’t introduce here, because of really small amount of work done for now.

But you may ask: why FAT32, filesystem that really is the most ancient fs that is already in use? Answer for this question is relatively easy. The first fact that is in favor of FAT is its simplicity comparing to any modern filesystem that has features like permissions or access control lists. The other one is still considerable prevalence especially on every embedded application as cameras, phones (smart too), USB sticks.

Most of the code written here was based on Microsoft’s whitepaper entitled Microsoft Extensible Firmware Initiative FAT32 File System Specification. Few details that wasn’t included in that document is based on other people’s code found on Google so I couldn’t mention the exact names. The most interesting details that Microsoft’s whitepaper doesn’t contain is:

  • creation date and time values in directory entry structure
  • way that drivers (linux driver too) determine if file or directory that doesn’t contain Long File Name should be lowercase or uppercase
  • last access value encoding; that one is as of now still unsupported, I’ll try to add it after whole project is done

All functions that is already present in the lib has I think sufficiently detailed description on its header file. Their implementation is also present on other functions and on the demo app so I hope that it will not be problem to anyone to use it properly even though some caption in the demo are in Polish. The reason for that Polish strings is that demo was initially not designed to be public. To use that library some knowledge about FAT filesystem is required, because every function doesn’t contain all code needed to perform actions listed below, i.e. function that reads directory content has no code to list that directory and cannot follow cluster chain so that actions must be implemented by programmer that wants to use the lib. Of course following cluster chain is implemented in another function so there is no need to write it from scratch.

Functionalities implemented

  • reading a file
  • reading directory (with LFN support)
  • getting file/dir location based on its path in the filesystem
  • getting file’s properties

Functionalities to be implemented

  • writing to file
  • moving files
  • creating dirs
  • modifying directory entries
  • writing bootloader code to BPB/BS

Functions which operation isn’t visible to end user aren’t listed above so there is still lot of work to do.

Posted in Uncategorized | Tagged , , , , | Leave a comment

Bezprzewodowe zwyczaje Polaków, czyli statystyki siedmiotysięcznej bazy sieci Wi-Fi

Podstawowe dane

Podstawowe dane

Wiem, że są osoby, które posiadają znacznie większą bazę sieci. W większości przypadków zbierają one wyłącznie najbardziej podstawowe dane. Bardzo często ograniczają się do danych takich jak SSID, BSSID, kanał oraz metoda zabezpieczenia. Posiadanie bardziej szczegółowej bazy nie kosztuje mimo to ani zbyt wiele miejsca, ani też nie utrudnia jej przeglądania. Dlaczego więc nie zapisać wszystkich możliwych danych jakie jest się w stanie poznać? Właśnie z takiego założenia wyszedłem tworząc swoją własną bazę sieci. Jeśli tylko zauważam brak jakiegoś elementu od razu staram się go dodać. Efektem ciągłego r

Ranking SSIDów

Ranking SSIDów

ozwoju jest baza wielkości 7K zawierająca wszystko co można dowiedzieć się o sieci nie wyłączając publicznego adresu IP, jeśli mówimy o hotspocie oczywiście:)

Łącznie baza zawiera 7030 rekordów co widać na obrazku obok. Niestety możliwość określania czy dana sieć jest routerem czy też działa na urządzeniu przenośnym jak np. telefon lub jest drukarką nie udostępniającą połączenia z Internetem (Ad-Hoc) dodałem całkiem niedawno więc takich sieci mam w bazie jedynie 59. Nie wszystkie zostały też z tego powodu określone jako Infrastruktura.

Wśród SSIDów parę dni temu pierwszeństwo objął linksys. Niestety tu ze względu na to, że baza jest mimo wszystko jeszcze dość mała trudno jest stwierdzić, który z nich jest tak naprawdę najpopularniejszy. Ja osobiście postawiłbym jednak na FON_NETIA_FREE_INTERNET a to ze względu na to, że jeszcze kilka miesięcy temu nie miałem ani jednej siec

Kanały 2,4 GHz

Kanały 2,4 GHz

i o takiej nazwie. Jeżeli nie słyszałeś czym są sieci o takiej nazwie proponuję odwiedzić np. tą stronę, szczególnie jeśli jesteś jednym z posiadaczy routera od Netii.

Kolejną ciekawą tabelą jest popularność poszczególnych kanałów. Oczywiście to ,że najpopularniejsze są te o numerach 1, 6 i 11 nie jest niczym dziwnym. Praktycznie nie da się zebrać danych tak, aby któryś z nich nie pojawiał się najczęściej. Ciekawsze jest to, że spośród pozostałych wybija się kanał 10. W tym wypadku wyjaśnienie można znaleźć przeglądając sieci działające na tym kanale: ponad 300 z nich stanowią Livebox-y Telekomunikacji, co daje ponad połowę całości. Najciekawsze jednak są dwie sieci działające na kanale 14. Jak wie każdy kto interesuje się zagadnieniem sieci bezprzewodowych kanał ten jest dozwolony na terenie Japonii. W Polsce można korzystać z pozostałych 13 kanałów. Wygląda więc na to, że są to przypadki ewidentnego łamania prawa. Ciekaw jestem jak będzie wyglądała współpraca takiej sieci (a raczej zakłócenia jakie będzie powodowała) z budowaną przez Aero siecią LTE działającą na 2,5 GHz, na które owy kanał się zazębia.

Jeżeli chodzi o rodzaje zabezpieczeń najpopularniejszy ciągle jest WPA-PSK. Niestety tu także mogą jeszcze występować pewne zniekształcenia. Ich powodem jest fakt, że program wykorzystywany do niedawna do zbierania danych (barbelo) nie rozróżniał WPA od WPA2, więc wszystkie znalezione sieci zapisywane były jako WPA-PSK. Jak widać jednak WPA2 już praktycznie przegonił WPA, dzięki czemu można spokojnie uznać, że to on jest najczęściej wykorzystywany. Amatorzy cudzego internetu mimo wszystko nie mają jeszcze najmniejszych powodów do narzekań. Sieci nie używających szyfrowania wciąż jest całkiem sporo i raczej nie zapowiada się żeby te sieci znikły lub zostały ponownie skonfigurowane. Co ciekawe już na samym początku używania aplikacji od WiGLE udało mi się znaleźć kilka sieci używających dość niestandardowe szyfrowanie WPA Enterprise (41

Rodzaje zabezpieczeń

Rodzaje zabezpieczeń

z WPA w wersji pierwszej i 34 w wersji drugiej). Można przypuszczać, że wśród większych użytkowników WiFi typu dużych firm czy uczelni (te drugie raczej przeważały w tym co mam teraz w bazie) dbałość o bezpieczeństwo jest na całkiem wysokim poziomie.

Wśród producentów dłuższy komentarz jest raczej zbyteczny. Tu całość została w ostatnich latach zdominowana przez chińską firmę TP-Link i raczej nie zanosi się na jakiekolwiek zmiany. No chyba, że dogoni go drugi chiński producent – ZTE. Pozostałe marki przestały się już praktycznie liczyć. Po tym których z nich przybywa najczęściej możnaby sądzić, że innych producentów wybierają już tylko firmy. Szczególnie jeśli chodzi o dawnych “władców” tego rynku – D-Linka i Linksysa. Na korzyść producentów z Chin przemawia na dodatek to, że są oni dość często wybierani przez dostawców internetu a to u nich większość użytkowników kupuje sprzęt.

Na deser zostały statystyki poszczególnych miast. Niestety dość trudno jest określić która sieć gdzie leży w

Ranking producentów

Ranking producentów

ięc także te statystyki są niekompletne. Można mimo to założyć, że podane grupy odzwierciedlają całość tym bardziej, że te kolorowe paski raczej się nie zmieniają. Tu reguła wygląda mniej więcej tak, że im większe miasto tym mieszkańcy bardziej są świadomi zagrożeń związanych z korzystaniem z niezabezpieczonej sieci (a może raczej osoby, które te sieci konfigurują bo założę się, że większość użytkowników nie ma o tym najmniejszego pojęcia). Niestety muszę z przykrością stwierdzić, że moje miasto wypada tu najsłabiej. Częściowo ten problem powoduje lokalny dostawca internetu, ale niestety wśród użytkowników także panuje widać przekonanie, że w tak małym mieście nikt im się nie włamie. Oby.

Na tym kończę dość ogólny mimo wszystko przegląd sieci. Być może gdy uda mi się zebrać więcej danych pokuszę się o kolejne podsumowanie. Takie coś dość dobrze odzwierciedliłoby zmiany we wszystkich poruszonych zagadnieniach. No cóż, w każdym razie nic jeszcze nie obiecuję.

Podział na miasta

Podział na miasta

Posted in Uncategorized | Tagged , , , , , , , , | Leave a comment

Nowy program w dziale projekty: POLcheck

POLcheck jest programem umożliwiającym sprawdzenie poprawności oraz odczytanie zakodowanych danych z polskich numerów identyfikacyjnych. Do numerów tych należą PESEL, NIP, REGON oraz księga wieczysta. Przy pisaniu tego programu ograniczyłem się tylko do możliwości walidacji oraz odczytywania danych chociaż jeden z poprzednich programów –myPESEL miał możliwość także ich generowania. Zrobiłem tak, bo funkcja tworzenia fałszywych numerów jest raczej mało popularna, a jej dołączenie do tego programu wydłużyłoby tylko czas potrzebny na jego stworzenie.

Względem wszystkich poprzednich programów na Windowsa jakie napisałem do tej pory ten wyróżnia się wykorzystaniem biblioteki sqlite. Do tej pory żaden z ukończonych programów (wśród tych, których nigdy nie skończyłem zdarzały się próby wykorzystania DLLek) nie korzystał z żadnej z bibliotek. Tym razem okazało się, że ułatwiła mi ona bardzo pracę. Została wykorzystana do obsługi baz danych na temat NIPów, REGONów oraz ksiąg wieczystych. Dzięki niej możliwe jest też łatwe aktualizowanie baz, które stworzyłem (a te są dość niekompletne ze względu na dużą ilość danych jakie trzebaby do nich wprowadzić). Oczywiście każda pomoc w uzupełnianiu baz NIP i REGON jest mile widziana. Niestety wykorzystanie sqlite-a sprawiło, że program waży o wiele więcej niż inne moje projekty (prawie 2 mega).

Aktualizacje do programu będą udostępniane w dziale projekty, a dokładniej tu.

Posted in Uncategorized | Tagged , , , , , , | Leave a comment

SysMonitor [moved from articles]

SysMonitor is a simple tool that displays basic informations about system. It can monitor CPU usage, avalaible RAM and disk space. It shows system uptime too. It also could log system start and shutdown time. Program was made as a system tray (notification area) icon and notification window.

Program requires at least Windows Vista to run. That restriction was necessary cause it uses styles avalaible only on that and newer systems. Program looks best while Windows Aero is active but it will work also without it. That’s the first my program that has languge module so it is possible to translate it to any language. By default there are only Polish and English translation cause I don’t speak any other language but if you could translate it to your native language and send me translation file I will for sure add it to main package. If so I gurantee that your name/nick will be visible in about window.

Update 11.09.2013: moved to main page while closing articles section

Posted in Uncategorized | Tagged , | Leave a comment

Category for English-speaking users [moved from articles]

Today I’m opening category for users who don’t know Polish but wants to use my programs. I won’t post here information about every project I made. In this page there will be only projects which has their interface translated to English. As you may read in first project added here – SysMonitor while creating it I successfully implemented language module to that project so I would probably include it to any bigger project I would finish in future. By the way every app that you can find in this section can be easily translated to any language so if you could translate any app to your native languge, please do it and send me translation file!. I don’t know if it is possible to use non-latin characters cause I don’t know any languge beside Polish and English.

Update 11.09.2013: moved to main page while closing articles section

Posted in Uncategorized | Tagged | Leave a comment

Android – pierwsze wrażenia z przesiadki na nowoczesny smartfon

Niedawno minął miesiąc odkąd stałem się użytkownikiem smartfona z tym systemem. Platforma ta ma oczywiście mnóstwo zalet i stanowi znaczny postęp w stosunku do używanego przeze mnie do tej pory Symbiana. Zalety te są niewątpliwe i nie będę się na ich temat rozpisywał. Zamiast tego zajmę się tym co nie działa tak jak powinno lub w Symbianie było rozwiązane lepiej niż tu.

Jeżeli chodzi o sam telefon to nie miałem zbyt dużego wyboru, bo jako warunek konieczny uznałem klawiaturę QWERTY, która nie jest zbyt popularna więc i ilość modeli była dość ograniczona. Ostatecznie padło na SE Xperia Pro co już teraz mogę powiedzieć było strzałem w dziesiątkę bo jak się okazało jedyne środowisko umożliwaiające pisanie programów dla Androida bezpośrednio na Androidzie nie ma wirtualnej klawiatury a dzięki temu, że mam fizyczną to nie jest dla mnie problemem więc będę mógł pisać apki bez testowania ich najpierw na emulatorze. Zacznę jednak od początku.

wifi

Pierwsze niemiłe zaskoczenie spotkało mnie już dosłownie po paru sekundach po włączeniu telefonu. Każdy nowoczesny telefon byłby bezużyteczny gdyby nie posiadał dostępu do Internetu. Pierwszą rzeczą bylo więc połączenie się z domowym routerem. I tu właśnie spotkało mnie owo niemiłe zaskoczenie. Odnalezienie ustawień sieci nie było problemem mimo, że jest według mnie bardziej skomplikowane niż w wypadku starej dobrej Nokii. Potem jednak okazało się, że telefon nie widzi mojego routera mimo, że znajdował się w odległości metra od niego. Jak się później okazało model ten (nie wiem czy to ogólny problem wszystkich zielonych robotów) jest przystosowany do przepisów chyba wszystkich krajów w jakich jest oferowany czego konsekwencją jest to, że moduł wifi (albo jego soft) obsługuje tylko te kanały, które są dozwolone wszędzie,czyli te z numerami od 1 do 11. Oczywiście mój router, aby nie zakłócały go routery sąsiadów działał na mało popularnym kanale 13 co było powodem braku jego widoczności.

Menadźer plików

Kolejny problem popjawił się niewiele później. Jak na kogoś kto wie co nieco o bezpieczeństwie router mam zabezpieczony hasłem o maksymalnej długości(63 znaki, w tym znaki specjalne). Nie chcąc przepisywać tego czegoś ręcznie przeniosłem plik z hasłem na kartę pamięci. Następnie zacząłem przeglądać menu w poszukiwaniu jakiegoś menadżera, który byłby w stanie odczytać plik z karty. Co się okazało nic tego typu nie jest preinstalowane na urządzeniu!!! Już w starym Symbianie taka funkcja była dostępna na czystym systemie. Jak się później okazało część funkcjonalności eksploratora przejął program o nazwie OfficeSuite. Sprytne. Ciekawe tylko kto na to wpadnie nie włączając wszystkich programów po kolei albo nie czytając instrukcji, której tak naprawdę nie ma (w pudełku jest tylko standardowy QuickStart Guide i info, że instrukcja jest dostępna na stronie producenta). Ostatecznie więc musiałem przepisać hasło ręcznie (OfficeSuite’a znalazłem potem) za co system dostałby ode mnie kolejnego minusa.

Google Play

Właściwie powinienem o tym czymś napisać dopiero później bo najwięcej problemów zaczął robić dopiero po rootowaniu systemu, ale napiszę już teraz jako, że póki co piszę o czynnościach dla mniej technicznych użytkowników. Oczywiście nie spodziewałem się po Google nic więcej. Program ten do działania wymaga zalogowania się na konto Google a więc de facto to jakie mamy zainstalowane apki dołącza do ogromnej bazy danych jakie ten gigant przechowuje na nasz temat. W moim wypadku są to jedynie maile na konto na które loguję się tylko przez Tora i to raz na miesiąc albo i rzadziej więc dla mnie to żaden problem. W normalnej sytuacji ograniczenie pobierania aplikacji wyłącznie do urządzeń z Androidem z powiązanym kontem Google nie stanowiłoby problemu jednak po zrootowaniu znów pilnie potrzebowałem Menadżera plików, aby odczytać hasło do wifi z pliku na karcie. Oczywiście było to niemożliwe! Tym razem udało mi się dojść czym jest ten cały OfficeSuite.

Root

Jako użytkownik potrzebujący z każdej platformy nieco więcej niż jest w stanie dać producent po paru dniach zabawy i zapoznawania się z systemem przyszedł czas na rootowanie systemu. Znalezienie dobrego poradnika jak tego dokonać nie stanowiło większego problemu. Użyłem tego napisanego przez Zeely’ego jako że był po polsku czym dawał gwarancję, że po całej operacji będę nadal miał systemu w tym języku. I tu znowu kolejne bezsensowne utrudnienie ze strony producenta. Aby dokonać całej operacji należy zainstalować starszy firmware, bo w najnowszym luka pozwalająca rootowanie została załatana. Szkoda tylko, że aktualizacja do ICS nie przebiega w równie szybkim tempie jak ta blokująca uwalnianie systemu. Oczywiście downgrade spowodował, że wszystkie ustawienia, zainstalowane programy itp. przepadły “dzięki” czemu musiałem od nowa ustanawiać połączenie internetowe. Google Play zapamiętał wszystkie programy, które miałem zainstalowane za co tu muszę go pochwalić. Nie usprawiedliwia to i tak trzymania tego typu danych na czyimś (tu: Google’a) serwerze. Po pomyślnym zrootowaniu urządzenia przyszedł czas na ClockworkMod Recovery. Tu też użyłem poradnika od Zeely’ego, bo był akurat pod ręką. Ta część nie sprawiała żadnych problemów, zapewne dlatego, że Google nie mogło maczać w tym swoich palców. Po instalacji przyszedł czas na backup (bo do tego ten program zainstalowałem).

GPS

Następnym krokiem ku używalności nowej zabawki było znalezienie programu do skanowania sieci wifi. Ponieważ jak każdy współczesny telefon tak i ten ma wbudowany moduł GPS skanowanie takie powinno oczywiście odbywać się wraz z logowaniem współrzędnych sieci. I tu oczywiście pojawia się kolejna Googlowa niespodzianka. Jak większość bzdur wprowadzonych przez tą firmę ma oczywiście wpływ na prywatność użytkowników. Mianowicie po zaznaczeniu opcji używania GPSa do lokalizacji pojawia się informacja o konieczności zgody na anonimowe wysyłanie danych (WTF?). Ale dobra wifi poza zasięgiem, karty SIM nie ma więc zgadzam się, niech stracę.

Wardriving

Tu Android wypada jednym słowem żałośnie. Po systemie opartym na linuksie można się spodziewać, że aplikacji do wyszukiwania i przede wszystkim zapisywania sieci z okolicy będzie mnóstwo. Okazuje się jednak, że tego typu narzędzia można policzyć na palcach jednej ręki (no chyba, że nie umiem szukać tak jak przy Symbianie gdzie znalezienie barbelo zajęło mi parę tygodni). Jedyny program, który wydawał mi się do przyjęcia (chociaż na pewno nie dobry) to G-mon powiązany z jakimś niemieckim forum wardriverów. Cóż, nie mając innego wyboru zainstalowałem to coś. Niestety po paru skanach zaczął o sobie przypominać ten nieszczęsny GPS. Nie wiem czy to normalne aby do odnalezienia pozycji potrzebe było aż 12 satelit?

Firewall

Element niezbędny tym bardziej, że coraz częściej słyszy się o szpiegujących aplikacjach a nawet potencjalnym wykorzystaniu nowoczesnych telefonów jako pluskiew. Swoją drogą takie CIA czy NSA pewnie nawet nie marzyła kiedyś o tym, że nastaną takie czasy, że praktycznie każdy będzie nosił w kieszeni podsłuch możliwy do aktywowania w każdym momencie (a nie wierzę żeby amerykańskie służby nie były w stanie zmusić amerykańskiej firmy do wbudowania jakiegoś backdoora, niby to OpenSource ale przecież są w Androidzie też dodatki od producentów, które OpenSource już nie są). W każdym razie początkowo jako Firewalla używałem Avasta, do którego jakoś przyzwyczaiłem się przez parę dobrych lat korzystania z niego na desktopie. Później jednak zauważyłem, że po ustawieniu trybu białej listy nie mogę pobrać nic z marketu więc zdezaktywowałem zaporę w Avaście i zainstalowałem DroidWall, w którym udało mi się znaleźć program, który był odpowiedzialny za pobieranie programów (oczywiście pomogła mi funkcja wyświetlania logów, tak jak w poprzednim wpisie, co potwierdza wniosek z jego końca).

Pulpit

Na koniec praktycznie parę dni temu zainstalowałem GoLauncher EX zastępujący domyślny pupit dostarczany przez SonyEricssona. Ciągle jednak nie pasuje mi sposób uruchamiania latarki, która czasami się przydaje a teraz żeby ją włączyć muszę odblokować ekran co wydaje mi się zbędne. Jako, że zdążyłem się już nauczyć co nieco programowania pewnie jeszcze spróbuję sobie poradzić z tym problemem, ale to już będzie temat na osobny wpis.

Posted in Uncategorized | Tagged , , , , , , , , , , , | Leave a comment

Krótki przegląd botów internetowych, czyli co oprócz ludzi generuje ruch na stronie

Już od ponad dwóch lat na stronie zainstalowany jest skrypt statystyk, dzięki któremu mam możliwość podglądania kto do mnie trafia. Jak pewnie każdy, kto miał dostęp do statystyk jakiejkolwiek strony wie oprócz ludzi trafiają się też różnego rodzaju boty. Niektóre źródła mówią nawet, że my – ludzie staliśmy się w sieci mniejszością! Większość osób przeglądających internet nie ma świadomości istnienia prawie żadnego z nich (zwykły user zna najwyżej Googlebota, coniektórzy być może jeszcze słyszeli o Bingbocie). Jako administrator tej małej bo małej, ale jednak witryny mam szansę dowiedzieć się na temat działalności tych złodziei transferu nieco więcej.

W internecie niewiele można się dowiedzieć o dużej ich części, czasami jedynym źródłem są fora intenetowe, na których inny admin szuka odpowiedzi na to czym jest dany bot i czy ewentualnie należy go blokować. Postarałem się zebrać informacje o tych, które mnie odwiedziły w bliższej lub odleglejszej przeszłości, więc niektóre mogły już przestać działać. Zaczynamy od najbardziej oczywistej pozycji jaką jest bot Google.

Googlebot

Tu nie ma się co rozpisywać: jest to bot opracowany i hostowany przez Google i ma na celu zbieranie danych do googlowej wyszukiwarki. Występuje też w wariantach Mobile i Images. Przykładowe UserAgenty: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html), Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html), Googlebot-Image/1.0.

Bingbot

W zasadzie niczym nie różni się od Googlebota, zajmuje się indeksowaniem z tym, że dla konkurencyjnego rozwiązania od Microsoftu – Binga. Przykładowy UserAgent: Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm).

MSNbot

Bot, który służył do indeksowania sieci dla wyszukiwarki MSN. Obecnie został zastąpiony przez Bingbota. Przykładowy UserAgent: msnbot-media/1.1 (+http://search.msn.com/msnbot.htm).

MJ12Bot

Dość aktywny ostatnio bot. Na stronie dołączonej do UserAgenta można się dowiedzieć, że działa on w celu stworzenia wyszukiwarki. Nie ma on stałego adresu lub grupy adresów IP, może być uruchomiony przez każdego. Kto wie może będzie kiedyś konkurencją dla Google. Na razie wśród najaktywniejszych botów zajmuje miejsce trzecie, zaraz za Googlebotem i Bingbotem. Przykładowy UserAgent: Mozilla/5.0 (compatible; MJ12bot/v1.4.2; http://www.majestic12.co.uk/bot.php?+).

Twiceler

Bot wraz z towarzyszącą mu wyszukiwarką: cuil.com został stworzony przez byłych pracowników Google. Od początku swojej działalności wzbudzał kontrowersje wśród administratorów. Nie można go było zablokować przez plik robots.txt. Bot zniknął z sieci w 2010 roku. Przykładowy UserAgent: Mozilla/5.0 (Twiceler-0.9 http://www.cuil.com/twiceler/robot.html).

Yahoo! Slurp, YandexBot, Baiduspider

Boty indeksujące dla wyszukiwarek odpowiednio Yahoo!, rosyjskiego Yandexa oraz chińskiego Baidu. Działają podobnie jak boty Google czy Binga. Przykładowe UserAgenty: Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp), Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots), Baiduspider+(+http://www.baidu.com/search/spider.htm).

Dot TK – spider

Niewiele można znaleźć w Google na temat tego bota. Sądząc po nazwie odwiedza on tylko strony w domenie .tk. Bardzo prawdopodobne, że należy do registara tej domeny. Przykładowy UserAgent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2010033101 Gentoo Firefox/3.0.5 (Dot TK – spider 3.0).

W3C Validator

Bot sprawdzający poprawność HTMLa oraz CSSa na stronach. Jeżeli znalazł się w logach to znaczy, że ktoś sprawdzał czy strona nie zawiera błędów składniowych. Przykładowy UserAgent: W3C_Validator/1.1.

Speedy Spider

Trzeci małoznany bot, którego celem jest stworzenie wyszukiwarki. Dostarcza dane do strony entireweb.com. Wydaje się, że respektuje wpisy z robots.txt i nie przynosi większych szkód dla stron. Przykładowy UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) Speedy Spider (http://www.entireweb.com/about/search_tech/speedy_spider/).

ia_archiver

Bot należący do Alexa – rankingu najpopularniejszych stron. Zbiera dane w celu dostarczenia informacji o danej stronie. Przykładowy UserAgent: ia_archiver (+http://www.alexa.com/site/help/webmasters; crawler@alexa.com).

Search17Bot

Czwarty już bot , o którym mało kto słyszał a którego zadaniem jest dostarczenie danych wyszukiwarce. Strona linkowana w UA informuje, że bot stosuje się do wpisów w robots.txt. Przykładowy UserAgent: Mozilla/5.0 (compatible; Search17Bot/1.1; http://www.search17.com/bot.php).

Website Explorer

Tym botem zaczynamy grupę dość tajemniczych programów. Google nie zwraca na jego temat żadnych czytelnych informacji, większość wyników po wyszukaniu UserAgenta jest w języku japońskim co pozwala sądzić, że to jest źródło tego bota. Ostrożnym radzę zablokować. Przykładowy UserAgent: Website Explorer/0.9.9.9.

GSLFbot

Ten bot również nie przedstawia na swój temat żadnych informacji. Wyszukując go w Googlach można się dowiedzieć, że nie respektuje pliku robots.txt oraz może powodować DoS – zalecany ban. Przykładowy UserAgent: GSLFbot.

SWAT Crawler

Rodzimy projekt krakowskiego AGH. Jest to tak jak dwa poprzednie bot program dość tajemniczy. Na stronie AGH trudno znaleźć informacje do czego jest on wykorzystywany. Jedyne co udało mi się o nim dowiedzieć to rozwinięcie skrótu SWAT – System Wyszukiwania i Analizy Treści. Biorąc pod uwagę ostatnie zamieszanie ze stworzonym przez ową uczelnię projektem INDECT można przypuszczać, że bot ten ma z nim jakiś związek. Przykładowy UserAgent: SWAT Crawler. AGH University project. In case of problem contact: opal@tempus.metal.agh.edu.pl. Thanks..

NetcraftSurveyAgent

Bot, którego celem zdaje się być tworzenie statystyk użycia poszczególnych daemonów www. Poza tym nie informuje o tym do czego służy jak robi np. Search17 czy Speedy Spider oraz używa AmazonAWS przez co dla wielu witryn staje się niedostępny, gdyż chmura ta jest źródłem wielu innych botów niekoniecznie tworzących wyszukiwarki. Przykładowy UserAgent: Mozilla/5.0 (compatible; NetcraftSurveyAgent/1.0; +info@netcraft.com).

XML Sitemaps Generator

Służy do generowania map witryn. Jego odwiedziny oznaczają, że ktoś stworzył właśnie mapę witryny. Taka mapa może posłużyć jako mapa dla Google Webmaster Tools, więc dobrze jest się upewnić, że witryna jest tam zweryfikowana dla naszego konta. Przykładowy UserAgent: Mozilla/5.0 (compatible; XML Sitemaps Generator; http://www.xml-sitemaps.com) Gecko XML-Sitemaps/1.0.

facebookexternalhit

A teraz czas na najciekawszy chyba okaz w tym zestawieniu. Po odwiedzinach tego oto bota mogłoby się wydawać, że Facebook planuje konkurować z Google na polu wyszukiwarek. Nic bardziej mylnego. Po odwiedzeniu podlinkowanej strony dowiadujemy się, że ktoś właśnie podzielił się na Facebooku linkiem do naszej witryny. Dla mnie osobiście jako osobie, która nie ma tam swojego konta jest to bardzo przydatna informacja, ale czy wysyłając do znajomego link do jakiejś mało popularnej strony chcielibyście, aby jej admin został natychmiast o tym fakcie poinformowany. Ja niekoniecznie. Z drugiej jednak strony taka informacja nie jest w stanie pomóc w odszukaniu osoby, która to zrobiła, więc nie narusza to niczyjej prywatności, której zresztą użytkownicy tego portalu i tak nie mają. Przykładowy UserAgent: facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php).

Czy to już wszystko?

Oczywiście, że nie. W internecie krąży tak wiele różnego rodzaju botów, że trudno byłoby zebrać je wszystkie i napisać na temat każdego z nich choćby dwóch zdań. Zawarłem tylko te, które odwiedziły kiedyś tę stronę. Już przy samym wyszukiwaniu informacji o nich można się zorientować, że to tylko wierzchołek góry lodowej. Poza tymi, które identyfikują się swoją nazwą można też znaleźć takie, które przedstawiają się jako zwykłe przeglądarki a także te używające standardowych agentów bibliotek takich jak Indy czy też perlowych lub pythonowych. Niektóre ich UA to: Mozilla/3.0 (compatible; Indy Library), libwww-perl/5.823, Python-urllib/2.6, gnu-classpath/0.98 (libgcj/4.4.5). Niestety te boty, które należą do którejś z tych dwóch grup zazwyczaj nie robią to w celu indeksowania witryn, ale często szukają podatności jak pewien “chińczyk” lub kopiują treść witryn w celu serwowania treści u siebie w towarzystwie nachalnych reklam przynoszących nie do końca uczciwe zyski. Niestety przed nimi nie ma praktycznie żadnego skutecznego zabezpieczenia. Można banować UserAgenty należące do wymienionych bibliotek lub konkretne adresy IP, ale to nigdy nie rozwiąże problemu do końca.

Posted in Uncategorized | Tagged , , , , , , , , , , , , , , , | Leave a comment

Patenty, NSA i kolejna aplikacja do pobrania

Co wspólnego mają te 3 rzeczy? Otóż jakiś czas temu całkiem przypadkiem (żeby nie było, że mam zamiar wtrącać się w to co kombinuje wymieniona w tytule agencja) dowiedziałem się bardzo interesującego dla mnie faktu związanego z patentami (stąd tytuł). Jak można dowiedzieć się z Wikipedii agencja ta ma bardzo interesujące przywileje jeśli chodzi o przyznawanie patentów. Wygląda to tak, że gdy agencji przyznany zostaje patent nie zostaje on opublikowany. Jego publikacja następuje dopiero, gdy o podobny patent zacznie ubiegać się ktoś inny. Po szybkim wyszukaniu w bazie amerykańskiego biura patentowego (USPTO) można zauważyć, że taka sytuacja zdarzyła się od 1976 roku (bo tylko ten okres obejmuje baza) już prawie 200 razy.

Jako, że przeglądanie tych patentów w całości jest delikatnie mówiąc uciążliwe (po co amerykanie mieliby to komuś ułatwiać) postanowiłem napisać program, który by mi tą czynność ułatwił. Po paru tygodniach pisania i kilkukrotnego przerywania pracy na rzecz bardziej interesujących zajęć udało mi się stworzyć takie oto coś. Nazywa to się Bot patentowy i umożliwia zapisanie wybranego patentu (tylko amerykańskiego) na dysku. Do wyboru jest wersja TIF oraz HTML (ta druga to praktycznie czysty tekst, bez ilustracji). Ułatwia to życie o tyle, że teraz nie trzeba każdej strony z osobna zapisywać na dysku, żeby móc ją sobie obejrzeć, bo wszystkie strony zapisują się do jednego folderu i można je wygodnie przeglądać z użyciem systemowej przeglądarki obrazów. Wracając jednak do NSA to nigdy nie wiadomo co można znaleźć wśród tych wszystkich patentów a posiadanie wersji offline nie powinno mi raczej zaszkodzić. Pierwszy interesujący przykład podaje już sama Wikipedia i jest to sposób na lokalizację geograficzną komputerów w sieci takiej jak internet. Zawsze dobrze jest wiedzieć co służby mogą się o nas dowiedzieć w tym wypadku mając jedynie nasz adres IP. Kończąc już program można jak zawsze pobrać z działu Projekty lub klikając tu.

Posted in Uncategorized | Tagged , , , , | Leave a comment
« Older
Newer »