su - mdmaug -c 'cd /home/mdmaug/mdmaug/ ; python3 mdmaug.py'
killall python3 #pri Ctrl+C v prikazu su se uzavre jen terminal, ale ne uz python skript. Takhle to zas zabije veskery Python, ale sandboxovy-zavirovany uzivatel mdmaug stejne ma byt jen na spousteni tohohle skriptu.
self.spyfile=None# cesta k souboru se podezrelym kodem poustenym strankou
self.sourcefile=None# cesta k souboru se zdrojovym kodem
defsetSourcefile(self,sourcefile):
ifself.sourcefile!=None:
raiseRuntimeError('sourcefile','uz bylo definovano')# na tohle nejsme pripraveni - asi funkce v main.js pro jmeno souboru je spatna, protoze je jina od Domains.funkce
self.sourcefile=sourcefile
defsetSpyfile(self,spyfile):
ifself.spyfile!=None:
raiseRuntimeError('spyfile','uz bylo definovano')# na tohle nejsme pripraveni - asi funkce v main.js pro jmeno souboru je spatna, protoze je jina od Domains.funkce
whilelen(domains):# spusti maximalne 10 threadu doraz, jednou mi to totiz preteklo (kazda domena spusti jeste tolik threadu, kolik ma IP, ale tech byva jen par)
#updatovat domene timestamp setkani, aby byla v dalsim exportu #X Db.cur.
#Db.cur = Db.connection.cursor()
if((Turris.update(timestamp=datetime.datetime.now()).where(Turris.remoteHost==remoteHost).execute()==0#domena v db jeste nema jmeno (mozna tam ma IP) Xdomena nema ip, v databazi je tedy 1x, vyhledavame dle nazvu domeny
andTurris.select().where(Turris.remoteHost==remoteHost).count()==0)# za tri hodiny jsem nezjistil proc, ale update vraci NULU. Ovsem jakmile zavolam pdb, uz vraci korektne treba osmicku. Sigr jeden. Tak sem davam tenhle select, funguje lip. Divne je, ze v nasledujicim radku u IP update vraci korektni cislo. Prehodit jsem je nezkousel.
orTurris.update(timestamp=datetime.datetime.now()).where(Turris.ip==ip).execute()==0):#domena v db nema IP (mozna tam je zaznam s totoznym jmenem a treba jinou IP) Xdomena ma ip, kazdy je v db zvlast, vyhledavame dle ip
#with open("/tmp/mdm/pomoc","w") as f: f.write(contents)
#logging.warning("{}".format(contents))
print("QUIT")
quit("i should have never come here")#mozna rozbity js rozbil i tady pana
fortaginsoup.find_all():
# vypise potencialne nebezpecne tagy
ifbool(len([Trueforaintag.attrsif(a.startswith('on'))])):#ma dynamicky js content v atributu
pygment(tag)
iftag.namein["meta","link","frame","iframe","object","embed"]:# XX link-rel only, meta-redirect only? Jsou jeste jine atributy nebezpecne
pygment(tag)#iframe, object, embed -> vypsat cele tagy
iftag.name=="img":
pygment("<img src={} />".format(tag.get("src")))# zajima nas pouze atribut src, ale pro jasnost, ze jde o tag, tam vratime zobacky
fortaginsoup.find_all("script"):#na konci vsechny skripty -> js parser
inner,tag.contents=tag.contents,[]
pygment(tag)#vytisknout <script> bez vnitrku
iflen(inner):#pokud mel script vnitrek, parsovat ho pomoci js
forsubtagininner:#subtag ma byt jen jeden, a to obsah skriptu. Nevylucuju ale existenci nevalidnich subtagu, ktere kdyby existovaly, tak o nich chci vedet. Proto nepouziju rovnou inner[0]
TrafficLogParser.JsParse(subtag)
#HtmlParse("gfdg<meta />fd <img src='LINK' onclick='test' /> konec <hr>")
# @param cached Pokud chceme zobrazit cachovanou verzi analyzy, dejme True. Pokud dame int, je to maximalni stari (ve dnech). Kdyz se nenalezne, zanazyzuje se znovu.