HWK — Lucruri practice

Hai sa fim practici!
RSS icon Email icon Home icon
  • Nokia E55 034.001 HACKED - RomPatcher 2.3

    Posted on February 11th, 2010 admin 78 comments

    This tutorial will explain how to hack your Nokia E55 with the latest firmware on it 034.001. This might be an opportunity to upgrade to the latest firmware version available right now (07.06.2010) and is compatible with the previous firmware version 033.012 .  This method uses a firmware “patch”.

    On Windows 7  it has been reported that the drivers won’t work correctly.

    The patch for the new version 034.001 is posted bellow.

    For version 034.001 use the same procedure as for  031.012 version.

    Update 02.04.2010:

    • Fixed buggy patch file which removed Youtube, Facebook and MySpace widgets.
    • If you wish to flash your phone with JAF just copy the files from rm482-033.022-patch directory (is found in patch archive) into the Nokia firmware folder of your E55 (usually is here: C:\Program Files\Common Files\Nokia\DataPackage\Products\RM-482). Replace the current files in the fw folder or make a backup of the older ones first. The files which are replaced are: rm482_033.002_U000.000_prd.uda.fpsx and rm482_033.002_U001.000_prd.uda.fpsx.
      Notice:
      by doing this you won’t be able to flash with Pheonix.
      I recomend that you avoid this method and use the Pheonix method described bellow in this article, or if you want to use JAF select the CNT file separately, in the directory where you extracted the patch files.

    To get this job over with you need the folowing:

    1. Pheonix Service Suite. Get it from here:

    2. The firmware files for your E55 with the right version. Get it from here:

    3. The firmware patch for:

    Once all of these files are downloaded, you must install Pheonix and the Firmware files for you mobile phone. DO SO! The proces is not complicated.

    Just remember to close any other nokia software before running Pheonix, because it may interfere with the flashing process and you don’t want to brick your phone.


    Dead USB flashing short guide:

    You can start Pheonix to use Dead USB flashing by doing the following:
    - start Phoenix
    - go to File > Manage Connections…
    - in the Priority list, move NO CONNECTION first in the list, click Apply and Close
    - now go to File > Open product, select RM-482 and click Open
    - go to Flashing > Firmware update, tick Dead USB flashing and follow the steps described in the tutorial.


    After successfully installing Pheonix and Nokia E55 Firmware package we do the following:

    1. We run Phoenix (All Programs > Phoenix > Phoenix)

    2. Make sure your phone is connected via USB and PC Suite mode is enabled.

    Find you device

    Step3: Find you device

    3. We are now in Phoenix main menu, we go to File > Scan product… , after which if the operation is successful, the top menu and the status bar should look like in image from step 4 ( see below).

    4.  Now the product is recognized and loaded by Phoenix and we are going to prepare to flash the phone with the latest version of firmware available right now and at the same time HACK IT using the firmware patch which will automatically install RomPatcher+ 2.3. Next you click Flashing > Firmware Update from the top menu after which a dialog box should pop-out.  See the image below:

    Flashing e55

    Step4: Flashing e55


    5. Now the flashing dialog will have poped-out listing give you multiple choices. First you must select the firmware version you want to flash (in case you don’t want to flash the auto-selected firmware). You can do so by clicking the
    ” buton which will bring a list with all the available firmware for your model. Pick one and click OK

    Select your firmware

    Step 5: Select your firmware

    6. After selecting our wanted firmware for flashing we click Options > Add and we look for our patch (the one in the archive, you must unrar it first to use it :)) ). It’s the one with the similar name with a file in the flash list (take a good look at before clicking Add): rm482_031.012_U000.000_prd.uda.fpsx or rm482_031.012_U001.000_prd.uda.fpsx (BTW: both are the same)

    After selecting the patch file to flash, set the Type to: Content and tick Refurbish while you are in the Add file dialog box.

    The flash file list should look like in the image below:

    Step 6: Files to flash

    Step 6: Files to flash

    Now we click OK to close the dialog box and we get ready to flash the mobile phone.

    7. Now click Refurbish and wait for Pheonix to finish flashing your phone. The output should be like in the image below:

    Final step: Flash complete

    Final step: Flash complete

    Doesn’t matter if you get warning or error during the flash. If you brick your phone IT CAN BE FIXED!

    Click OK in the dialog, Close in the flash box, and close Phoenix, remove the data cable from your phone, configure it and go to Application > RomPatcher+ and activate the available patches.

    Here is the result:

    Proof: Latest firmware

    Proof: Latest firmware

    e55-rompatch

    Proof: RomPatcher+ Working

    PSSS: I think this patch works on almost any symbian mobile phone :)

    CHEERS TO ME :D

    Enjoy yourself :D This one was a long waited hack :D

    Please post comments ask question make sugestions.

    Many thanks to PNHT team!

  • Cum sa scapi de “virusi” de toate felurile

    Posted on February 9th, 2010 admin 2 comments

    Voi face referinta in special la Malware / Spyware / Troieni si alte traznai de programele gandite pentru a enerva omenirea, facute cu diferite scopuri.

    Am scris acest articol cu gandul la acel “virus” <PROFILUL TAU PORNO>, care nu stiu cum sa raspandid atat de rapid, deoarece el se instaleaza doar cu acordul utilizatorului (cand da click in acest scop).

    De ce oare cineva ar crede ca are asa ceva si ar fi interesat sa il vada (cred ca au cativa “scheleti” in trecut).

    Ce trebuie sa faceti sa scapi de astfel de “traznai”:

    1. Descarci Malwarebytes’ Anti-Malware de aici

    2. Instalezi programul, iar  la final sa fie bifate optiunile de Update si Run. - Programul va face actualizare la ultima versiune si baza de date.

    3. Deschizi programul, te duci la tab-ul Update, mai faci un update (Check for updates)  sa fii sigur ca e la ultima versiune

    4. Ne intoarcem la tab-ul Scanner, alegem Perform Full scan, apasm Scan, dupa care alegem partitiile pentru scanare. (recomand C:\ deoarece acolo isi fac cuibul virusii astia)

    5. Apasam START SCAN si asteptam.

    Dupa ce a finalizat scanarea si a gasit vinovati, va aparea lista cu ei, dupa care click pe “Remove Selected” si poate va cere restart. Datii restart.

    Va recomand acest utilitar deoarece este actualizat, este performant si de multe ori vine in completarea antivirusilor, care nu au actulizari pentru astfel de “virusi”.

    ESTE UN PROGRAM GRATUIT. Nu va cere licenta pentru a scapa de virusi.

    Daca nu va descurcati si aveti nevoie de ghidare prin imagini astept posturile voastre de ajutor, dupa care voi posta imaginii cu fiecare pas de urmat.

  • BS.Player PRO 2.43 Playback crash

    Posted on November 17th, 2009 admin No comments

    I noticed that BS.Player Pro (version 2.43 in my case) crashes everytime i start the playback of a movie (mainly). I googled and found no answer or fix to this problem, because the no debug error/send error log windows showed up and I’m not even know if the developers are aware of this bug, but here is the fix.  This usually happened when there was no subtitle that BS.Player could load from the video directory.

    The main problem in this case is the autoload option for subtitles.

    To disable this option (goes by the name Online subtitles):

    Bs.Player PRO 2.43 Subtitles Crash FIX

    1. Press CTRL + P to bring up the Preferences window (also you can right click on the player > Options > Preferences…)
    2. Go to the Subtitles menu in the left box
    3. Select the Online subtitles tab
    4. Untick “Enable online subtitles”

    Thats all. I have not found a fix yet for this issue, but the one I have posted did the job for me and I hope it works for you also.

    Enjoy.

  • Rezolvare problema viteza Modem ADSL Speedtouch 330 (ClickNET)

    Posted on November 1st, 2009 admin 1 comment

    De ceva timp ClickNet a marit banda pentru utilizatorii (de aproape un an) <cam intarziat postul>, si am avut neplacerea sa nu prind aceasta viteza (de 6 mbps), din cauze necunoscute. Viteza nu urca mai mult de 4.8 Mbps, iar abonametul era de 6 Mbps. Am sunat la suport tehnic, nimic. Am incercat sa rezolv problema.

    Apoi am incercat sa instalez o versiune mai noua a driverelor (care a avut succes). Am luat CD-ul cu o versiune mai noua a driverelor de la un vecin (eu avand abonament de cativa ani…).

    Solutia este sa instalati o versiune mai noua a driverelor modemului.

    Singura problema e ca daca doriti sa luati aceasta versiune mai noua de drivere pentru modemul Speedtouch 330, si aveti Windows XP SP3 nu va permite instalarea <rezolvat si asta, vedeti mai jos>.

    Cum sa rezolvati aceasta problema: VITEZA, DRIVERE si Windows XP SP3?


    Urmati urmatorii pasi:

    1. Dezinstalati versiunea anterioara de drivere (nu inainte de a parcurge pasul 2 :) )

    1. Descarcati driverele de pe acest link

    2. Dezarhivati arhiva driver modem.rar

    3. De unde ati extras arhiva, rulati aplicatia setup.exe, dupa care urmati procesul de instalare firesc.

    Aceasta versiune de drivere este compatibila cu echipametul oferit de Romtelecom si este modificata pentru a rula si pe versiunea SP3 a sistemului de operare Windows XP, astfel de va puteti bucura de viteza maxima a conexiunii dumneavoastra fara dureri de cap.

    Sper ca acest articol sa fie folositor o zi buna.

  • PHP XML Blogroll sursa: blogspot.com - Suport cache si MYSQL

    Posted on October 18th, 2009 admin No comments

    Am scris acest articol si functie cu scopul de a o implementa intr-un site pentru a afisa ultimele posturi de pe un blog gazduit pe blogspot.com (gen: http://carbonenergy.blogspot.com), cu alte cuvinte: Blogroll

    Este facut in PHP cu suport MYSQL pentru a stoca cache-ul si foloseste simpleXML pentru luare datelor de pe blog.

    Este setat sa actualizeze informatiile la 24 de ore, dar acest interval se poate modifica, regland intervalul de secunde. Prescurteaza textul din titlu si din continut la un numar setat de caractere (acestea pot fi setat in script).

    Folosit scriptul returneaza un array cu informatile despre posturi: date (datetime), link, titlu si continut, timestamp.

    Singura sa problema e ca nu curata posturile vechi din baza de date.  Poate implementez in urmatoarea versiune.

    Exemplu: http://www.carbonenergy.ro/ : vezi partea de stanga a siteului (Blogroll)

    Functia PHP:

    function get_broll ($num = 3) {

    $query = mysql_query(”SELECT `id`, `date`, `title`, `link`, `content`, `tstamp` FROM `cms_broll` ORDER by `date` DESC LIMIT 0, 3″);

    $i = 0;
    while ($row = mysql_fetch_assoc($query)) {
    $brollq[$i] = $row;
    $brollq[$i]['date'] = substr($brollq[$i]['date'], 0, 10);
    $i++;
    }

    $tstamp = time();

    if ((mysql_num_rows($query) == 0) || !isset($brollq[0]['tstamp']) || (($tstamp - $brollq[0]['tstamp']) > 86400)) {

    $xml=@simplexml_load_file(’http://carbonenergy.blogspot.com/feeds/posts/default’);

    if(!$xml){return 0;}

    for ($i = 0; $i < $num ; $i++) {

    $broll[$i]['link'] = $xml->entry[$i]->link[4]->attributes()->href;
    $broll[$i]['date'] = str_replace(’T', ‘ ‘, substr($xml->entry[$i]->published, 0, 19));
    $broll[$i]['title'] = substr($xml->entry[$i]->title, 0, 33);
    if (strlen($xml->entry[$i]->title) > 33) {$broll[$i]['title'] .= ‘…’; }
    $broll[$i]['content'] = substr($xml->entry[$i]->content, 0, 137);
    if (strlen($xml->entry[$i]->content) > 132) {$broll[$i]['content'] .= ‘…’; }

    if ((mysql_num_rows($query) == 0) || ($brollq[$i]['link'] != $broll[$i]['link']) ) {
    $up = mysql_query(”INSERT INTO `cms_broll` (`date`, `title`, `link`, `content`, `tstamp`) VALUES(’”.$broll[$i]['date'].”‘,’”.$broll[$i]['title'].”‘,’”.$broll[$i]['link'].”‘,’”.$broll[$i]['content'].”‘,’”.$tstamp.”‘)”);
    }
    $broll[$i]['date'] = substr($xml->entry[$i]->published, 0, 10);

    }

    } else {
    return $brollq;}

    return $broll;

    }

    Structura tabel de date MYSQL:
    CREATE TABLE IF NOT EXISTS `cms_broll` (
    `id` int(11) NOT NULL auto_increment,
    `date` datetime NOT NULL,
    `title` text NOT NULL,
    `link` text NOT NULL,
    `content` text NOT NULL,
    `tstamp` int(11) NOT NULL,
    UNIQUE KEY `id_2` (`id`),
    UNIQUE KEY `id_3` (`id`),
    KEY `id` (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=34 ;


    – Dumping data for table `cms_broll`

    INSERT INTO `cms_broll` (`id`, `date`, `title`, `link`, `content`, `tstamp`) VALUES
    (33, ‘2009-10-16 02:34:00′, ‘Doua miliarde euro din emisiile d…’, ‘http://carbonenergy.blogspot.com/2009/10/doua-miliarde-euro-din-emisiile-de-co2.html’, ‘Ca sa mai faca rost de niste bani la buget pe timp de criza, Guvernul spera sa obtina doua miliarde euro din vanzarea surplusului de drep…’, 1255794474),
    (32, ‘2009-10-16 02:36:00′, ‘Primul proiect de captare a CO2 i…’, ‘http://carbonenergy.blogspot.com/2009/10/primul-proiect-de-captare-co2-in.html’, ‘Producatorul de gaze Romgaz, transportatorul national de gaze Transgaz si producatorul de energie electrica Complexul Energetic Craiova v…’, 1255794474),
    (31, ‘2009-10-16 02:38:00′, ‘EU: Romania, Bulgaria must cut na…’, ‘http://carbonenergy.blogspot.com/2009/10/eu-romania-bulgaria-must-cut-national.html’, ‘London. The European Commission Friday ruled that Romania and Bulgaria must both reduce their carbon dioxide national allocation plans fo…’, 1255794474);

    Astept comentarii si sugestii.

  • PHP si MYSQL Curs valutar automat EUR/USD - Sursa BNR

    Posted on September 22nd, 2009 admin 3 comments

    Am scris acest articol deoarece cred ca ar putea fi folositor.  “Scriptul” consta intro functie si un tabel care este foarte simplu: ia cursul de schimb de pe http://www.bnr.ro/nbrfxrates.xml numai pentru moneda EURO si USD si le stocheaza intro baza de date.

    De ce?

    Informaţiile preluate trebuie stocate la nivelul aplicaţiei de preluare pentru a evita generarea de trafic redundant. IP-urile care generează un volum de trafic disproporţionat de mare vor fi restricţionate administrativ. Pentru restabilirea accesului puteţi semnala remedierea situaţiei pe adresa de webmaster.

    • evitarea traficului inutil
    • timpi de incarcare si raspuns a paginilor mai bun
    • mai gasiti si voi.

    Uitati si functia:

    function get_rate() {

    $rate['curdate'] = date(”Y-m-d”);

    $query = mysql_query(”SELECT `eur`, `usd` FROM `cms_rate` WHERE `data`=’”.$rate['curdate'].”‘”);

    if (mysql_num_rows($query) == 0) {
    $xml=@file_get_contents(’http://www.bnr.ro/nbrfxrates.xml’, FILE_BINARY);

    if(!$xml){return 0;}
    preg_match(’/”EUR”>(.*)<\/Rate>/’, $xml, $eur);
    preg_match(’/”USD”>(.*)<\/Rate>/’, $xml, $usd);

    $rate['eur'] = $eur[1];
    $rate['usd'] = $usd[1];

    $up = mysql_query(”INSERT INTO `cms_rate` (`data`, `eur`, `usd`) VALUES(’”.$rate['curdate'].”‘,’”.$rate['eur'].”‘,’”.$rate['usd'].”‘)”);

    return $rate;

    } else {

    $res = mysql_fetch_assoc($query);
    $rate['usd'] = $res['usd'];
    $rate['eur'] = $res['eur'];
    return $rate;
    }

    Structura tabelului de date:

    SET SQL_MODE=”NO_AUTO_VALUE_ON_ZERO”;

    – ——————————————————–


    – Table structure for table `cms_rate`

    CREATE TABLE IF NOT EXISTS `cms_rate` (
    `id` int(11) NOT NULL auto_increment,
    `data` date NOT NULL,
    `eur` double NOT NULL,
    `usd` double NOT NULL,
    PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;


    – Dumping data for table `cms_rate`

    INSERT INTO `cms_rate` (`id`, `data`, `eur`, `usd`) VALUES
    (10, ‘2009-09-22′, 4.2665, 2.9123);

    Connexiunea la baza de date o las in seama voastra.

    Success!

  • HyperIM 2.14 + Yahoo! Messenger 9 & 10 - fix - functioneaza!

    Posted on April 11th, 2009 admin 40 comments

    Cu ceva timp in urma am reinstalat OS-ul (Windows XP Pro), si am instalat Yahoo! Messenger, ultima versiune desigur, dupa care am instalat HyperIM, ultima versiune descarcata de pe www.numedecod.ro. Dupa ce am instalat HyperIM cu speranta ca va fi compatabil cu ultima versiune de Yahoo! Messenger am avut dezamagirea sa nu fie asa, iar statusurile sa fie afisate in ordine aletorie. Problema aceasta am mai avut-o si in trecut (dar am rezolvata), recent am lasat problema balta, dar astazi am avut initiativa si am rezolvat-o.

    Ce va trebuie:

    Update:

    Download HyperIM 2.14

    Cum instalati:

    • Instalati Yahoo Messenger si il inchideti in caz daca se deschide automat
    • Instalati HyperIM 2.14 si il inchideti daca se deschide
    • Instalati him_ym_1.0.5.himzp
    • Dupa care instalati reg-fixul pentru Yahoo Messenger

    Dupa ce ati parcurs acesti pasi deschideti Yahoo Messenger, logativa pe ID, deschideti HyperIM iar setarile ar trebui sa fie ca in poza urmatoare pentru a va functiona corect afisarea statusului.

    Acest tutorial este valabil si pentru cei care doresc sa isi afiseze la status ce melodii asculta.

    hyperim-setup1

    HYPERIM Settings

    De ce HyperIm?

    - Pentru ca ofera suport pentru majoritatea clientilor de instant messaging si pentru ce mai cunoscute playere media.

    - Deoarece detine un sistem impresionat de setari si optiuni de afisare al statusului.

    - Mai spuneti si voi cateva ca sunt destule.

    Update: Acest tutorial este compatibil cu  versiunile Yahoo! Messenger 9 si 10

  • Instalare codecuri media pentru Fedora 10

    Posted on April 1st, 2009 admin No comments

    Zilele aceasta am instalat Fedora 10 din motive persoanle pe notebook-ul meu, un Acer Aspire 5735, si nu am avut probleme la instalare, drivere le-a detectat si instalat automat. Cu alte cuvinte nu am avut nici o problema.

    Inainte de a instala Fedora 10 am incercat sa instalez Ubuntu, dar am primit o eroare la instalare si nevrand sa mai insist am ales alta distributie de linux.

    Trebuie sa mentionez ca pe laptop mai si Windows XP, iar sistemul de operare pe care doresc sa il incarc il aleg imediat dupa faza POST BIOS (dual boot). Un lucru frumos si intalnit astazi mai la toate distributiile linux (GRUB). Recunoaste partitiile windowsului, astefel aveti acces la fisierele de pe celalant sistem de operare, iar montarea partitiilor o face automat dupa prima accesare a lor.

    Daca aveti o conexiune la internet prin LAN si un DHCP activat la retea veti avea acces la internet imediat. Dupa ce va logati in scurt timp va zbiera ca vrea update-uri, recomand sa le faceti pe cele care tin de securitatea sistemului.

    De curiozate, si din plictiseala am incearcat sa ascult putina muzica, fisierele fiind in format MP3. Am cautat o melodie, si am executat 2xclick incearcad sa o deschid, sa deschis aplicatia implicita de redare a fisierelor mp3 (Totem Player) care raporta ca nu are codecuri pentru formatul MP3. Am cautat prin pachete de programe, codecuri MP3 (folosind yum) si am lasat si Totem sa caute el automat, dar nici un rezultat favorabil.

    Problema e urmatoarea:

    Fedora nu include programe in distributiile sale care nu indeplinesc anumite conditii privind licenta de folosire.Mai multe detalii gasiti aici (pagina la care va duce si managerul de aplicatii dupa ce da eroare): https://fedoraproject.org/wiki/PackageKit_Items_Not_Found

    Deci aceste codecururi necesare nu pot fi descarcate sau instalate de pe serverele fedora.

    Solutia:

    Trebuiesc adaugate si alte situri care ofera het pacaplicatii si fisierein yum, astfel veti putea instala acele programe si aplicatii care nu sunt incluse in distributiile Fedora. Pentru a parcure pasii urmatori aveti nevoie de acces root.

    1. Click Aplications > Sistem Tools > Terminal
    2. In fereastra care apare vom scrie:
      1. su - pentru a capata drept de root, dupa care trebuie sa tastati parola contului de root
      2. rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm - pentru a adauga in yum un nou distrbuitor de pachete
    3. Acum puteti deschide un fisier MP3 cu Totem sau alt player, iar cand acesta va anunta ca trebuie un anumit codec, dati sa caute codecul pe care il va gasi in noua lista de distributie adaugata.

    Ce va recomanda este sa instalati VLC Media Player pe motivul ca suporta multe formate media, iar instalarea sa va duce la instalare si altor codecuri si librarii necesare redarii video/audio.

  • Coldplay - Life in technicolor | Viva La Vida Prospekt’s March Edition 2008

    Posted on March 31st, 2009 admin No comments

    Desi pare destul de veche melodia aceasta, eu am descoperit-o destul de recent si mi se pare extraordinar de frumoasa.

    Un still progressiv care te umple de energie si care nu lasa loc de comentarii.

    Lipsind versurile, in versiunea de 2 minute, te determina sa o asculti la infinit.

    Versiunea II este are aceasi linie melodica in plus fiind versurile care sunt splendide.

    Videoclip Life in technicolor II - youtube: Life in technicolor

    Life in technicolor

    [audio:http://hwk.robits.org/wp-content/uploads/2009/03/101-coldplay-life-in-technicolor.mp3]

    Life in technicolor II

    [audio:http://hwk.robits.org/wp-content/uploads/2009/03/201-coldplay-life-in-technicolor-ii.mp3]

    Sper sa va placa melodiile. Auditie placuta ;)

  • Public IP Info v 0.2 - script TCL pentru eggdrop

    Posted on March 31st, 2009 admin No comments

    Acest script il puteti folosi pentru eggdrop pentru a va afisa, pe canalul IRC unde a fost declansata comanda, informatii despre un anumit IP.

    Foloseste ca sursa de informatii www.ip2location.com, iar informatiile solicitate le stocheaza intro “baza de date” proprie pentru a reduce solicitarea serverului unde este gazduit botul.

    De mentionat este faptul ca informatiile stocate sunt retinute pentru a o anumita perioada de timp (se poate seta in configuratia scriptului). In acest fel datale nu se vor invechi.

    Scriptul in actiune:

    [13:27] <hwk> !ipinfo 92.81.168.244
    [13:27] <Myth`> hwk IP information for 92.81.168.244: Country: ROMANIA, City: BACAU, ISP: ROMTELECOM DATA NETWORK, Domain: PLATINUM-IFN.RO

    Versiunea 0.1 a acestui script se poate descarca de pe www.egghelp.org, sectiunea TCL Archive, sub numele: Public IP information checker.

    Diferentele intre cele doua versiuni fiind sistemul de stocare temporara a datelor.

    catch {array unset ipinfocache}
    #########################################################################
    #         Public IP Info v0.2 by Hawkee - lowraider1@gmail.com          #
    #-----------------------------------------------------------------------#
    # This script uses www.ip2location.com to check info for an ip adresses #
    #	You can use it in 2 modes: THE FREE ONE or THE Account one	  #
    #										  #
    # The free one works for 20 IP lookups per day, because this is the 	  #
    # maximum number of lookups, ip2location.com offers for unregistered 	  #
    # users - per ip -. Set ip2loc(account) (default) to use this.		  #
    #									         #
    # Changes from version 0.1:							  #
    #		-implemented a cache system to store the info to reduce	  #
    #		resource usage                                            #
    #             -the cache system refreshes the info at a given period of #
    #		time                                                      #
    #										  #
    #										  #
    # Works on all channels, and it can be used by all users. Requires TCL  #
    # HTTP PACK									  #
    #										  #
    # USAGE: !ipinfo <IP>							  #
    # 					HAVE PHUN				  #
    # Email me with suggestions and bug reports at lowraider1@gmail.com 	  #
    #										  #
    #							 grtz HWK @ undernet	  #
    #########################################################################
    
    set ipinfo(cachefile) 	"ipinfo.cache"		;#the cache file
    set ipinfo(cacherefresh) 	"7"					;#the time (in days) to refresh the info for an IP
    
    set ver "0.2 - mod"
    
    package require http
    
    #DO NOT EDIT BELOW FUCKER!#
    
    proc ipinfo:parser {nick uhost hand chan args} {
    
    set ip [string trimright [lindex $args 0] "."]
    
    if {![regexp {^(?:(?:[01]?\d?\d|2[0-4]\d|25[0-5])(\.|$)){4}$} $ip]} {
    puthelp "privmsg $chan :$nick NO/Invalid IP pattern. USAGE: !ipinfo 193.193.193.193"
    putlog "IP INFO $chan $nick - INVALID IP PATTERN"
    return
    
    }
    
    set infoip [ipinfo:output $ip]
    set country [lindex $infoip 0]
    set city [lindex $infoip 1]
    set isp [lindex $infoip 2]
    set domain [lindex $infoip 3]
    
    if {![info exists country] || [string equal $country -]} {
    puthelp "privmsg $chan :$nick No information found for IP: \00302$ip\003 please redefine your IP"
    putlog "IP INFO $chan $nick - No results"
    return
    }
    
    puthelp "privmsg $chan :$nick IP information for \00302$ip\003: \002Country:\002 \00304$country\003, \002City:\002 \00304$city\003, \002ISP\002: \00302$isp\003, \002Domain:\002 \00302$domain\003"
    putlog "IPinfo request:  $nick on $chan"
    
    }
    
    proc ipinfo:getinfo {host} {
    global ipinfo ipinfocache
    
    	::http::config -useragent "Mozilla/5.0 ; Gecko"
    
    	set que [::http::formatQuery ipaddresses $host]
       	set http_req [::http::geturl "http://www.ip2location.com/demo.aspx" -timeout 2000 -query $que]
    
    	set data [::http::data $http_req]
    	::http::cleanup $http_req
    
    	regexp {<span id="dgLookup__ctl2_lblICountry">([^<]+)</span></TD>} $data -> country
    	regexp {<span id="dgLookup__ctl2_lblICity">([^<]+)</span></TD>} $data -> city
    	regexp {<span id="dgLookup__ctl2_lblIISP">([^<]+)</span></TD>} $data -> isp
    	regexp {<span id="dgLookup__ctl2_lblIDomain">([^<]+)</span></TD>} $data -> domain
    
    	set info[list $country $city $isp $domain [unixtime]]
    
    	set ipinfocache($host) $info
    
    	return $info
    
    }
    
    proc ipinfo:output {host} {
    global ipinfo ipinfocache
    
    if {[info exists ipinfocache($host)]} {
    	if {[expr {(60*60*24)*$ipinfo(cacherefresh)}] < [expr {[unixtime] - [lindex $ipinfocache($host) 4]}]} {
    		putlog "IPinfo: refreshing cache data for $host"
    		set info [ipinfo:getinfo $host]
    		ipinfo:save
    		return $info
    	} else {
    	return $ipinfocache($host)
    	}
    } else {
    	set info [ipinfo:getinfo $host]
    	ipinfo:save
    	return $info
    }
    
    }
    
    proc ipinfo:save {} {
    global ipinfo ipinfocache
    
    set write [open $ipinfo(cachefile) w]
    puts $write	[list array set ipinfocache [array get ipinfocache]]
    close $write
    
    }
    
    proc ipinfo:read {} {
    global ipinfo ipinfocache
    
    if {[file exists $ipinfo(cachefile)]} {
    	if {![catch {source $ipinfo(cachefile)} cacheerror]} {
    		putlog "IPinfo: cache file successfully loaded"
    	} else {
    		putlog "IPinfo: cache file failed to load -: $cacheerror"
    		putlog "IPinfo: trying to fix cache file: reset" ; ipinfo:save
    
    	}
    } else {
    
    ipinfo:save
    putlog "IPinfo: cache file written - first time use"
    }
    
    }
    
    ipinfo:read
    
    bind pub -|- !ipinfo ipinfo:parser
    
    putlog "Public IP Info $ver by HAWKEE Successfuly loaded"