6. dets 2008

Adblock Plus 1.0 väljas



Üldiselt eriti ei oma tarkvara, mis vääriks eraldi esiletoomist,
kuid Adblock küll.

Mul kodus üks vanem arvuti (1.2g, 512mb), meie meediaväljaandeid üldse võimatu lugeda. CPU 75-85%... Põhjuseks "flashi mürgitus", kuna varem olid reklaamid kas staatilised gif / jpeg failid, siis nüüd 85% on ainult flash.

Saan aru, et reklaam vajalik kasumi jaoks, kuid mõnel lehel on liig, mis liig. Kõige hullem on "monsterbännerid". Äripäev alustas sellega, et päisesse pandi ikka paras monstrum. Ja see jubedus levis.
Reklaame tohib nii paigutada, et nad on koheselt nähtavad samas ei sega lugemist, seda konseptsiooni ei järgita !

Ühe lehe avamise benchmark, ilma Adblock programmita. 15-20 sekundit, nüüd maksimaalselt 4 sekundit.



Küsimus lugejatele, kas keegi teab, kuidas (globaalselt) Flashplayeris heli ära keelata. Pole kohanud Flashplayeris seadeid, et keela heli !
Asi reklaamides stiilis autoplay, kus järsku hakkab hull kisa või loba.

Ise kasutan Saksamaa AdBlock reegleid:
http://maltekraus.de/Firefox/adblock_site-specific-elemhiding.txt
+ 8 lihtsat reeglit lisaks


http://www.ap3.ee/bannercache/
http://www.postimees.ee/*/banners/
http://ebnr3.datanet.ee/banners
http://www.soov.ee/web/banner/
http://ap.delfi.ee/i?
http://g.delfi.ee/b/sc/
http://ap.delfi.ee/b?
http://static.postimees.ee/banners/

24. nov 2008

Windows ja paroolid ? Mõttetu ajaraiskamine...

Nagu subjekt ütleb, nii ka asjad on. Kuna põhitöö kõrval on olnud turvalisus minu hobiks, siis sai 3 aastat tagasi juba tehtud programmid...

W2K parool mälust

Tuleta meelde (Outlook Expressi paroolid)

Msn paroolid (vanem messangeri formaat)

Need programmid töötavad isegi (kus protected storage veel kasutusel).


Üldiselt point selles, et lumine nädalavahetus andis aega uuesti uurida asju. Ja ikka asjad logisevad.

W2K ning XP ilma SP oli hea lihtne
HKEY_CURRENT_USER\Software\Microsoft\Protected Storage System Provider

õiget dll välja kutsudes, lobises süsteem rõõmsalt kõik paroolid välja. Msn, Outlook, IE autocomplete.

Nüüd pole enam see storage eriti aktuaalne, MS programmid hakkasid ise paroole hoidma enda formaatides. Nagu alati, mitte just efektiivselt.
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2

Väidetavalt on seal URL xor võtmeks , miks ma ei imesta:(

Win9x oli täitsa komöödia, kohe winapi EnumCachedPasswords, mis kõikide ressurside paroolid ütles...oh aegu.

Juhul, kui tarkvaral on natukenegi tugevam parool, siis kasutatakse IAT hookingut


Üldiselt põhjused, miks mõtetu windowsis üldse parooli panna, op. süsteem justkui pahalaste jaoks tehtud (et viirusetõrjet ning troojakate vastast tarkvara saaks ikka müüa).

* Üks windowsi programm saab teisele saata suvalisi messageid.
- lahendus panna vähemalt juurde akna/kiu ID, kes sõnumi saatis, et app saaks teada, kas võtame vastu teate või mitte. Trooja programmid rõõmsalt sulgevad WM_CLOSE abil aknaid, mida klient peaks nägema.


* Teise programmi konteksti kiu loomine. CreateRemoteThread
Läbi selle API saab kõiksugu jama teha, ntx pahalase DLL laadida.
- minimaalne, et programmis oleks api, mis teavitaks täiendava kiu saabumisest. Samuti protsess, kes seda tahab teha. Programmil accept flag, kas on sellise kiuga nõus.

DllMain - DLL_THREAD_ATTACH, kahjuks see ei toimi nii nagu võiks.

* VirtualProtectEx / VirtualAllocEx

lubab kaunilt teise protsessi külge mappida puuduvat mälufragmenti.
Ehk pahalane paneb täiendava jmp käsu programmi koodi või muudab mõnda call aadressi ning pidu võib alati piirkonnas, mis küsiti virtualprotectex abil.
- see api ära keelata.

* tegin tarkvara pcturva juba 2003 aastal, et lihtsamalt tuttavate arvutitest leida pahalasi.
Samuti suutis tarkvara heuristiliselt leida windows hooke
Siis Windowsi lisati uued "hook" tüübid, mida pole võimalik leida ja mida saab suvaline tarkvara rakendada !
Setwindowshookex - globaalset "hooki" lubada ainult ja veelkord ainult hiire sündmuste püüdmiseks.

Ja nimekiri on pikk pikk...mis windowsis turvalisuse ära rikub
__________________________________________

Palju toredaid paroole süsteemist..

NirSoft



ja kui unustasite windowsi paroolid, pole probleemi, muudke ära. Kui vaja ka adminni omad...

http://home.eunet.no/pnordahl/ntpasswd/

Ps. seda parooli muutmist ei soovita teha, kui teil kettal krüpteeritud failid.


Ehk, milleks vaevata pead paroolide välja mõtlemisega...eriti windowsis...


Andmete kaitseks soovitan kasutada TrueCrypti , selle tarkvaraga mul kõige vähem probleeme esinenud. Töötab ka Linuxi peal.



Seniks lund meetrite kaupa :))))














20. nov 2008

Oli vaja luua Vistas loopback adapterit...

..aga kuidas... lõpuks leidsin blogi, kus räägitakse edukast installist.

installing-loopback-adaptor

DevCon programm on märksõnaks.

devcon.exe install %windir%\inf\netloop.inf *msloop

Lihtne ju, kas pole ;)
___________

Lihtsalt täiendav info, pidin IPV6 toetavat programmi testima, aga ennem pidin arvutisse IPV6 installima http://www.microsoft.com/technet/network/ipv6/ipv6faq.mspx

No, mis jamaga tegeletakse: "ID-kaardi kõrvale tuleb uus digitaalne isikutunnistus"

ID-kaardi kõrvale tuleb uus digitaalne isikutunnistus

Lisaks saaks ID-kaardi ja digitaalse isikutunnistusega korraga kasutada mitut digitaalset isikutuvastamist võimaldavat dokumenti, näiteks töötamisel paralleelselt kahes elektroonilises keskkonnas

Nii, kratsime koos kukalt, mis asi see siis on. Ei ole kana, ega ei ole muna. Töötab nagu ID kaart, aga samas pole dokument. Tavaline kiipkaart (pole visuaalselt tuvastatavat osa), järelikult tehninguid saab ikka teha.

Eesti riigis ongi põhiprobleem ülemõtlemine, mis viib jaburate lahendusteni, kus puudub karjuv vajadus. Igasuguste süsteemide segaseks ajamine tõstab turvariske.

Väikesed abimehed veebi juures

Üldiselt, millised abivahendid on head veebilehtede kirjutamisel ning kontrollimisel.

Mozilla Firefox, alati tasub Tools->Error Console piiluda, mida öeldakse sinu saidi kohta,
kontrollida elementide struktuuri jne

Väga hea abimees Firefoxi kasutajatele ka Firebug


Kui oled IE kasutaja, siis on abiks

Internet Explorer Developer Toolbar


__________

Nii tänaseks levi lõpp - paistab, et külmapoiss leidis Eesti üles..

17. nov 2008

Vahelduseks naljakas soov sõbralt Feedreaderi plugina jaoks

Sõber kurtis, no nii ära tüütanud negatiivsed uudised meediakanalites, et tee õige üks plugin, mis "halvad sõnad" asendaks. Sõnad, krahh = babahh, majanduslangus = kõik on ilus, ansip = tore mees, inflatsioon = meil läheb hästi, korruptsioon = lihtsalt optimiseerisime kulusid :)))) See lihtsalt väike nimekiri. Eks ootan täiendavaid sõna asendusi ...

13. nov 2008

MSSQL : Sinu igapäevased help protseduurid...

Nii, ükspäev vaatasin, milliseid süsteemseid protseduure enim kasutan ja tegin nö järjestuse.

1. sp_helptext - nö protseduur, mis võimaldab protseduuride, funktsioonide, trigerite sisu vaadata (sp_helptrigger).
2. sp_monitor - tagastab üldise serveri info ntx palju cpu hõivatud, palju pakette saadetud, mitu ühendust loodud.
3. sp_who2 - näitab, kes serverisse loginud, kus arvutist, millal viimane batch. Enamasti kasutasin seda, et kiiresti näha, kes keda blokeerib.
4. sp_lock - näitab lukustusi, natuke täiustasin väljundit

declare @abimees table (
spid smallint,
dbid smallint,
ObjId int,
IndId smallint,
Type nchar(4),
Resource nchar(16),
Mode nvarchar(8),
Status nvarchar(20))


insert into @abimees
exec sp_lock

select spid,DB_NAME(dbid) as dbname,object_name(ObjId) as object,IndId,
case
when Type='DB' then 'Database'
when Type='FIL' then 'File'
when Type='IDX' then 'Index'
when Type='PG' then 'Page'
when Type='KEY' then 'Key'
when Type='TAB' then 'Table'
when Type='EXT' then 'Extent'
when Type='RID' then 'Row identifier'
end as typestr,
Resource,Mode,Status
from @abimees


5. sp_helpfile - annab ülevaate andmebaasi failidest.
6. sp_depends - protseduur, mis annab infot selle kohta, millised teised andmebaasi objektid sõltuvad etteantud objektist.
7. sp_helpdb - annan infot kõikidest andmebaasidest, nende suurusest, staatustest jne
8. sp_helprotect - annab ülevaate kõikidest objektidele omistatud õigustest; kes tohib exec sooritada, kes select jne Sellele protseduurile soovitan ikka vaadeldava objekti nime ette anda @name=ntxmingitabel. Muidu kuvatakse kõik protseduurid, tabelid jne nende õigustega.
9. sp_helprole - kuvab vaikimisi valitud andmebaasis defineeritud kasutajate rollid.



Seniks ... nägelemiseni...

12. nov 2008

Naljakad turvavead ;))))

Worst security blooper ever?

T-Mobile quickly patched the gaping hole, but not before widespread shenanigans ensued. One report on Google's Android Bug listing describes a user text messaging advice to his girlfriend comprised of the single word "reboot," only to find his phone rebooting. Surprise!

Ei oskagi midagi selle peale öelda, vaadake, et siis te sõpradele süsteemseid käske ei kirjuta :)))

Kui viirusetõrje muutub ohtlikuks...

Oops... AVG accidentally kills Windows

user32.dll kustutamine viirusetõrje poolt ikka suurim bläkk, mida üle pika aja kogenud. Huvitav oli lugeda, kus ühel firmal oli 200 tööjaama, mis peale seda lõpetasid töö - ei tahaks olla antud adminni nahas.

Kas viirusetõrje firma signatuuri algoritmid logisevad või lihtsalt lohakaks muutunud.

Tunne, et tulevikus peaks viirusetõrje panema oma failikonteinerisse failid, mida ta tahab kustutada. Kui arvuti edukalt käivitunud, siis kasutaja saaks otsustada, mis edasi...nagu Norton AntiVirus Quarantine. Huvitav pole AVGd ammu kasutanud, aga kas see programm seda ei tee. Ehk kui midagi viltu läheks, saaks kasutaja kasvõi recovery modes garantiinist failid taastada. Võimalik, et tahan viirusetõrjujatel liialt palju.

Üldiselt kustutamine on viimane võimalus probleemi ravida.

DOSi viiruste algusest jäi meelde seik, kus üks viirus suutis viiruste definitsioonide andmebaasi panna vajalike DOS failide nimed ja viirusetõrje tegi ära räpase töö... Õnneks tänapäeval on signatuuride failid krüpteeritud + algoritmid salastatud.

Aga ikkagit...kuidas kaitsta end viirusetõrje programmide apsakate eest...?

4. nov 2008

MSSQL : DDL trigger ehk paneme pirukasse muna

Üldiselt tavaolukorras ei ole DDL triggereid eriti vaja, ainus hea rakendus neile on andmebaasis toimunud muudatuste logimiseks. Olen seda vaid kasutanud testimisel , üks lihtne näide.


create trigger ainultadminn
on database
for DDL_TABLE_EVENTS
-- DDL_DATABASE_LEVEL_EVENTS
as
begin
declare @xmldat xml
declare @event nvarchar(128)
declare @sql nvarchar(max)
set @xmldat=EVENTDATA()
set @event=isnull(@xmldat.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(128)'),'')
set @sql=isnull(@xmldat.value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)'),'')

if (CURRENT_USER not in ('dbo','sa')) and (@event in ('ALTER_TABLE','DROP_TABLE'))
begin
raiserror('--- Viga: Sa tegeled vale asjaga',16,1)
rollback
end
end;


Sündmuste tüüpide kirjelduse saab siit :
http://msdn.microsoft.com/en-us/library/bb510452.aspx

Ps. DDL triggerid on toetatud alates MSSQL 2005



Soovitan ka tutvuda Logon triggeritega, ala ntx. kasutaja Karu saab siis sisselogida, kui kasutaja Mesitaru on väljas jne

Logon Triggers

1. nov 2008

MSSQL: näita andmebaasi avatud transaktsioone

Täna olen MSSQL 2008 lainel, seetõttu veel näiteid...

Üldiselt Microsoft on ka palju toredaid näiteid kokku pannud, aga enamasti ei leia neid õigel hetkel.

Üks disainiviga, mis võib ilmneda halbadel juhtudel on avatud transaktioon ehk rollbacki - commitit ei järgne. Kaks SQLi:



-- seda kasutaks mina, näitab kõiki avatud transaktsioone
SELECT convert(varchar(5000),s.context_info) as sessioonisonum, s.*
FROM sys.dm_exec_sessions AS s
WHERE EXISTS
(
SELECT *
FROM sys.dm_tran_session_transactions AS t
WHERE t.session_id = s.session_id
)



Microsofti näide oli, seal kuvatakse transaktioone, mis IDLE ehk üldse midagi ei toimu...

SELECT convert(varchar(5000),s.context_info) as sessioonisonum, s.*
FROM sys.dm_exec_sessions AS s
WHERE EXISTS
(
SELECT *
FROM sys.dm_tran_session_transactions AS t
WHERE t.session_id = s.session_id
)


AND NOT EXISTS
(
SELECT *
FROM sys.dm_exec_requests AS r
WHERE r.session_id = s.session_id
)



Nii, teeme nüüd näite, mis võite katsetada testserveril !

declare @vb varbinary(128)
set @vb=cast('adminn, ma näen sind' as varbinary)
set context_info @vb
begin tran


Ja, kui adminn esimest päringut sooritab, võite kindel olla, et Teile helistatakse ;))



Üldiselt, kui last_request_start_time näitab, et transaktsioon avatud rohkem, kui 15 min...oleks arukas see lõpetada.

kill on Sinu sõber



Lõpetuseks veel üks hea SQL Microsofti poolt, vägagi efektiivselt leiab päringud, mis serverit koormavad !!!



SELECT TOP 55 total_worker_time/execution_count AS [Avg CPU Time],
SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY total_worker_time/execution_count DESC;

MSSQL : Fail varbinary/image kujul, tahaks lugeda tema sisu...

Redaktorites ja enamus utiliitides on blobide lugemine suht vaevaline, tihti lihtsam see blob salvestada. Kui ntx andmebaasis hoitakse tekstifaile, tahaks ju mõnikord pilgu peale heita.


Üks triviaalne sql:


declare @p varbinary(max)
declare @c varchar(max)

select @p=failikeha
from failid
where faili_id=1787449
/*
muutuja on ise varchar max tüüpi, aga ma ei soovi kogu faili "dumpi"
ainult esimesed 8000 märki, kui kõike vaja kirjutage 8000 asemel max
*/

set @c=convert(varchar(8000),@p)


select @c



varchar(max) on kasutusel alates MSSQL 2005 !

27. okt 2008

Naljakas aadress :)

Asciitable

Kunagi esimene kogemus arvutiga ja netiga oli see tippisin www.whitehouse.com ning "roosasid kiisusid" ekraan täis. Aga nüüd see aadress ikka muutunud rahva leheks...mitte, et varem polnud :)))

26. okt 2008

Programmeerijana tahaks natuke huvitavamat tööd...

Viimasel ajal on töö valdkond ikka vägagi igavaks läinud - php ja C# kliendi rakenduste loomine pole just innovatiivsuse tipp. Tõsta nupp paremale, siis vasakule, värvi siniseks, siis punaseks, siis enable ja disable...

Tunnen aina rohkem puudust SMP, multithreading, serviced, winapid, Apache moodulid, ISAPI...

Aeg-ajalt nö uurin vanu häkke, mis seotud süsteemidega ennekõike vaimu värskena hoidmiseks.

Paistab, et päästetee Linux, pole igapäevane Linuxi kasutaja, aga mul suur respekt Linuxi ees. Windows paneb ropendama, kaua seda arendatud, siiani ta arhitektuuriliselt nagu sveitsi juust.

Ojaa tõesti Vista küsib iga asja kohta, see nõuab admin õigusi...ala "do you wan't to shutdown / crash computer" ...sorry...adminni õigusi vaja...see oli nali pigem, aga umbes nii on.


Mis mulle ei meeldi Javas ja C# mäluhaldus, pigem on nii, et garbage collector hoiab asju seni, kuni ta arvab, et asju vaja. Tule taevas appi, enamus progejaid, keda ma kohanud ei tea enam isegi mis asi on STACK, ärme stackpointeritest üldse räägi. Mina progedes loen siiani bitte...viimasel ajal tehaks selgeks, et tänapäeva klientide arvutitel mälu piisavalt pole mõtet pingutada. See pole enam normaalne. Need mugavad programmeerimiskeeled võimaldavad kiireid tulemusi, aga resultaat pole masin-optimaalne ! Näen ainult kohmakaid rakendusi.

Tahaks näha mõnda mugavaks muutunud progejat PICi progemas...:)))

Loodame, et tehniline päike tuleb uuesti pilve tagant välja

Seniks head EIP'd kõigile

24. okt 2008

Kaua võtaks aega TcpView kirjutamine?

Sellise küsimise esitasin endale ning võtsin programmeerimisalase vaimu elustamiseks winapid ette, täpselt 40 min :)))

Tegelikkuses Sysinternasli TcpView on
graafiline variant programmist netstat.exe -a -b


Reaalsuses huvitavad sind ainult kaks apit ! GetExtendedTcpTable ja vajadusel AllocateAndGetTcpExTableFromStack

WinXp alates saab ka protsessi kätte, selleks peate kasutama lippu esimeses API's TCP_TABLE_OWNER_PID_ALL

UDP tabel ka olemas, aga pole nii huvitav ! Asenda Tcp API nimes lihtsalt UDP'ga

Kui soov laiendada, siis läbi MIB_TCPROW ja API SetTcpEntry saab ühenduse sulgeda, peate lihtsalt lipu lisama MIB_TCP_STATE_DELETE_TCB.


Seniks soovin kõigile : net helpmsg 4006 :))))

23. okt 2008

php ja "headers already sent"

Oli vaja lisada feature, et ühte lehte alati tõmmataks uuesti, pole midagi erilist. Tavaline asi

<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>

Aga sain vea, "headers already sent"... nii vaatasin, et include / required_one osad päises, viisin headeri koodi täitsa üles. Ikka viga ja öeldakse, et output tekkinud line 1 juures ?

Kratsin kukalt, mis lugu see veel on, testisin muutujaga headers_sent ja tulemus tõene.

No mis värk on...viskasin kogu koodi välja ning ainult jätsin headerid sisse. Ikka sama viga, tekkis tunne, et Basic authentication paneb näkku nö. Ei miskit...


Ja tunni aja pärast süttis tuluke, et saatan on peidetud redaktorisse !!!

Kui php faili tegin, siis kasutasin notepadi ja salvestasin UTF8 formaati no loogiline ju, et BOM
kirjutatakse faili algusesse. Redaktorid seda ei kuva ning php lehed ka ei kurda...


Jälle saime targemaks...