Hackujeme v TV PROGRAMe – prakticky II.

Doktorandúru nad TV programom som spáchal po niekoľkých dňoch od nainštalovania novej bety.
Medze sú rozorané a ja dnes volám kliknutím na Upozornenie svoj vlastný kód, ktorý robí to čo chcem.
V prvom rade som chcel, aby údaje o upozorňovanom programe sa preniesli do Outlooku. Priznávam, že sa mi to podarilo.
Ani dnes neprinesiem žiadne obrázky, prepáčte.


Mnou skúmaný priečinok "scripts" nezostal dlžný žiadnym tajomstvám.
Čaro súboru "zaznamtv.htm" je v tom, že si do neho môžem pridať trebárs svoj kus javascriptového (či vbscriptového) kódu.
Najprv som usilovne premýšľal či kód dám priamo do "zaznamtv.htm" ale kto sa pozerá ten vidí.
Súbory "script_down.365" a "script_vb.365" tam nie sú nadarmo. V zaznamtv.htm nájdete volania rôznych funkcií a ich zdrojáky sú práve v nich!
Zaujalo ma to práve na tejto *záhadnej funkcií:*
<span onClick="Upozorneni('[%ID%]','[%START%]', '[%POZ%]',[%POZANO%])"^gt;[%CAS%]</span>
Žartujem… volá sa predsa Upozorneni a čo iné by to malo byť ako *čarovné klikátko,* ktorým sa program označí na červeno.
Zdroják funkcie je v script_vb.365 a tým pádom bolo rozhodnuté.

Experimenty

Poznám jeden veľmi slušný kus kódu:
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim newAppItem As Outlook.AppointmentItem

Set olApp = CreateObject("Outlook.Application")
Set objNS = olApp.GetNamespace("MAPI")

Set newAppItem = olApp.CreateItem(olAppointmentItem)
newAppItem.Subject = "Meet to discuss the new architecture"
newAppItem.Body = "Need to finalize on the Architecture..."
newAppItem.Start = #11/20/2006 1:30:00 PM#
newAppItem.Duration = 40
newAppItem.Save

Set newAppItem = Nothing
Set olFolders = Nothing
Set objNS = Nothing
Set olApp = Nothing

Áno. *Žiadny iný klient ako Outlook nemá tak silné rozhranie* na to, aby som mohol týmito riadkami PROGRAMOVAŤ a ovládať Outlook bez toho, aby som ho videl na obrazovke! Kým to v Mozilla.org nepochopia, budú sa možno snažiť atakovať najnižšiu vrstvu používateľov ale tým aj skončia. Firefox je super prehliadač, no na Thunderbird neprejdem. A to pripomínam, že z MS Outlook NEMAILUJEM!!!
Ukážka proste vloží udalosť do kalendára a to je všetko.
Prečo by som nemohol tento malý kúsok implantovať do script_vb.365 a nemať tak priam čarovne vyriešenú moju potrebu?
Spravil som to! A! *Funguje to!*
Kód je trošku zložitejší, ešte som musel spraviť to, aby pri zrušení upozornenia TV program aj z Outlooku vymazal položky rovnakého mena. Tým pádom je to obojsmerne funkčné – program sa do outlooku zapíše ale *aj vymaže* ak ho v TV programe zruším.
Chcelo to samozrejme pár úprav. V prvom rade som chcel aby sa do Upozorneni dostal aj *názov programu, názov TV stanice.*
To prvé je malina – značka je [%NAZEV%] lenže, *čo s názvom stanice?* Nikde som nenašiel žiadnu značku!

Viete aký je rozdiel medzi BFU a hackerom?
BFU uhádne svoje heslo na tretí krát.
Hacker uhádne jeho heslo tiež na tretí krát.

Ja som sa však rozhodol byť *TAK dobrý ako hacker sietí NBÚ.* Takže som trafil názov značky pre názov TV stanice na prvý krát. Je to teda [%STANICE%] a vrátil som sa k úpravám.
V zaznamtv.htm som upravil volanie funkcie Upozorneni takto:
Upozorneni('[%ID%]','[%START%]','[%POZ%]',[%POZANO%], '[%NAZEV%]', '[%STANICE%]')
V prvom rade tam mám viac parametrov.
Prechádzame z bežnej odbornej vedeckej činnosti na neistú pôdu *Visual Basic skriptovania.* Sranda bola.
Pridal som v deklarácií funkcie Upozorneni dva parametre aby mi to nekričalo nič o Syntaxoch :-)
sub upozorneni(x,dS,pozor,non,onazov, ostanice)
Najprv som si myslel, že čas a dátum získam ťažko, no on je skrytý v parametri dS a stačí to len trošku poprehadzovať:
oStart = left(right(ds,8),2) & "." & left(right(ds,11),2) & "." & left(ds,4) & " " & left(right(ds,5),2) & ":" & right(dS,2)
A v oStart máme pekne sformátovaný dátum pre Outlook.
Implantácia kódu pre vkladanie udalosti do Outlooku bola záležitosť nájdenia vhodného miesta a tým sa ukázal:
if non=false then
if pozor="1" then
document.getElementById("P" & x).bgcolor = ""

a sem som vsunul vymazanie udalosti z kalendára Outlooku:
Const olFolderApp = 9

Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(olFolderApp)

Set colItems = objFolder.Items

strFilter = "[Subject] = '" & onazov & "'"
Set colTasks = colItems.Restrict(strFilter)

For Each objTask In colTasks
objTask.Delete
Next

Nesmieme zabudnúť na vkladanie udalosti. Inak by to bolo nanič, za tento kód pôjde vkladací implantát:
else

document.getElementById("P" & x).bgcolor = "red"
Celý kus kódu na vloženie udalosti už vyplnenej údajmi:
Dim objOutlook
Dim itmTask
Dim datDue
Dim strMsg
Const olAppointmentItem = 1
Set objOutlook = CreateObject("Outlook.application")
Set itmTask = objOutlook.CreateItem(olAppointmentItem)
itmTask.Subject = onazov
itmTask.Categories = "TV"
itmTask.Location = ostanice
itmTask.Start = oStart
' itmTask.End = Wscript.Arguments.Named("e")
itmTask.Duration = 40
itmTask.ReminderMinutesbeforeStart = 0
itmTask.BusyStatus = 2
itmTask.save
Set itmTask = Nothing
Set objOutlook = Nothing

Iste ste si všimli, že *trvanie mám nastavené na 40 minút.* Zatiaľ som nad tým mávol rukou ale snáď sa mi zadarí aj skutočné konce programov odovzdávať Outlooku.
Toto je v stručnosti história zmien v hackerského mága.
Znalejším bude stačiť aj takéto ponakopávanie.

Varili ste do kódu so mnou?

Avšak ostatní – malé doporučenie:
*Neurobil si si zálohy, že?* Porobil si kopec úprav a už si ani nepamätáš čo a ako bolo. Však? Tak ti treba.
Premýšľal som, že dopredu upozorním, že si to máš zozálohovať.
Ha!
Hlavná časť prác je na konci. Dnes kliknem na upozornenie a mám to v Outlooku.
Všimli ste si, že *používam (a veľmi rád) kategórie.* Aj v udalostiach aj v úlohách. Pre človeka, ktorý má *PDA za osobného manažéra,* je toto dobrá vec. Preto udalostiam z TV programu prideľujem *kategóriu TV.* Nebudú sa mi pliesť v PDA medzi iné.
Zároveň však udalosti z Outlooku idú aj do mobilu. Tam som si nastavil, že IBA udalosti v kategórií TV majú ísť aj do mobilu. Je jasné prečo.

Moje ciele

Samozrejme by som Vám rád dal vedieť, ktoré programy som si označil a tým pádom aj doporučujem. Momentálne je na úvodnej stránke Spravodaja iba jednoduchší filter podľa názvov ale občas to nezobrazuje úplne všetko a je dobrý hlavne na seriály.
Vo funkcií Upozorneni je však potenciál, ktorý nemožno skrývať. Preto by malo byť možné ukladať označované programy aj do textového súboru. Ak to nepôjde, je ešte cesta exportovania udalostí v kategórií TV z Outlooku. Výsledkom bude textový zoznam programov, ktorý už spracujem PHPčkom a zobrazím v Spravodaji.
Myslíte, že mám aj tretí diel? Čo v ňom bude? Už upravené celé hotové súbory?

Môže sa Vám ešte páčiť...

4 komentáre

  1. Keff píše:

    Cool:).
    Mam napad k tem zaloham – co si na to vytvorit SVN repository a mit tam vsechny verze, a treba i s ucasti dalsich nadsencu po netu?

  2. rony píše:

    [1] to je na mňa príliš zložité :)

  3. maskomak píše:

    Zaujimave… da sa niekde vidiet vysledok tvojho snazenia?

  4. rony píše:

    [3] TV program je Windows aplikacia. Nainstalujes, inspirujes sa mojimi pokusmi a uvidis.
    Ako si z textu zistil, onedlho budu vsetky upravy na stiahnutie k dispozicii.