User:Michal.Palcek Zistenie informácií o produkte na internete Cieľom projektu je vytvorenie nástroja, ktorý by umožnil vyhľadávanie, zisťovanie a vyhodnotenie informácií o produkte na internete. Pre projekt som vybral produkt spoločnosti ESET NOD32 Antivirus (prípadne ESET Smart Security). Tento populárny antivírusový softvér je mnohokrát používaný nelegálne a to bude základným predpokladom pre môj projekt. V projekte sa zameriam na zistenie nelegálneho šírenia jeho kópií. Motivácia Motiváciou pre vypracovanie takého projektu bol impulz môjho zamestnávateľa, pre ktorého by softvér znamenal prínos nových inovatívnych riešení. Nemalou mierou bola motivácia aj moja vlastná iniciatíva s vidinou využitia takéhoto softvéru v budúcnosti (ak sa mi podarí úspešne pretvoriť myšlienky na reálny softvér). Existujúce práce Podobným problémom sa vo svojej práci zaoberali Scott Wolchok and J.Alex Halderman, ktorý crawlovali torrent siete za účelom ukázania majiteľom chránených obsahov ako môžu zistiť a bojovať proti nelegálnemu šireniu ich obsahu (http://www.usenix.org/events/woot10/tech/full_papers/wolchok.pdf). Zdroj dát Dáta pre projekt získam použitím Goole API pre vyhľadávanie z ktorého očakávam výsledky ako pri normálnom webovom vyhľadávaní. Pre vyhľadávanie budem používať ako základ názov produktu s rôznymi kľúčovými slovami, ktoré by nám mohli pomôcť pri vyhľadávaní produktu, ktorý je šírený nelegálne, napr.: "eset nod32 antivirus" a "crack", "key", "keygen", "cracked". Určenie ne/legálnosti V prípade, že nám vyhľadávač vráti výsledky na stránky, ktoré softvér distribuujú legálne očakávame, že na stránkach nebudú žiadne kľúčové slová, ktoré by mohli naznačovať nelegálnosť. Ďalším veľmi dôležitým faktom je výskyt adresy na stiahnutie produktu. Na "warez" fórach bývajú odkazy na stiahnutie smerované na file hostingové servery ako rapidshare, uloz.to, hellshare a pod. Dôležitým poznatkom je súčasné šírenie produktu: spoločnosť ESET ako tvorca produktu,
lokálni a globálni reselleri, podporvatelia, softvérové portály, prostredníctvom "warez" fór a iných výmenných sietí. Šírenie prostredníctvom "warez" fór je často nelegálne, pretože používatelia šíria softvér aj s "crackom", alebo nástrojmy ako obísť ochranu softvéru. Používaté metódy a techniky v projekte Google API, Extrakcia linkov, Výskyt kľučových slov. Implementácia Pre implementáciu aplikácie som si vybral jazyk Java, kvôli jeho prenositeľnosti a použitelnosti na viacerých platformách. Veľký dôraz som kládol na jednoduchosť inštalácie, spustenia a ovládania aplikácie. Aplikáciu som vyvýjal v prostredí NetBeans. Popis riešenia Hlavným modulom aplikácie je modul pre crawlovanie stránok a vyhodnocovanie nelegálnosti. Aplikácia v prvej verzií bola vytvorená ako konzolová, ale po požiadavke možnosti zastavenia procesu analýzy som vytvoril aplikácií jedno jednoduché okno s jedným tlačidlom a textom: ziob.png Tlačidlo umožňuje proces analýzy zastaviť. Po zastavení sa aplikácia ukončí a opätovné spustenie (pokračovanie) analýzy je možné spustením aplikácie s parametrom -resume. Prispôsobovanie aplikácie je možné len prostredníctvom definovania parametrov pri spustení: -resume = pokračovanie v prerušenej analýze, -google = použitie Google Search API pre získanie výsledkov vyhľadávania (spustenie bez tohto parametra spôsobí načítanie výsledkov zo súboru - čo je vhodné najmä pre testovanie), -nocrawl = parameter spôsobí, že aplikácia len načíta výsledky vyhľadávania (používané hlavne v kombinácií -google pri testovaní) a nebude vykonávať analýzu, -depth:x = nastavenie hĺbky crawlovania, X = číslo, -pages:xx = nastavenie počtu strán z ktorých sa preberú výsledky pri vyhľadávaní prostredníctvom Google Search API.
-log = parameter spôsobí, že aplikácia po ukončení analýzy uloží log analýzy do súboru. Štart programu Aplikácia sa spúšťa pomocou dávkových súborov (.bat) v ktorých môžu byť zapísané modifikátory (parametre). Po spustení aplikácia načíta vstupné dáta zo súborov: search_words.txt - zoznam fráz pre hľadenie prostredníctvom Google, whitelist.txt - zoznam dôveryhodných domén, blacklist.txt - zoznam nedôveryhodných domén, trusted_file_types.txt - zoznam dôveryhodných typov súborov, keywords_anchor.txt - zoznam kľúčových slov pre anchor texty, keywords_url.txt - zoznam kľúčových slov pre web adresy, keywords_page.txt - zoznam kľúčových slov hľadaných na stránke, cross_keywords_anchor.txt - zoznam kľúčových slov anchor textov pre krížovú analýzu, cross_keywords_url.txt - zoznam kľúčových slov pre web adresy pre krížovú analýzu. Získanie URL adries pre crawlovanie Po načítaní vstupných dát, program vykoná HTTP dopyt na Google Search Ajax API s jednotlivými načítanými kľúčovými frázami. Výsledkom sú prijaté výsledky vyhľadávania vo formáte JSON, z ktorých sa prostredníctvom JSON objektu (json.org) načítajú url adresy nájdených stránok. Adresy sa následne testujú na výskyt v zozname dôveryhodných a nedôveryhodných domén. V prípade ak sa adresa nenachádza ani v jednom zozname je skontrolovaná či už nie je zaradená do zoznamu adries pre crawlovanie - ak nie zaradí sa. Crawlovanie a rozhodovanie Na získaný zoznam url adries sa aplikuje algoritmus crawlovania, ktorý vyhodnocuje potencionálne nelegálne šírenie produktu. Všetky navštívené stránky sa ukladajú do zoznamu a algoritmus nenavštívi jednu stránku dva krát. Predpoklady pre vyhodnocovanie rozhodovania som stanovil nasledovne: 1. na stránke je priamy odkaz na stiahnutie ZIP/RAR archvívu ktoré anchor text zahŕňa niektoré z kľúčových slov, 2. po precravlovaní stránky a podstránok je možné na určitý počet klikov (1,2,3) nájsť ZIP/RAR podľa bodu 1.
3. odkazy s anchor textom obsahujúce niektoré kľúčové slová smerujú na filehostingové servery. Analýza prebieha v niekoľkých krokoch: 1. Po načítaní stránky, sa na celej stránke vyhľadajú pomocou regulárnych výrazov kľúčové slová určené pre stránky. Predpokladom pre toto hľadanie je spracovávanie aj javascriptových súborov, ktoré neobsahujú žiadne tagy <a href=""></a>, ale môžu obsahovať generátory linkov, ktoré nie je možné zistiť bez vykonania javascriptu. 2. Následne prebehne extrakcia <a href=""></a> (ďalej len ako HREF linky) linkov, meta linkov (v záhlavý stránky, napr. css, javascript) (META linky) a kontrolná extrakcia všetkých HTTP(S) linkov (HTTP linky). Ako prioritné som určil HREF linky, ktoré sú doplnené o všetky META a HTTP linky, tak aby sa v zozname nenachádzala jedna adresa dva krát. 3. Množina získaných adries je očistená od adries smerujúcich na obrázky, kaskádové štýly, videá a pod - zoznam dôveryhodných typov súborov. 4. Na získaný zoznam adries sa aplikuje postupne hľadanie kľúčových slov pre web adresy (HREF, META, HTTP). Ak je kontrolovaná adresa typu HREF a prešla testom, nasleduje hľadanie kľúčových slov pre anchor text. Ak vyhovie aj testu anchor textu, aplikuje sa na ňu krížový algoritmus, ktorý testuje výskyt kombinácií kľúčových slov z cross_ súborov. 5. Adresa sa vyhodnocuje ako nelegálne šíriaca neprejdením jedného z testov. Program rozlišuje dve úrovne vyhodnotenia: Označenie ako potencionálne nelegálne šírenie (stránka nemusí byť 100% nelegálne šíriaca kópiu) a Prehlásenie za nelegálne šíriaca (analyzer vyhodnotil stránku na 100%) 6. Na každú adresu sa následne pustí rekurzívny crawler, ktorý načítava aj javascriptové súbory. Testovanie úspešnosti Programu som podstrčil 20 náhodných url adries na odtestovanie úspešnosti. Adresy sa skladali z bežných často navštevovaných slovenských stránok, zo stránok, ktoré nelegálne šírili iný konkurenčný softvér, adresy warez fór, adresy ktoré šírili produkt nelegálne a adresy softvérových portálov. Hĺbku crawlovania som nastavil na 1. Po skontrolovaní stránok som zistil, že program označil 4 linky z 20 naviac ako mal a všetky linky nelegálne šíriace obsah označil správne. Počet relevantných výsledkov = 10 Počet vrátených výsledkov = 14
Prienik relevantných vrátených výsledkov = 10 Precision = 10/14 = 5/7 = 0,71% Recall = 10/10 = 100% Problémy Problémy som zistil v nasledujúcich prípadoch: linka obsahujúca všetky názvy antivírusových programov: "McAfee mc afee Bitdefender Norton AVG Norman Kaspersky Webroot NOD32 Trend Micro F-Secure ALL Anti Virus KeyGen Serial Key Crack - FIX WORKS!!.zip" Javascriptová metóda serialize obsahuje slovo "serial", ktoré bolo v kombinácií s eset na niektorých stránkach nesprávne označené. dynamický obsah stránok, analyzer označil stránku na ktorej nebolo nič čo bolo v logu