├── DionaeaFR ├── __init__.py ├── static │ ├── img │ │ ├── flags │ │ │ ├── ad.gif │ │ │ ├── ae.gif │ │ │ ├── af.gif │ │ │ ├── ag.gif │ │ │ ├── ai.gif │ │ │ ├── al.gif │ │ │ ├── am.gif │ │ │ ├── an.gif │ │ │ ├── ao.gif │ │ │ ├── ar.gif │ │ │ ├── as.gif │ │ │ ├── at.gif │ │ │ ├── au.gif │ │ │ ├── aw.gif │ │ │ ├── ax.gif │ │ │ ├── az.gif │ │ │ ├── ba.gif │ │ │ ├── bb.gif │ │ │ ├── bd.gif │ │ │ ├── be.gif │ │ │ ├── bf.gif │ │ │ ├── bg.gif │ │ │ ├── bh.gif │ │ │ ├── bi.gif │ │ │ ├── bj.gif │ │ │ ├── bm.gif │ │ │ ├── bn.gif │ │ │ ├── bo.gif │ │ │ ├── br.gif │ │ │ ├── bs.gif │ │ │ ├── bt.gif │ │ │ ├── bv.gif │ │ │ ├── bw.gif │ │ │ ├── by.gif │ │ │ ├── bz.gif │ │ │ ├── ca.gif │ │ │ ├── cc.gif │ │ │ ├── cd.gif │ │ │ ├── cf.gif │ │ │ ├── cg.gif │ │ │ ├── ch.gif │ │ │ ├── ci.gif │ │ │ ├── ck.gif │ │ │ ├── cl.gif │ │ │ ├── cm.gif │ │ │ ├── cn.gif │ │ │ ├── co.gif │ │ │ ├── cr.gif │ │ │ ├── cs.gif │ │ │ ├── cu.gif │ │ │ ├── cv.gif │ │ │ ├── cx.gif │ │ │ ├── cy.gif │ │ │ ├── cz.gif │ │ │ ├── de.gif │ │ │ ├── dj.gif │ │ │ ├── dk.gif │ │ │ ├── dm.gif │ │ │ ├── do.gif │ │ │ ├── dz.gif │ │ │ ├── ec.gif │ │ │ ├── ee.gif │ │ │ ├── eg.gif │ │ │ ├── eh.gif │ │ │ ├── er.gif │ │ │ ├── es.gif │ │ │ ├── et.gif │ │ │ ├── eu.gif │ │ │ ├── fam.gif │ │ │ ├── fi.gif │ │ │ ├── fj.gif │ │ │ ├── fk.gif │ │ │ ├── fm.gif │ │ │ ├── fo.gif │ │ │ ├── fr.gif │ │ │ ├── ga.gif │ │ │ ├── gb.gif │ │ │ ├── gd.gif │ │ │ ├── ge.gif │ │ │ ├── gf.gif │ │ │ ├── gh.gif │ │ │ ├── gi.gif │ │ │ ├── gl.gif │ │ │ ├── gm.gif │ │ │ ├── gn.gif │ │ │ ├── gp.gif │ │ │ ├── gq.gif │ │ │ ├── gr.gif │ │ │ ├── gs.gif │ │ │ ├── gt.gif │ │ │ ├── gu.gif │ │ │ ├── gw.gif │ │ │ ├── gy.gif │ │ │ ├── hk.gif │ │ │ ├── hm.gif │ │ │ ├── hn.gif │ │ │ ├── hr.gif │ │ │ ├── ht.gif │ │ │ ├── hu.gif │ │ │ ├── id.gif │ │ │ ├── ie.gif │ │ │ ├── il.gif │ │ │ ├── in.gif │ │ │ ├── io.gif │ │ │ ├── iq.gif │ │ │ ├── ir.gif │ │ │ ├── is.gif │ │ │ ├── it.gif │ │ │ ├── jm.gif │ │ │ ├── jo.gif │ │ │ ├── jp.gif │ │ │ ├── ke.gif │ │ │ ├── kg.gif │ │ │ ├── kh.gif │ │ │ ├── ki.gif │ │ │ ├── km.gif │ │ │ ├── kn.gif │ │ │ ├── kp.gif │ │ │ ├── kr.gif │ │ │ ├── kw.gif │ │ │ ├── ky.gif │ │ │ ├── kz.gif │ │ │ ├── la.gif │ │ │ ├── lb.gif │ │ │ ├── lc.gif │ │ │ ├── li.gif │ │ │ ├── lk.gif │ │ │ ├── lr.gif │ │ │ ├── ls.gif │ │ │ ├── lt.gif │ │ │ ├── lu.gif │ │ │ ├── lv.gif │ │ │ ├── ly.gif │ │ │ ├── ma.gif │ │ │ ├── mc.gif │ │ │ ├── md.gif │ │ │ ├── me.gif │ │ │ ├── mg.gif │ │ │ ├── mh.gif │ │ │ ├── mk.gif │ │ │ ├── ml.gif │ │ │ ├── mm.gif │ │ │ ├── mn.gif │ │ │ ├── mo.gif │ │ │ ├── mp.gif │ │ │ ├── mq.gif │ │ │ ├── mr.gif │ │ │ ├── ms.gif │ │ │ ├── mt.gif │ │ │ ├── mu.gif │ │ │ ├── mv.gif │ │ │ ├── mw.gif │ │ │ ├── mx.gif │ │ │ ├── my.gif │ │ │ ├── mz.gif │ │ │ ├── na.gif │ │ │ ├── nc.gif │ │ │ ├── ne.gif │ │ │ ├── nf.gif │ │ │ ├── ng.gif │ │ │ ├── ni.gif │ │ │ ├── nl.gif │ │ │ ├── no.gif │ │ │ ├── np.gif │ │ │ ├── nr.gif │ │ │ ├── nu.gif │ │ │ ├── nz.gif │ │ │ ├── om.gif │ │ │ ├── pa.gif │ │ │ ├── pe.gif │ │ │ ├── pf.gif │ │ │ ├── pg.gif │ │ │ ├── ph.gif │ │ │ ├── pk.gif │ │ │ ├── pl.gif │ │ │ ├── pm.gif │ │ │ ├── pn.gif │ │ │ ├── pr.gif │ │ │ ├── ps.gif │ │ │ ├── pt.gif │ │ │ ├── pw.gif │ │ │ ├── py.gif │ │ │ ├── qa.gif │ │ │ ├── re.gif │ │ │ ├── ro.gif │ │ │ ├── rs.gif │ │ │ ├── ru.gif │ │ │ ├── rw.gif │ │ │ ├── sa.gif │ │ │ ├── sb.gif │ │ │ ├── sc.gif │ │ │ ├── sd.gif │ │ │ ├── se.gif │ │ │ ├── sg.gif │ │ │ ├── sh.gif │ │ │ ├── si.gif │ │ │ ├── sj.gif │ │ │ ├── sk.gif │ │ │ ├── sl.gif │ │ │ ├── sm.gif │ │ │ ├── sn.gif │ │ │ ├── so.gif │ │ │ ├── sr.gif │ │ │ ├── st.gif │ │ │ ├── sv.gif │ │ │ ├── sy.gif │ │ │ ├── sz.gif │ │ │ ├── tc.gif │ │ │ ├── td.gif │ │ │ ├── tf.gif │ │ │ ├── tg.gif │ │ │ ├── th.gif │ │ │ ├── tj.gif │ │ │ ├── tk.gif │ │ │ ├── tl.gif │ │ │ ├── tm.gif │ │ │ ├── tn.gif │ │ │ ├── to.gif │ │ │ ├── tr.gif │ │ │ ├── tt.gif │ │ │ ├── tv.gif │ │ │ ├── tw.gif │ │ │ ├── tz.gif │ │ │ ├── ua.gif │ │ │ ├── ug.gif │ │ │ ├── um.gif │ │ │ ├── us.gif │ │ │ ├── uy.gif │ │ │ ├── uz.gif │ │ │ ├── va.gif │ │ │ ├── vc.gif │ │ │ ├── ve.gif │ │ │ ├── vg.gif │ │ │ ├── vi.gif │ │ │ ├── vn.gif │ │ │ ├── vu.gif │ │ │ ├── wf.gif │ │ │ ├── ws.gif │ │ │ ├── ye.gif │ │ │ ├── yt.gif │ │ │ ├── za.gif │ │ │ ├── zm.gif │ │ │ ├── zw.gif │ │ │ ├── zz.gif │ │ │ ├── wales.gif │ │ │ ├── catalonia.gif │ │ │ ├── england.gif │ │ │ └── scotland.gif │ │ ├── glyphicons-halflings.png │ │ └── glyphicons-halflings-white.png │ ├── fonts │ │ └── coolvetica rg.ttf │ ├── django_tables2 │ │ └── themes │ │ │ ├── paleblue │ │ │ ├── img │ │ │ │ ├── true.gif │ │ │ │ ├── false.gif │ │ │ │ ├── header-bg.png │ │ │ │ ├── pagination-bg.gif │ │ │ │ ├── arrow-active-up.png │ │ │ │ ├── arrow-active-down.png │ │ │ │ ├── arrow-inactive-down.png │ │ │ │ └── arrow-inactive-up.png │ │ │ └── css │ │ │ │ └── screen.css │ │ │ └── bootstrap │ │ │ ├── img │ │ │ ├── false.gif │ │ │ ├── true.gif │ │ │ ├── header-bg.png │ │ │ ├── pagination-bg.gif │ │ │ ├── arrow-active-up.png │ │ │ ├── arrow-active-down.png │ │ │ ├── arrow-inactive-up.png │ │ │ └── arrow-inactive-down.png │ │ │ └── css │ │ │ └── screen.css │ ├── css │ │ ├── jquery-jvectormap.css │ │ ├── styles.css │ │ ├── styles.less │ │ └── normalize.css │ └── js │ │ └── kendo.fx.min.js ├── Templates │ ├── 404.html │ ├── 500.html │ ├── graphs │ │ ├── connections.html │ │ ├── ips.html │ │ ├── urls.html │ │ ├── malware.html │ │ ├── ports.html │ │ └── services.html │ ├── maps │ │ ├── attackers.html │ │ └── countries.html │ ├── table.html │ ├── base.html │ └── home.html ├── wsgi.py ├── urls.py └── settings.py.dist ├── Web ├── __init__.py ├── columns │ ├── __init__.py │ └── base.py ├── filters │ ├── __init__.py │ ├── download.py │ └── connection.py ├── forms │ ├── __init__.py │ ├── download.py │ └── connection.py ├── models │ ├── __init__.py │ ├── mysqlcommandop.py │ ├── offer.py │ ├── mysqlcommandarg.py │ ├── dcerpcservice.py │ ├── virustotalscan.py │ ├── emuprofile.py │ ├── emuservice.py │ ├── login.py │ ├── dcerpcbind.py │ ├── mssqlcommand.py │ ├── resolve.py │ ├── sipvia.py │ ├── mssqlfingerprint.py │ ├── dcerpcrequest.py │ ├── sipsdpmedia.py │ ├── download.py │ ├── mysqlcommand.py │ ├── p0f.py │ ├── sipsdporigin.py │ ├── virustotal.py │ ├── sipaddr.py │ ├── dcerpcserviceop.py │ ├── sipcommand.py │ ├── sipsdpconnectiondata.py │ └── connection.py ├── tests │ └── __init__.py ├── views │ ├── __init__.py │ ├── download.py │ ├── other.py │ ├── map.py │ └── connection.py ├── tables │ ├── __init__.py │ ├── download.py │ └── connection.py └── context_processors.py ├── .gitignore ├── manage.py ├── dionaeafr_init.sh └── README.md /DionaeaFR/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Web/__init__.py: -------------------------------------------------------------------------------- 1 | # vim: set expandtab:ts=4 2 | -------------------------------------------------------------------------------- /Web/columns/__init__.py: -------------------------------------------------------------------------------- 1 | # vim: set expandtab:ts=4 2 | -------------------------------------------------------------------------------- /Web/filters/__init__.py: -------------------------------------------------------------------------------- 1 | # vim: set expandtab:ts=4 2 | -------------------------------------------------------------------------------- /Web/forms/__init__.py: -------------------------------------------------------------------------------- 1 | # vim: set expandtab:ts=4 2 | -------------------------------------------------------------------------------- /Web/models/__init__.py: -------------------------------------------------------------------------------- 1 | # vim: set expandtab:ts=4 2 | -------------------------------------------------------------------------------- /Web/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # vim: set expandtab:ts=4 2 | -------------------------------------------------------------------------------- /Web/views/__init__.py: -------------------------------------------------------------------------------- 1 | # vim: set expandtab:ts=4 2 | -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ad.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ad.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ae.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ae.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/af.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/af.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ag.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ag.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ai.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ai.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/al.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/al.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/am.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/am.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/an.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/an.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ao.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ao.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ar.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/as.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/as.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/at.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/at.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/au.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/au.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/aw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/aw.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ax.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ax.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/az.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/az.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ba.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ba.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/bb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/bb.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/bd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/bd.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/be.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/be.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/bf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/bf.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/bg.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/bh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/bh.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/bi.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/bi.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/bj.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/bj.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/bm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/bm.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/bn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/bn.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/bo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/bo.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/br.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/br.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/bs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/bs.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/bt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/bt.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/bv.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/bv.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/bw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/bw.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/by.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/by.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/bz.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/bz.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ca.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ca.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/cc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/cc.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/cd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/cd.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/cf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/cf.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/cg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/cg.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ch.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ch.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ci.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ci.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ck.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ck.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/cl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/cl.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/cm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/cm.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/cn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/cn.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/co.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/co.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/cr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/cr.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/cs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/cs.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/cu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/cu.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/cv.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/cv.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/cx.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/cx.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/cy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/cy.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/cz.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/cz.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/de.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/de.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/dj.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/dj.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/dk.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/dk.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/dm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/dm.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/do.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/do.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/dz.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/dz.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ec.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ec.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ee.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ee.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/eg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/eg.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/eh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/eh.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/er.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/er.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/es.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/es.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/et.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/et.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/eu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/eu.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/fam.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/fam.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/fi.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/fi.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/fj.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/fj.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/fk.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/fk.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/fm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/fm.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/fo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/fo.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/fr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/fr.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ga.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ga.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gb.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gd.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ge.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ge.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gf.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gh.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gi.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gi.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gl.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gm.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gn.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gp.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gp.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gq.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gq.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gr.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gs.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gt.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gu.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gw.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/gy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/gy.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/hk.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/hk.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/hm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/hm.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/hn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/hn.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/hr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/hr.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ht.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ht.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/hu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/hu.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/id.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/id.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ie.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ie.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/il.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/il.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/in.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/in.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/io.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/io.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/iq.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/iq.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ir.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ir.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/is.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/is.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/it.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/it.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/jm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/jm.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/jo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/jo.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/jp.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/jp.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ke.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ke.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/kg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/kg.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/kh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/kh.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ki.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ki.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/km.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/km.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/kn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/kn.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/kp.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/kp.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/kr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/kr.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/kw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/kw.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ky.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ky.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/kz.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/kz.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/la.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/la.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/lb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/lb.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/lc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/lc.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/li.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/li.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/lk.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/lk.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/lr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/lr.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ls.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ls.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/lt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/lt.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/lu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/lu.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/lv.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/lv.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ly.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ly.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ma.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ma.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mc.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/md.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/md.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/me.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/me.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mg.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mh.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mk.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mk.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ml.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ml.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mm.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mn.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mo.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mp.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mp.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mq.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mq.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mr.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ms.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ms.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mt.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mu.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mv.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mv.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mw.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mx.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mx.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/my.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/my.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/mz.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/mz.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/na.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/na.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/nc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/nc.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ne.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ne.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/nf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/nf.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ng.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ng.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ni.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ni.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/nl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/nl.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/no.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/no.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/np.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/np.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/nr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/nr.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/nu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/nu.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/nz.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/nz.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/om.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/om.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/pa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/pa.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/pe.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/pe.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/pf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/pf.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/pg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/pg.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ph.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ph.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/pk.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/pk.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/pl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/pl.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/pm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/pm.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/pn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/pn.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/pr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/pr.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ps.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ps.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/pt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/pt.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/pw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/pw.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/py.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/py.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/qa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/qa.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/re.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/re.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ro.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ro.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/rs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/rs.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ru.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ru.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/rw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/rw.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/sa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/sa.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/sb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/sb.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/sc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/sc.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/sd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/sd.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/se.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/se.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/sg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/sg.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/sh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/sh.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/si.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/si.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/sj.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/sj.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/sk.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/sk.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/sl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/sl.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/sm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/sm.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/sn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/sn.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/so.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/so.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/sr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/sr.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/st.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/st.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/sv.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/sv.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/sy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/sy.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/sz.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/sz.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/tc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/tc.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/td.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/td.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/tf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/tf.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/tg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/tg.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/th.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/th.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/tj.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/tj.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/tk.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/tk.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/tl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/tl.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/tm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/tm.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/tn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/tn.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/to.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/to.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/tr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/tr.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/tt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/tt.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/tv.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/tv.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/tw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/tw.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/tz.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/tz.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ua.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ua.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ug.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ug.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/um.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/um.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/us.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/us.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/uy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/uy.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/uz.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/uz.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/va.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/va.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/vc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/vc.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ve.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ve.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/vg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/vg.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/vi.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/vi.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/vn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/vn.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/vu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/vu.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/wf.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/wf.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ws.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ws.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/ye.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/ye.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/yt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/yt.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/za.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/za.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/zm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/zm.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/zw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/zw.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/zz.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/zz.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/wales.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/wales.gif -------------------------------------------------------------------------------- /DionaeaFR/static/fonts/coolvetica rg.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/fonts/coolvetica rg.ttf -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/catalonia.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/catalonia.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/england.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/england.gif -------------------------------------------------------------------------------- /DionaeaFR/static/img/flags/scotland.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/flags/scotland.gif -------------------------------------------------------------------------------- /Web/tables/__init__.py: -------------------------------------------------------------------------------- 1 | from Web.tables.connection import * 2 | from Web.tables.download import * 3 | 4 | # vim: set expandtab:ts=4 5 | -------------------------------------------------------------------------------- /DionaeaFR/static/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /DionaeaFR/static/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/paleblue/img/true.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/paleblue/img/true.gif -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/bootstrap/img/false.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/bootstrap/img/false.gif -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/bootstrap/img/true.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/bootstrap/img/true.gif -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/paleblue/img/false.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/paleblue/img/false.gif -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/paleblue/img/header-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/paleblue/img/header-bg.png -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/bootstrap/img/header-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/bootstrap/img/header-bg.png -------------------------------------------------------------------------------- /Web/context_processors.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | 3 | 4 | def expose_extra_settings_keys(request): 5 | return { 6 | 'RESULTS_DAYS': settings.RESULTS_DAYS 7 | } -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/bootstrap/img/pagination-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/bootstrap/img/pagination-bg.gif -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/paleblue/img/pagination-bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/paleblue/img/pagination-bg.gif -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/bootstrap/img/arrow-active-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/bootstrap/img/arrow-active-up.png -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/paleblue/img/arrow-active-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/paleblue/img/arrow-active-up.png -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/bootstrap/img/arrow-active-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/bootstrap/img/arrow-active-down.png -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/bootstrap/img/arrow-inactive-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/bootstrap/img/arrow-inactive-up.png -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/paleblue/img/arrow-active-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/paleblue/img/arrow-active-down.png -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/paleblue/img/arrow-inactive-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/paleblue/img/arrow-inactive-down.png -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/paleblue/img/arrow-inactive-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/paleblue/img/arrow-inactive-up.png -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/bootstrap/img/arrow-inactive-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rubenespadas/DionaeaFR/HEAD/DionaeaFR/static/django_tables2/themes/bootstrap/img/arrow-inactive-down.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__/ 2 | *.py[cod] 3 | 4 | .idea/ 5 | /DionaeaFR.sublime-project 6 | /DionaeaFR.sublime-workspace 7 | 8 | static/* 9 | DionaeaFR/settings.py 10 | DionaeaFR/static/GeoIP.dat 11 | DionaeaFR/static/GeoLiteCity.dat 12 | -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == "__main__": 6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DionaeaFR.settings") 7 | 8 | from django.core.management import execute_from_command_line 9 | 10 | pid = str(os.getpid()) 11 | pidfile = "/var/run/dionaeafr/dionaeafr.pid" 12 | file(pidfile, 'w').write(pid) 13 | 14 | execute_from_command_line(sys.argv) 15 | -------------------------------------------------------------------------------- /Web/tables/download.py: -------------------------------------------------------------------------------- 1 | import django_tables2 as tables 2 | 3 | from django_tables2.utils import A 4 | 5 | from Web.models.download import Download 6 | 7 | 8 | class DownloadTable(tables.Table): 9 | connection = tables.LinkColumn( 10 | 'connection-detail', 11 | args=[A('connection')], 12 | verbose_name="ID" 13 | ) 14 | 15 | class Meta: 16 | model = Download 17 | exclude = ("download", ) 18 | empty_text = 'No data.' 19 | template = 'table.html' 20 | attrs = { 21 | 'class': 'table table-hover' 22 | } 23 | 24 | # vim: set expandtab:ts=4 25 | -------------------------------------------------------------------------------- /Web/filters/download.py: -------------------------------------------------------------------------------- 1 | try: 2 | import django_filters as filters 3 | except ImportError: 4 | print "Install django-filter" 5 | print "\tpip install django-filter" 6 | pass 7 | 8 | from Web.models.download import Download 9 | 10 | 11 | class DownloadFilter(filters.FilterSet): 12 | download_url = filters.CharFilter( 13 | lookup_type='icontains' 14 | ) 15 | 16 | download_md5_hash = filters.CharFilter( 17 | lookup_type='contains' 18 | ) 19 | 20 | class Meta: 21 | model = Download 22 | fields = [ 23 | 'download_url', 24 | 'download_md5_hash', 25 | ] 26 | 27 | # vim: set expandtab:ts=4 28 | -------------------------------------------------------------------------------- /Web/forms/download.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | 3 | 4 | class DownloadFilterForm(forms.Form): 5 | download_url = forms.CharField( 6 | label='Url', 7 | required=False 8 | ) 9 | 10 | download_url.widget = forms.TextInput( 11 | attrs={ 12 | 'class': 'span10', 13 | 'placeholder': 'Filter...' 14 | } 15 | ) 16 | 17 | download_md5_hash = forms.CharField( 18 | label='MD5', 19 | required=False, 20 | max_length=32 21 | ) 22 | 23 | download_md5_hash.widget = forms.TextInput( 24 | attrs={ 25 | 'class': 'span10', 26 | 'placeholder': 'Filter...' 27 | } 28 | ) 29 | 30 | # vim: set expandtab:ts=4 31 | -------------------------------------------------------------------------------- /Web/models/mysqlcommandop.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | 4 | class MysqlCommandOp(models.Model): 5 | mysql_command_op = models.IntegerField( 6 | primary_key=True, 7 | blank=True 8 | ) 9 | 10 | mysql_command_cmd = models.IntegerField( 11 | unique=True 12 | ) 13 | 14 | mysql_command_op_name = models.TextField( 15 | ) 16 | 17 | class Meta: 18 | db_table = u'mysql_command_ops' 19 | ordering = ['-mysql_command_op'] 20 | verbose_name_plural = "MysqlCommandOps" 21 | 22 | def __str__(self): 23 | return str(self.mysql_command_op) 24 | 25 | @property 26 | def getName(self): 27 | return str(self.mysql_command_op_name) 28 | 29 | # vim: set expandtab:ts=4 30 | -------------------------------------------------------------------------------- /Web/models/offer.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.connection import Connection 4 | 5 | 6 | class Offer(models.Model): 7 | offer = models.IntegerField(primary_key=True, blank=True) 8 | 9 | connection = models.ForeignKey( 10 | Connection, 11 | to_field='connection', 12 | db_column='connection', 13 | related_name='connection__connection', 14 | verbose_name='Connection' 15 | ) 16 | 17 | offer_url = models.TextField( 18 | blank=True 19 | ) 20 | 21 | class Meta: 22 | db_table = u'offers' 23 | ordering = ['-offer'] 24 | verbose_name_plural = "Offers" 25 | 26 | def __str__(self): 27 | return str(self.offer) 28 | 29 | # vim: set expandtab:ts=4 30 | -------------------------------------------------------------------------------- /Web/models/mysqlcommandarg.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | 4 | class MysqlCommandArg(models.Model): 5 | mysql_command_arg = models.IntegerField( 6 | primary_key=True, 7 | blank=True 8 | ) 9 | 10 | mysql_command = models.IntegerField() 11 | 12 | mysql_command_arg_index = models.TextField() 13 | 14 | mysql_command_arg_data = models.TextField() 15 | 16 | class Meta: 17 | db_table = u'mysql_command_args' 18 | ordering = ['-mysql_command_arg'] 19 | verbose_name_plural = "MysqlCommandArgs" 20 | 21 | def __str__(self): 22 | return str(self.mysql_command_arg) 23 | 24 | @property 25 | def getData(self): 26 | return str(self.mysql_command_arg_data) 27 | 28 | # vim: set expandtab:ts=4 29 | -------------------------------------------------------------------------------- /Web/models/dcerpcservice.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | 4 | class Dcerpcservice(models.Model): 5 | dcerpcservice = models.IntegerField( 6 | primary_key=True, 7 | blank=True 8 | ) 9 | 10 | dcerpcservice_uuid = models.TextField( 11 | unique=True, 12 | blank=True 13 | ) 14 | 15 | dcerpcservice_name = models.TextField( 16 | blank=True 17 | ) 18 | 19 | class Meta: 20 | db_table = u'dcerpcservices' 21 | ordering = ['-dcerpcservice'] 22 | verbose_name_plural = "Dcerpcservices" 23 | 24 | def __str__(self): 25 | return str(self.dcerpcservice) 26 | 27 | @property 28 | def getName(self): 29 | return str(self.dcerpcservice_name) 30 | 31 | # vim: set expandtab:ts=4 32 | -------------------------------------------------------------------------------- /Web/models/virustotalscan.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | 4 | class Virustotalscan(models.Model): 5 | virustotalscan = models.IntegerField( 6 | primary_key=True, 7 | blank=True 8 | ) 9 | 10 | virustotal = models.IntegerField() 11 | 12 | virustotalscan_scanner = models.TextField() 13 | 14 | virustotalscan_result = models.TextField( 15 | blank=True 16 | ) 17 | 18 | class Meta: 19 | db_table = u'virustotalscans' 20 | ordering = ['-virustotalscan'] 21 | verbose_name_plural = "Virustotalscans" 22 | 23 | def __str__(self): 24 | return str(self.virustotalscan) 25 | 26 | @property 27 | def getVirusName(self): 28 | return str(self.virustotalscan_result) 29 | 30 | # vim: set expandtab:ts=4 31 | -------------------------------------------------------------------------------- /Web/models/emuprofile.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.connection import Connection 4 | 5 | 6 | class EmuProfile(models.Model): 7 | emu_profile = models.IntegerField( 8 | primary_key=True, 9 | blank=True 10 | ) 11 | 12 | connection = models.ForeignKey( 13 | Connection, 14 | to_field='connection', 15 | db_column='connection', 16 | related_name='connection__connection', 17 | verbose_name='Connection' 18 | ) 19 | 20 | emu_profile_json = models.TextField( 21 | blank=True 22 | ) 23 | 24 | class Meta: 25 | db_table = u'emu_profiles' 26 | ordering = ['-emu_profile'] 27 | verbose_name_plural = "EmuProfiles" 28 | 29 | def __str__(self): 30 | return str(self.emu_profile) 31 | 32 | # vim: set expandtab:ts=4 33 | -------------------------------------------------------------------------------- /Web/models/emuservice.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.connection import Connection 4 | 5 | 6 | class EmuService(models.Model): 7 | emu_serivce = models.IntegerField( 8 | primary_key=True, 9 | blank=True 10 | ) 11 | 12 | connection = models.ForeignKey( 13 | Connection, 14 | to_field='connection', 15 | db_column='connection', 16 | related_name='connection__connection', 17 | verbose_name='Connection' 18 | ) 19 | 20 | emu_service_url = models.TextField( 21 | blank=True 22 | ) 23 | 24 | class Meta: 25 | db_table = u'emu_services' 26 | ordering = ['-emu_serivce'] 27 | verbose_name_plural = "EmuServices" 28 | 29 | def __str__(self): 30 | return str(self.emu_serivce) 31 | 32 | # vim: set expandtab:ts=4 33 | -------------------------------------------------------------------------------- /Web/models/login.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.connection import Connection 4 | 5 | 6 | class Login(models.Model): 7 | login = models.IntegerField( 8 | primary_key=True, 9 | blank=True 10 | ) 11 | 12 | connection = models.ForeignKey( 13 | Connection, 14 | to_field='connection', 15 | db_column='connection', 16 | related_name='connection__connection', 17 | verbose_name='Connection' 18 | ) 19 | 20 | login_username = models.TextField( 21 | blank=True 22 | ) 23 | 24 | login_password = models.TextField( 25 | blank=True 26 | ) 27 | 28 | class Meta: 29 | db_table = u'logins' 30 | ordering = ['-login'] 31 | verbose_name_plural = "Logins" 32 | 33 | def __str__(self): 34 | return str(self.login) 35 | 36 | # vim: set expandtab:ts=4 37 | -------------------------------------------------------------------------------- /DionaeaFR/static/css/jquery-jvectormap.css: -------------------------------------------------------------------------------- 1 | .jvectormap-label { 2 | position: absolute; 3 | display: none; 4 | border: solid 1px #CDCDCD; 5 | -webkit-border-radius: 3px; 6 | -moz-border-radius: 3px; 7 | border-radius: 3px; 8 | background: #292929; 9 | color: white; 10 | font-family: sans-serif, Verdana; 11 | font-size: smaller; 12 | padding: 3px; 13 | } 14 | 15 | .jvectormap-zoomin, .jvectormap-zoomout { 16 | position: absolute; 17 | left: 10px; 18 | -webkit-border-radius: 3px; 19 | -moz-border-radius: 3px; 20 | border-radius: 3px; 21 | background: #292929; 22 | padding: 3px; 23 | color: white; 24 | width: 10px; 25 | height: 10px; 26 | cursor: pointer; 27 | line-height: 10px; 28 | text-align: center; 29 | } 30 | 31 | .jvectormap-zoomin { 32 | top: 10px; 33 | } 34 | 35 | .jvectormap-zoomout { 36 | top: 30px; 37 | } -------------------------------------------------------------------------------- /Web/models/dcerpcbind.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.connection import Connection 4 | 5 | 6 | class Dcerpcbind(models.Model): 7 | dcerpcbind = models.IntegerField( 8 | primary_key=True, 9 | blank=True 10 | ) 11 | 12 | connection = models.ForeignKey( 13 | Connection, 14 | to_field='connection', 15 | db_column='connection', 16 | related_name='connection__connection', 17 | verbose_name='Connection' 18 | ) 19 | 20 | dcerpcbind_uuid = models.TextField( 21 | blank=True 22 | ) 23 | 24 | dcerpcbind_transfersyntax = models.TextField( 25 | blank=True 26 | ) 27 | 28 | class Meta: 29 | db_table = u'dcerpcbinds' 30 | ordering = ['-dcerpcbind'] 31 | verbose_name_plural = "Dcerpcbinds" 32 | 33 | def __str__(self): 34 | return str(self.dcerpcbind) 35 | 36 | # vim: set expandtab:ts=4 37 | -------------------------------------------------------------------------------- /Web/models/mssqlcommand.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.connection import Connection 4 | 5 | 6 | class MssqlCommand(models.Model): 7 | mssql_command = models.IntegerField( 8 | primary_key=True, 9 | blank=True 10 | ) 11 | 12 | connection = models.ForeignKey( 13 | Connection, 14 | to_field='connection', 15 | db_column='connection', 16 | related_name='connection__connection', 17 | verbose_name='Connection' 18 | ) 19 | 20 | mssql_command_status = models.TextField( 21 | blank=True 22 | ) 23 | 24 | mssql_command_cmd = models.TextField( 25 | blank=True 26 | ) 27 | 28 | class Meta: 29 | db_table = u'mssql_commands' 30 | ordering = ['-mssql_command'] 31 | verbose_name_plural = "MssqlCommands" 32 | 33 | def __str__(self): 34 | return str(self.mssql_command) 35 | 36 | # vim: set expandtab:ts=4 37 | -------------------------------------------------------------------------------- /Web/models/resolve.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.connection import Connection 4 | 5 | 6 | class Resolve(models.Model): 7 | resolve = models.IntegerField( 8 | primary_key=True, 9 | blank=True 10 | ) 11 | 12 | connection = models.ForeignKey( 13 | Connection, 14 | to_field='connection', 15 | db_column='connection', 16 | related_name='connection__connection', 17 | verbose_name='Connection' 18 | ) 19 | 20 | resolve_hostname = models.TextField( 21 | blank=True 22 | ) 23 | 24 | resolve_type = models.TextField( 25 | blank=True 26 | ) 27 | 28 | resolve_result = models.TextField( 29 | blank=True 30 | ) 31 | 32 | class Meta: 33 | db_table = u'resolves' 34 | ordering = ['-resolve'] 35 | verbose_name_plural = "Resolves" 36 | 37 | def __str__(self): 38 | return str(self.resolve) 39 | 40 | # vim: set expandtab:ts=4 41 | -------------------------------------------------------------------------------- /Web/models/sipvia.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.sipcommand import SipCommand 4 | 5 | 6 | class SipVia(models.Model): 7 | sip_via = models.IntegerField( 8 | primary_key=True, 9 | blank=True 10 | ) 11 | 12 | sip_command = models.ForeignKey( 13 | SipCommand, 14 | to_field='sip_command', 15 | db_column='sip_command', 16 | related_name='sip_commands__sip_command', 17 | verbose_name='Command' 18 | ) 19 | 20 | sip_via_protocol = models.TextField( 21 | blank=True 22 | ) 23 | 24 | sip_via_address = models.TextField( 25 | blank=True 26 | ) 27 | 28 | sip_via_port = models.TextField( 29 | blank=True 30 | ) 31 | 32 | class Meta: 33 | db_table = u'sip_vias' 34 | ordering = ['-sip_via'] 35 | verbose_name_plural = "SipVias" 36 | 37 | def __str__(self): 38 | return str(self.sip_via) 39 | 40 | # vim: set expandtab:ts=4 41 | -------------------------------------------------------------------------------- /Web/filters/connection.py: -------------------------------------------------------------------------------- 1 | import django_filters as filters 2 | 3 | from Web.models.connection import Connection 4 | 5 | 6 | class ConnectionFilter(filters.FilterSet): 7 | connection_type = filters.CharFilter( 8 | lookup_type='contains' 9 | ) 10 | 11 | connection_transport = filters.CharFilter( 12 | lookup_type='contains' 13 | ) 14 | 15 | connection_protocol = filters.CharFilter( 16 | lookup_type='contains' 17 | ) 18 | 19 | local_port = filters.NumberFilter() 20 | 21 | remote_host = filters.CharFilter( 22 | lookup_type='contains' 23 | ) 24 | 25 | remote_port = filters.NumberFilter() 26 | 27 | class Meta: 28 | model = Connection 29 | fields = [ 30 | 'connection_type', 31 | 'connection_transport', 32 | 'connection_protocol', 33 | 'local_port', 34 | 'remote_host', 35 | 'remote_port', 36 | ] 37 | 38 | # vim: set expandtab:ts=4 39 | -------------------------------------------------------------------------------- /Web/models/mssqlfingerprint.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.connection import Connection 4 | 5 | 6 | class MssqlFingerprint(models.Model): 7 | mssql_fingerprint = models.IntegerField( 8 | primary_key=True, 9 | blank=True 10 | ) 11 | 12 | connection = models.ForeignKey( 13 | Connection, 14 | to_field='connection', 15 | db_column='connection', 16 | related_name='connection__connection', 17 | verbose_name='Connection' 18 | ) 19 | 20 | mssql_fingerprint_hostname = models.TextField( 21 | blank=True 22 | ) 23 | 24 | mssql_fingerprint_appname = models.TextField( 25 | blank=True 26 | ) 27 | 28 | mssql_fingerprint_cltintname = models.TextField( 29 | blank=True 30 | ) 31 | 32 | class Meta: 33 | db_table = u'mssql_fingerprints' 34 | ordering = ['-mssql_fingerprint'] 35 | verbose_name_plural = "MssqlFingerprints" 36 | 37 | def __str__(self): 38 | return str(self.mssql_fingerprint) 39 | 40 | # vim: set expandtab:ts=4 41 | -------------------------------------------------------------------------------- /DionaeaFR/Templates/404.html: -------------------------------------------------------------------------------- 1 | {% extends "base/base.html" %} 2 | 3 | {% block title %} 4 | 404 Not Found 5 | {% endblock %} 6 | {% block menu %} 7 | 21 | {% endblock %} 22 | {% block titlecontent %} 23 | 404 Not Found 24 | {% endblock %} 25 | {% block info %} 26 |
27 | 404 Not Found 28 |
29 | {% endblock %} 30 | {% block content %} 31 |
32 |
33 | {% endblock %} -------------------------------------------------------------------------------- /DionaeaFR/Templates/500.html: -------------------------------------------------------------------------------- 1 | {% extends "base/base.html" %} 2 | 3 | {% block title %} 4 | 500 Internal Error 5 | {% endblock %} 6 | {% block menu %} 7 | 21 | {% endblock %} 22 | {% block titlecontent %} 23 | 500 Internal Error 24 | {% endblock %} 25 | {% block info %} 26 |
27 | 500 Internal Error 28 |
29 | {% endblock %} 30 | {% block content %} 31 |
32 |
33 | {% endblock %} -------------------------------------------------------------------------------- /Web/views/download.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render_to_response 2 | from django.template import RequestContext 3 | 4 | from django_tables2 import RequestConfig 5 | from Web.models.download import Download 6 | from Web.tables.download import DownloadTable 7 | from Web.filters.download import DownloadFilter 8 | from Web.forms.download import DownloadFilterForm 9 | 10 | 11 | length = len(Download.objects.all()) 12 | 13 | 14 | def downloadIndex(request): 15 | downloads = Download.objects.all() 16 | filterQueryset = DownloadFilter( 17 | request.GET, 18 | queryset=downloads 19 | ) 20 | table = DownloadTable( 21 | filterQueryset 22 | ) 23 | filters = DownloadFilterForm() 24 | RequestConfig( 25 | request, 26 | paginate={ 27 | "per_page": 12 28 | } 29 | ).configure( 30 | table 31 | ) 32 | return render_to_response( 33 | 'base.html', 34 | { 35 | 'table': table, 36 | 'filters': filters, 37 | 'title': u'Downloads' 38 | }, 39 | context_instance=RequestContext( 40 | request 41 | ) 42 | ) 43 | 44 | # vim: set expandtab:ts=4 45 | -------------------------------------------------------------------------------- /Web/models/dcerpcrequest.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.connection import Connection 4 | from Web.models.dcerpcserviceop import Dcerpcserviceop 5 | 6 | 7 | class Dcerpcrequest(models.Model): 8 | dcerpcrequest = models.IntegerField( 9 | primary_key=True, 10 | blank=True 11 | ) 12 | 13 | connection = models.ForeignKey( 14 | Connection, 15 | to_field='connection', 16 | db_column='connection', 17 | related_name='connection__connection', 18 | verbose_name='Connection' 19 | ) 20 | 21 | dcerpcrequest_uuid = models.TextField( 22 | blank=True 23 | ) 24 | 25 | dcerpcrequest_opnum = models.IntegerField( 26 | blank=True 27 | ) 28 | 29 | class Meta: 30 | db_table = u'dcerpcrequests' 31 | ordering = ['-dcerpcrequest'] 32 | verbose_name_plural = "Dcerpcrequests" 33 | 34 | def __str__(self): 35 | return str(self.dcerpcrequest) 36 | 37 | @property 38 | def getOps(self): 39 | ops = Dcerpcserviceop.objects.filter( 40 | dcerpcserviceop_opnum=self.dcerpcrequest_opnum 41 | ) 42 | return ops 43 | 44 | # vim: set expandtab:ts=4 45 | -------------------------------------------------------------------------------- /Web/models/sipsdpmedia.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | UL_PATTERN = '' 4 | 5 | 6 | class SipSdpMedia(models.Model): 7 | sip_sdp_media = models.IntegerField( 8 | primary_key=True, 9 | blank=True 10 | ) 11 | 12 | sip_command = models.IntegerField( 13 | blank=True 14 | ) 15 | 16 | sip_sdp_media_media = models.TextField( 17 | blank=True 18 | ) 19 | 20 | sip_sdp_media_port = models.TextField( 21 | blank=True 22 | ) 23 | 24 | sip_sdp_media_number_of_ports = models.TextField( 25 | blank=True 26 | ) 27 | 28 | sip_sdp_media_proto = models.TextField( 29 | blank=True 30 | ) 31 | 32 | class Meta: 33 | db_table = u'sip_sdp_medias' 34 | ordering = ['-sip_sdp_media'] 35 | verbose_name_plural = "SipSdpMedias" 36 | 37 | def __str__(self): 38 | return str(self.sip_sdp_media) 39 | 40 | @property 41 | def getData(self): 42 | return UL_PATTERN.format( 43 | str(self.sip_sdp_media_media), 44 | str(self.sip_sdp_media_proto), 45 | str(self.sip_sdp_media_port) 46 | ) 47 | 48 | 49 | # vim: set expandtab:ts=4 50 | -------------------------------------------------------------------------------- /DionaeaFR/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for DionaeaFR project. 3 | 4 | This module contains the WSGI application used by Django's development server 5 | and any production WSGI deployments. It should expose a module-level variable 6 | named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover 7 | this application via the ``WSGI_APPLICATION`` setting. 8 | 9 | Usually you will have the standard Django WSGI application here, but it also 10 | might make sense to replace the whole Django WSGI application with a custom one 11 | that later delegates to the Django one. For example, you could introduce WSGI 12 | middleware here, or combine a Django application with an application of another 13 | framework. 14 | 15 | """ 16 | import os 17 | 18 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DionaeaFR.settings") 19 | 20 | # This application object is used by any WSGI server configured to use this 21 | # file. This includes Django's development server, if the WSGI_APPLICATION 22 | # setting points here. 23 | from django.core.wsgi import get_wsgi_application 24 | 25 | application = get_wsgi_application() 26 | 27 | # Apply WSGI middleware here. 28 | # from helloworld.wsgi import HelloWorldApplication 29 | # application = HelloWorldApplication(application) 30 | -------------------------------------------------------------------------------- /Web/models/download.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.connection import Connection 4 | from Web.models.virustotal import Virustotal 5 | 6 | 7 | class Download(models.Model): 8 | download = models.IntegerField( 9 | primary_key=True, 10 | blank=True, 11 | verbose_name='ID' 12 | ) 13 | 14 | connection = models.ForeignKey( 15 | Connection, 16 | to_field='connection', 17 | db_column='connection', 18 | related_name='connection__connection', 19 | verbose_name='Connection' 20 | ) 21 | 22 | download_url = models.TextField( 23 | blank=True, 24 | verbose_name='Url' 25 | ) 26 | 27 | download_md5_hash = models.TextField( 28 | blank=True, 29 | verbose_name='md5' 30 | ) 31 | 32 | class Meta: 33 | db_table = u'downloads' 34 | ordering = ['-download'] 35 | verbose_name_plural = "Downloads" 36 | 37 | def __str__(self): 38 | return str(self.download) 39 | 40 | @property 41 | def getReport(self): 42 | vtr = Virustotal.objects.filter( 43 | virustotal_md5_hash=self.download_md5_hash 44 | ).order_by( 45 | '-virustotal' 46 | )[:1] 47 | return vtr 48 | 49 | # vim: set expandtab:ts=4 50 | -------------------------------------------------------------------------------- /Web/models/mysqlcommand.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.connection import Connection 4 | from Web.models.mysqlcommandop import MysqlCommandOp 5 | from Web.models.mysqlcommandarg import MysqlCommandArg 6 | 7 | 8 | class MysqlCommand(models.Model): 9 | mysql_command = models.IntegerField( 10 | primary_key=True, 11 | blank=True 12 | ) 13 | 14 | connection = models.ForeignKey( 15 | Connection, 16 | to_field='connection', 17 | db_column='connection', 18 | related_name='connection__connection', 19 | verbose_name='Connection' 20 | ) 21 | 22 | mysql_command_cmd = models.TextField() 23 | 24 | class Meta: 25 | db_table = u'mysql_commands' 26 | ordering = ['-mysql_command'] 27 | verbose_name_plural = "MysqlCommands" 28 | 29 | def __str__(self): 30 | return str(self.mysql_command) 31 | 32 | @property 33 | def getOps(self): 34 | ops = MysqlCommandOp.objects.get( 35 | mysql_command_cmd=self.mysql_command_cmd 36 | ) 37 | return ops 38 | 39 | @property 40 | def getArgs(self): 41 | args = MysqlCommandArg.objects.get( 42 | mysql_command=int(self.mysql_command) 43 | ) 44 | return args 45 | 46 | # vim: set expandtab:ts=4 47 | -------------------------------------------------------------------------------- /Web/models/p0f.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.connection import Connection 4 | 5 | 6 | class P0f(models.Model): 7 | p0f = models.IntegerField( 8 | primary_key=True, 9 | blank=True 10 | ) 11 | 12 | connection = models.ForeignKey( 13 | Connection, 14 | to_field='connection', 15 | db_column='connection', 16 | related_name='connection__connection', 17 | verbose_name='Connection' 18 | ) 19 | 20 | p0f_genre = models.TextField( 21 | blank=True 22 | ) 23 | 24 | p0f_link = models.TextField( 25 | blank=True 26 | ) 27 | 28 | p0f_detail = models.TextField( 29 | blank=True 30 | ) 31 | 32 | p0f_uptime = models.IntegerField( 33 | blank=True 34 | ) 35 | 36 | p0f_tos = models.TextField( 37 | blank=True 38 | ) 39 | 40 | p0f_dist = models.IntegerField( 41 | blank=True 42 | ) 43 | 44 | p0f_nat = models.IntegerField( 45 | blank=True 46 | ) 47 | 48 | p0f_fw = models.IntegerField( 49 | blank=True 50 | ) 51 | 52 | class Meta: 53 | db_table = u'p0fs' 54 | ordering = ['-p0f'] 55 | verbose_name_plural = "P0Fs" 56 | 57 | def __str__(self): 58 | return str(self.p0f) 59 | 60 | # vim: set expandtab:ts=4 61 | -------------------------------------------------------------------------------- /Web/models/sipsdporigin.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.sipcommand import SipCommand 4 | 5 | 6 | class SipSdpOrigin(models.Model): 7 | sip_sdp_origin = models.IntegerField( 8 | primary_key=True, 9 | blank=True 10 | ) 11 | 12 | sip_command = models.ForeignKey( 13 | SipCommand, 14 | to_field='sip_command', 15 | db_column='sip_command', 16 | related_name='sip_commands__sip_command', 17 | verbose_name='Command' 18 | ) 19 | 20 | sip_sdp_origin_username = models.TextField( 21 | blank=True 22 | ) 23 | 24 | sip_sdp_origin_sess_id = models.TextField( 25 | blank=True 26 | ) 27 | 28 | sip_sdp_origin_sess_version = models.TextField( 29 | blank=True 30 | ) 31 | 32 | sip_sdp_origin_nettype = models.TextField( 33 | blank=True 34 | ) 35 | 36 | sip_sdp_origin_addrtype = models.TextField( 37 | blank=True 38 | ) 39 | 40 | sip_sdp_origin_unicast_address = models.TextField( 41 | blank=True 42 | ) 43 | 44 | class Meta: 45 | db_table = u'sip_sdp_origins' 46 | ordering = ['-sip_sdp_origin'] 47 | verbose_name_plural = "SipSdpOrigins" 48 | 49 | def __str__(self): 50 | return str(self.sip_sdp_origin) 51 | 52 | # vim: set expandtab:ts=4 53 | -------------------------------------------------------------------------------- /Web/models/virustotal.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | 3 | from django.conf import settings 4 | from django.db import models 5 | 6 | from Web.models.virustotalscan import Virustotalscan 7 | 8 | 9 | class Virustotal(models.Model): 10 | virustotal = models.IntegerField( 11 | primary_key=True, 12 | blank=True 13 | ) 14 | 15 | virustotal_md5_hash = models.TextField() 16 | 17 | virustotal_timestamp = models.IntegerField() 18 | 19 | virustotal_permalink = models.TextField() 20 | 21 | class Meta: 22 | db_table = u'virustotals' 23 | ordering = ['-virustotal'] 24 | verbose_name_plural = "Virustotals" 25 | 26 | def __str__(self): 27 | return str(self.virustotal) 28 | 29 | @property 30 | def getUrl(self): 31 | return str(self.virustotal_permalink) 32 | 33 | @property 34 | def getDate(self): 35 | return datetime.datetime.fromtimestamp( 36 | float( 37 | self.virustotal_timestamp 38 | ) 39 | ).strftime("%d-%m-%Y %H:%M:%S") 40 | 41 | @property 42 | def getResult(self): 43 | result = Virustotalscan.objects.get( 44 | virustotal=self.virustotal, 45 | virustotalscan_scanner=settings.ANTIVIRUS_VIRUSTOTAL 46 | ) 47 | return result 48 | 49 | 50 | # vim: set expandtab:ts=4 51 | -------------------------------------------------------------------------------- /dionaeafr_init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # DionaeaFR Startup script 4 | # Koen Van Impe 5 | 6 | . /lib/lsb/init-functions 7 | 8 | #BASEDIR="/mnt/hgfs/www/camelot.cudeso.be/cudeso-honeypot/dionaea/DionaeaFR/DionaeaFR" 9 | BASEDIR="/opt/DionaeaFR/DionaeaFR" 10 | PIDFILE="/var/run/dionaeafr/dionaeafr.pid" 11 | LOGFILE="/var/log/dionaeafr/dionaeafr.log" 12 | NAME="dionaeafr" 13 | DAEMON="dionaeafr" 14 | PORT=8000 15 | 16 | case $1 in 17 | start) 18 | cd $BASEDIR 19 | python manage.py runserver 0.0.0.0:$PORT > $LOGFILE 2>> $LOGFILE & 20 | log_daemon_msg "$DAEMON started ..." 21 | log_end_msg 0 22 | ;; 23 | stop) 24 | if [ -e $PIDFILE ]; then 25 | kill `cat $PIDFILE` 26 | rm $PIDFILE 27 | log_daemon_msg "$DAEMON stopped ..." 28 | log_end_msg 0 29 | else 30 | log_daemon_msg "$DAEMON is *NOT* running" 31 | log_end_msg 1 32 | fi 33 | ;; 34 | collectstatic) 35 | cd $BASEDIR 36 | python manage.py collectstatic 37 | ;; 38 | logs) 39 | cat $LOGFILE 40 | ;; 41 | status) 42 | if [ -e $PIDFILE ]; then 43 | status_of_proc -p $PIDFILE $DAEMON "$NAME process" && exit 0 || exit $? 44 | else 45 | log_daemon_msg "$DAEMON is not running ..." 46 | log_end_msg 0 47 | fi 48 | ;; 49 | *) 50 | # For invalid arguments, print the usage message. 51 | echo "Usage: $0 {start|stop|collectstatic|logs|status}" 52 | exit 2 53 | ;; 54 | esac 55 | 56 | -------------------------------------------------------------------------------- /Web/models/sipaddr.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | LI_PATTERN = '
  • {0}: {1} {2}:{3}@{4}:{5}
  • ' 4 | 5 | 6 | class SipAddr(models.Model): 7 | sip_addr = models.IntegerField( 8 | primary_key=True, 9 | blank=True 10 | ) 11 | 12 | sip_command = models.IntegerField( 13 | blank=True 14 | ) 15 | 16 | sip_addr_type = models.TextField( 17 | blank=True 18 | ) 19 | 20 | sip_addr_display_name = models.TextField( 21 | blank=True 22 | ) 23 | 24 | sip_addr_uri_scheme = models.TextField( 25 | blank=True 26 | ) 27 | 28 | sip_addr_uri_user = models.TextField( 29 | blank=True 30 | ) 31 | 32 | sip_addr_uri_password = models.TextField( 33 | blank=True 34 | ) 35 | 36 | sip_addr_uri_host = models.TextField( 37 | blank=True 38 | ) 39 | 40 | sip_addr_uri_port = models.TextField( 41 | blank=True 42 | ) 43 | 44 | class Meta: 45 | db_table = u'sip_addrs' 46 | ordering = ['-sip_addr'] 47 | verbose_name_plural = "SipAddrs" 48 | 49 | def __str__(self): 50 | return str(self.sip_addr) 51 | 52 | @property 53 | def getData(self): 54 | return LI_PATTERN.format( 55 | str(self.sip_addr_type), 56 | str(self.sip_addr_display_name), 57 | str(self.sip_addr_uri_scheme), 58 | str(self.sip_addr_uri_user), 59 | str(self.sip_addr_uri_host), 60 | str(self.sip_addr_uri_port) 61 | ) 62 | 63 | # vim: set expandtab:ts=4 64 | -------------------------------------------------------------------------------- /Web/models/dcerpcserviceop.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.dcerpcservice import Dcerpcservice 4 | 5 | 6 | class Dcerpcserviceop(models.Model): 7 | dcerpcserviceop = models.IntegerField( 8 | primary_key=True, 9 | blank=True 10 | ) 11 | 12 | dcerpcservice = models.IntegerField( 13 | blank=True 14 | ) 15 | 16 | dcerpcserviceop_opnum = models.IntegerField( 17 | blank=True 18 | ) 19 | 20 | dcerpcserviceop_name = models.TextField( 21 | blank=True 22 | ) 23 | 24 | dcerpcserviceop_vuln = models.TextField( 25 | blank=True 26 | ) 27 | 28 | class Meta: 29 | db_table = u'dcerpcserviceops' 30 | ordering = ['-dcerpcserviceop'] 31 | verbose_name_plural = "Dcerpcserviceops" 32 | 33 | def __str__(self): 34 | return str(self.dcerpcserviceop) 35 | 36 | @property 37 | def getName(self): 38 | return str(self.dcerpcserviceop_name) 39 | 40 | @property 41 | def getVuln(self): 42 | if self.dcerpcserviceop_vuln: 43 | vuln = self.dcerpcserviceop_vuln.split('-') 44 | if vuln[1][:1] != '0': 45 | return str(vuln[0] + '-0' + vuln[1]) 46 | else: 47 | return str(self.dcerpcserviceop_vuln) 48 | else: 49 | return str(self.dcerpcserviceop_vuln) 50 | 51 | @property 52 | def getService(self): 53 | srv = Dcerpcservice.objects.get( 54 | dcerpcservice=self.dcerpcservice 55 | ) 56 | return srv 57 | 58 | # vim: set expandtab:ts=4 59 | -------------------------------------------------------------------------------- /Web/views/other.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render_to_response 2 | from django.db.models import Count 3 | from django.conf import settings 4 | 5 | from Web.models.connection import Connection 6 | from Web.models.download import Download 7 | from Web.models.virustotalscan import Virustotalscan 8 | 9 | 10 | def home(request): 11 | num_connections = Connection.objects.all().count() 12 | num_ips = Connection.objects.values( 13 | 'remote_host' 14 | ).annotate( 15 | num=Count( 16 | 'remote_host' 17 | ) 18 | ).count() 19 | num_urls = Download.objects.values( 20 | 'download_url' 21 | ).annotate( 22 | num=Count( 23 | 'download_url' 24 | ) 25 | ).count() 26 | num_downloads = Download.objects.all().count() 27 | num_analized = Virustotalscan.objects.filter( 28 | virustotalscan_scanner=settings.ANTIVIRUS_VIRUSTOTAL 29 | ).count() 30 | known = Virustotalscan.objects.filter( 31 | virustotalscan_scanner=settings.ANTIVIRUS_VIRUSTOTAL 32 | ).exclude( 33 | virustotalscan_result__isnull=True 34 | ) 35 | num_known = known.count() 36 | return render_to_response( 37 | 'home.html', 38 | { 39 | 'num_connections': num_connections, 40 | 'num_ips': num_ips, 41 | 'num_urls': num_urls, 42 | 'num_downloads': num_downloads, 43 | 'num_analized': num_analized, 44 | 'num_known': num_known, 45 | 'av_motor': settings.ANTIVIRUS_VIRUSTOTAL 46 | } 47 | ) 48 | 49 | # vim: set expandtab:ts=4 50 | -------------------------------------------------------------------------------- /Web/tables/connection.py: -------------------------------------------------------------------------------- 1 | import django_tables2 as tables 2 | 3 | from django_tables2.utils import A 4 | 5 | from Web.models.connection import Connection 6 | 7 | from Web.columns.base import UnixToDate 8 | from Web.columns.base import FormatIP 9 | 10 | 11 | class ConnectionTable(tables.Table): 12 | connection = tables.LinkColumn( 13 | 'connection-detail', 14 | args=[A('pk')], 15 | verbose_name=u'ID' 16 | ) 17 | 18 | connection_timestamp = UnixToDate( 19 | verbose_name=u'Date' 20 | ) 21 | 22 | connection_root = tables.LinkColumn( 23 | 'connection-detail', 24 | args=[A('pk')], 25 | verbose_name=u'Root' 26 | ) 27 | 28 | connection_parent = tables.LinkColumn( 29 | 'connection-detail', 30 | args=[A('pk')], 31 | verbose_name=u'parent' 32 | ) 33 | 34 | local_host = FormatIP( 35 | verbose_name=u'Sensor' 36 | ) 37 | 38 | remote_host = FormatIP( 39 | verbose_name=u'Attacker' 40 | ) 41 | 42 | class Meta: 43 | model = Connection 44 | empty_text = 'No data.' 45 | template = 'table.html' 46 | sequence = ( 47 | 'connection', 48 | 'connection_type', 49 | 'connection_transport', 50 | 'connection_protocol', 51 | 'connection_timestamp', 52 | 'connection_root', 53 | 'connection_parent', 54 | 'local_host', 55 | 'local_port', 56 | 'remote_host', 57 | 'remote_hostname', 58 | 'remote_port', 59 | ) 60 | attrs = { 61 | 'class': 'table table-hover table-condensed' 62 | } 63 | 64 | # vim: set expandtab:ts=4 65 | -------------------------------------------------------------------------------- /Web/models/sipcommand.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | from Web.models.connection import Connection 4 | from Web.models.sipaddr import SipAddr 5 | from Web.models.sipsdpconnectiondata import SipSdpConnectionData 6 | from Web.models.sipsdpmedia import SipSdpMedia 7 | 8 | 9 | class SipCommand(models.Model): 10 | sip_command = models.IntegerField( 11 | primary_key=True, 12 | blank=True 13 | ) 14 | 15 | connection = models.ForeignKey( 16 | Connection, 17 | to_field='connection', 18 | db_column='connection', 19 | related_name='connection__connection', 20 | verbose_name='Connection' 21 | ) 22 | 23 | sip_command_method = models.TextField( 24 | blank=True 25 | ) 26 | 27 | sip_command_call_id = models.TextField( 28 | blank=True 29 | ) 30 | 31 | sip_command_user_agent = models.TextField( 32 | blank=True 33 | ) 34 | 35 | sip_command_allow = models.IntegerField( 36 | blank=True 37 | ) 38 | 39 | class Meta: 40 | db_table = u'sip_commands' 41 | ordering = ['-sip_command'] 42 | verbose_name_plural = "SipCommands" 43 | 44 | def __str__(self): 45 | return str(self.sip_command) 46 | 47 | @property 48 | def getAddr(self): 49 | addrs = SipAddr.objects.filter( 50 | sip_command=self.sip_command 51 | ) 52 | return addrs 53 | 54 | @property 55 | def getData(self): 56 | cdat = SipSdpConnectionData.objects.get( 57 | sip_command=self.sip_command 58 | ) 59 | return cdat 60 | 61 | @property 62 | def getMedia(self): 63 | media = SipSdpMedia.objects.get( 64 | sip_command=self.sip_command 65 | ) 66 | return media 67 | 68 | # vim: set expandtab:ts=4 69 | -------------------------------------------------------------------------------- /Web/models/sipsdpconnectiondata.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | LI_PATTERN = '
  • {0}: {1}
  • ' 4 | 5 | 6 | class SipSdpConnectionData(models.Model): 7 | sip_sdp_connectiondata = models.IntegerField( 8 | primary_key=True, 9 | blank=True 10 | ) 11 | 12 | sip_command = models.IntegerField( 13 | blank=True 14 | ) 15 | 16 | sip_sdp_connectiondata_nettype = models.TextField( 17 | blank=True 18 | ) 19 | 20 | sip_sdp_connectiondata_addrtype = models.TextField( 21 | blank=True 22 | ) 23 | 24 | sip_sdp_connectiondata_connection_address = models.TextField( 25 | blank=True 26 | ) 27 | 28 | sip_sdp_connectiondata_ttl = models.TextField( 29 | blank=True 30 | ) 31 | 32 | sip_sdp_connectiondata_number_of_addresses = models.TextField( 33 | blank=True 34 | ) 35 | 36 | class Meta: 37 | db_table = u'sip_sdp_connectiondatas' 38 | ordering = ['-sip_sdp_connectiondata'] 39 | verbose_name_plural = "SipSdpConnectiondatas" 40 | 41 | def __str__(self): 42 | return str(self.sip_sdp_connectiondata) 43 | 44 | @property 45 | def getData(self): 46 | data = '' 68 | return data 69 | 70 | # vim: set expandtab:ts=4 71 | -------------------------------------------------------------------------------- /Web/columns/base.py: -------------------------------------------------------------------------------- 1 | import os 2 | import datetime 3 | 4 | import django_tables2 as tables 5 | 6 | 7 | try: 8 | import pygeoip 9 | except: 10 | print "Install pygeoip" 11 | print "\tpip install pygeoip" 12 | pass 13 | 14 | from django.conf import settings 15 | from django.utils.safestring import mark_safe 16 | from netaddr import IPAddress 17 | 18 | try: 19 | import SubnetTree 20 | 21 | reserved_ipv4 = SubnetTree.SubnetTree() 22 | for subnet in settings.RESERVED_IP: 23 | reserved_ipv4[subnet] = subnet 24 | except ImportError: 25 | reserved_ipv4 = dict() 26 | print "Install SubnetTree" 27 | print "\tgit clone git://git.bro-ids.org/pysubnettree.git" 28 | print "\tpython setup.py install" 29 | pass 30 | 31 | gi = pygeoip.GeoIP( 32 | os.path.join( 33 | 'DionaeaFR/static', 34 | 'GeoIP.dat' 35 | ), 36 | pygeoip.MEMORY_CACHE 37 | ) 38 | 39 | 40 | class UnixToDate(tables.Column): 41 | def render(self, value): 42 | return datetime.datetime.fromtimestamp( 43 | float(value) 44 | ).strftime("%d-%m-%Y %H:%M:%S") 45 | 46 | 47 | class FormatIP(tables.Column): 48 | def render(self, value): 49 | cc = u'ZZ' 50 | name = u'Unknown' 51 | ip = IPAddress(str(value)) 52 | if ip.version == 4: 53 | try: 54 | reserved_ipv4[str(ip)] 55 | except KeyError: 56 | cc = gi.country_code_by_addr( 57 | str(ip) 58 | ) 59 | name = gi.country_name_by_addr( 60 | str(ip) 61 | ) 62 | if not cc or not name: 63 | cc = u'ZZ' 64 | name = u'Unknown' 65 | return mark_safe( 66 | '' +
71 |             name +
72 |             ' ' + 73 | str(ip) 74 | ) 75 | 76 | 77 | # vim: set expandtab:ts=4 78 | -------------------------------------------------------------------------------- /DionaeaFR/Templates/graphs/connections.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | Connections 5 | {% endblock %} 6 | {% block scripts %} 7 | {% load staticfiles %} 8 | 9 | 10 | 11 | 12 | {% endblock %} 13 | {% block titlecontent %} 14 | Attacks 15 | {% endblock %} 16 | {% block content %} 17 | {{ chartActivity }} 18 | {% endblock %} 19 | {% block info %} 20 |
    21 | Last {{ RESULTS_DAYS }} days. 22 |
    23 | {% endblock %} 24 | {% block Lastscripts %} 25 | 77 | {% endblock %} -------------------------------------------------------------------------------- /DionaeaFR/Templates/graphs/ips.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | IPS 5 | {% endblock %} 6 | {% block scripts %} 7 | {% load staticfiles %} 8 | 9 | 10 | 11 | 12 | {% endblock %} 13 | {% block titlecontent %} 14 | IPs 15 | {% endblock %} 16 | {% block content %} 17 | {{ chartActivity }} 18 | {% endblock %} 19 | {% block info %} 20 |
    21 | Last {{ RESULTS_DAYS }} days. 22 |
    23 | {% endblock %} 24 | {% block Lastscripts %} 25 | 79 | {% endblock %} 80 | -------------------------------------------------------------------------------- /DionaeaFR/Templates/graphs/urls.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | URLs 5 | {% endblock %} 6 | {% block scripts %} 7 | {% load staticfiles %} 8 | 9 | 10 | 11 | 12 | {% endblock %} 13 | {% block titlecontent %} 14 | URLs 15 | {% endblock %} 16 | {% block content %} 17 | {{ chartActivity }} 18 | {% endblock %} 19 | {% block info %} 20 |
    21 | Last {{ RESULTS_DAYS }} days. 22 |
    23 | {% endblock %} 24 | {% block Lastscripts %} 25 | 79 | {% endblock %} 80 | -------------------------------------------------------------------------------- /DionaeaFR/Templates/graphs/malware.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | Malware 5 | {% endblock %} 6 | {% block scripts %} 7 | {% load staticfiles %} 8 | 9 | 10 | 11 | 12 | {% endblock %} 13 | {% block titlecontent %} 14 | Malware 15 | {% endblock %} 16 | {% block content %} 17 | {{ chartActivity }} 18 | {% endblock %} 19 | {% block info %} 20 |
    21 | All days. 22 |
    23 | {% endblock %} 24 | {% block Lastscripts %} 25 | 79 | {% endblock %} 80 | -------------------------------------------------------------------------------- /DionaeaFR/Templates/graphs/ports.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | Ports 5 | {% endblock %} 6 | {% block scripts %} 7 | {% load staticfiles %} 8 | 9 | 10 | 11 | 12 | {% endblock %} 13 | {% block titlecontent %} 14 | Ports 15 | {% endblock %} 16 | {% block content %} 17 | {{ chartActivity }} 18 | {% endblock %} 19 | {% block info %} 20 |
    21 | Last {{ RESULTS_DAYS }} days. 22 |
    23 | {% endblock %} 24 | {% block Lastscripts %} 25 | 79 | {% endblock %} 80 | -------------------------------------------------------------------------------- /DionaeaFR/Templates/graphs/services.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | Services 5 | {% endblock %} 6 | {% block scripts %} 7 | {% load staticfiles %} 8 | 9 | 10 | 11 | 12 | {% endblock %} 13 | {% block titlecontent %} 14 | Protocols 15 | {% endblock %} 16 | {% block content %} 17 | {{ chartActivity }} 18 | {% endblock %} 19 | {% block info %} 20 |
    21 | Last {{ RESULTS_DAYS }} days. 22 |
    23 | {% endblock %} 24 | {% block Lastscripts %} 25 | 79 | {% endblock %} 80 | -------------------------------------------------------------------------------- /DionaeaFR/Templates/maps/attackers.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | Attackers 5 | {% endblock %} 6 | {% block scripts %} 7 | {% load staticfiles %} 8 | 9 | 10 | 11 | {% endblock %} 12 | {% block titlecontent %} 13 | Attackers 14 | {% endblock %} 15 | {% block info %} 16 |
    17 | Last {{ RESULTS_DAYS }} days. 18 |
    19 | {% endblock %} 20 | {% block content %} 21 | 27 | {% endblock %} 28 | {% block Lastscripts %} 29 | 63 | {% endblock %} 64 | -------------------------------------------------------------------------------- /Web/forms/connection.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | 3 | TRANSPORT = ( 4 | ('', 'Select...'), 5 | ('tcp', 'tcp'), 6 | ('udp', 'udp'), 7 | ('tls', 'tls'), 8 | ) 9 | 10 | STATE = ( 11 | ('', 'Select...'), 12 | ('accept', 'accept'), 13 | ('connect', 'connect'), 14 | ('listen', 'listen'), 15 | ('reject', 'reject'), 16 | ) 17 | 18 | PROTOCOL = ( 19 | ('', 'Select...'), 20 | ('emulation', 'emulation'), 21 | ('epmapper', 'epmapper'), 22 | ('ftpctrl', 'ftpctrl'), 23 | ('ftpd', 'ftpd'), 24 | ('ftpdata', 'ftpdata'), 25 | ('ftpdataconnect', 'ftpdataconnect'), 26 | ('ftpdatalisten', 'ftpdatalisten'), 27 | ('httpd', 'httpd'), 28 | ('mirrorc', 'mirrorc'), 29 | ('mirrord', 'mirrord'), 30 | ('mssqld', 'mssqld'), 31 | ('mysqld', 'mysqld'), 32 | ('nc sink', 'nc sink'), 33 | ('pcap', 'pcap'), 34 | ('remoteshell', 'remoteshell'), 35 | ('RtpUdpStream', 'RtpUdpStream'), 36 | ('SipCall', 'SipCall'), 37 | ('SipSession', 'SipSession'), 38 | ('smbd', 'smbd'), 39 | ('TftpClient', 'TftpClient'), 40 | ('TftpServerHandler', 'TftpServerHandler'), 41 | ('xmppclient', 'xmppclient'), 42 | ) 43 | 44 | 45 | class ConnectionFilterForm(forms.Form): 46 | connection_type = forms.CharField( 47 | label='State', 48 | required=False, 49 | max_length=255 50 | ) 51 | 52 | connection_type.widget = forms.Select( 53 | attrs={ 54 | 'class': 'span10', 55 | }, 56 | choices=STATE 57 | ) 58 | 59 | connection_transport = forms.CharField( 60 | label='Transport', 61 | required=False, 62 | max_length=255 63 | ) 64 | 65 | connection_transport.widget = forms.Select( 66 | attrs={ 67 | 'class': 'span10', 68 | }, 69 | choices=TRANSPORT 70 | ) 71 | 72 | connection_protocol = forms.CharField( 73 | label='Protocol', 74 | required=False, 75 | max_length=255 76 | ) 77 | 78 | connection_protocol.widget = forms.Select( 79 | attrs={ 80 | 'class': 'span10', 81 | }, 82 | choices=PROTOCOL 83 | ) 84 | 85 | local_port = forms.IntegerField( 86 | label='Local Port', 87 | required=False 88 | ) 89 | 90 | remote_host = forms.GenericIPAddressField( 91 | label='Attacker', 92 | required=False 93 | ) 94 | 95 | remote_port = forms.IntegerField( 96 | label='Remote Port', 97 | required=False 98 | ) 99 | 100 | # vim: set expandtab:ts=4 101 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | DionaeaFR 2 | ========= 3 | 4 | Front Web to Dionaea low-interaction honeypot. 5 | 6 | Home DionaeaFR: http://rubenespadas.github.io/DionaeaFR/ 7 | 8 | Home Dionaea: http://dionaea.carnivore.it/ 9 | 10 | [*] Technologies: 11 | 12 | - Python 2.7.3 13 | - Django 1.4 14 | - Jquery 1.7.2 15 | - Bootstrap Framework 2.1.1 16 | - jVectorMap 1.0 17 | - Kendo-UI v2011.3.1129 18 | - SQLite3 19 | 20 | [*] Requirements: 21 | 22 | pip install Django 23 | pip install pygeoip 24 | pip install django-pagination 25 | pip install django-tables2 26 | pip install django-compressor 27 | pip install django-htmlmin 28 | pip install django-filter 29 | 30 | django-tables2-simplefilter: 31 | https://github.com/benjiec/django-tables2-simplefilter 32 | python setup.py install 33 | 34 | SubnetTree: 35 | git clone git://git.bro-ids.org/pysubnettree.git 36 | python setup.py install 37 | 38 | nodejs: 39 | http://nodejs.org/dist/v0.8.16/node-v0.10.33.tar.gz 40 | tar xzvf node-v0.10.33.tar.gz 41 | cd node-v0.10.33 42 | ./configure 43 | make 44 | make install 45 | 46 | npm install -g less 47 | apt-get install python-netaddr 48 | 49 | [*] Install 50 | 51 | Download GeoIP and GeoLiteCity: 52 | 53 | wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz 54 | wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz 55 | 56 | Decompress GeoIP and GeoLiteCity: 57 | 58 | gunzip GeoLiteCity.dat.gz 59 | gunzip GeoIP.dat.gz 60 | 61 | Move GeoIP and GeoLiteCity to DionaeaFR/DionaeaFR/static: 62 | 63 | mv GeoIP.dat DionaeaFR/DionaeaFR/static 64 | mv GeoLiteCity.dat DionaeaFR/DionaeaFR/static 65 | 66 | Run server: 67 | 68 | python manage.py collectstatic 69 | python manage.py runserver 0.0.0.0:8000 70 | 71 | Access to http://YOUR_IP:8000 in browser. 72 | 73 | [*] Changelog 74 | 75 | - Add transport, type and protocol filters in connections table. 76 | - Add Attacks graph last 7 days. 77 | 78 | 29/11/2012 79 | - Add less support 80 | - Add HTML minify 81 | - Add menu icons 82 | - Other visuals changes 83 | 84 | 18/12/2012 85 | - Add home panel 86 | 87 | 20/12/2012 88 | - Add country name in tooltips 89 | - Add Top 10 Ports Graph 90 | - Add ANTIVIRUS_VIRUSTOTAL variable in settings.py 91 | - Deactive minify by default 92 | - Restructure directories 93 | - Fixed Graphs 94 | 95 | 15/05/2013 96 | - Refactoring Code 97 | - New filters system 98 | 99 | 16/05/2013 100 | - Fixed mysql_command. 101 | - Add refresh interval in graphs. 102 | 103 | [*] Suggestions? 104 | 105 | Designed by @rubenespadas 106 | -------------------------------------------------------------------------------- /DionaeaFR/Templates/maps/countries.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | Countries 5 | {% endblock %} 6 | {% block scripts %} 7 | {% load staticfiles %} 8 | 9 | 10 | 11 | {% endblock %} 12 | {% block titlecontent %} 13 | Countries 14 | {% endblock %} 15 | {% block info %} 16 |
    17 | Last {{ RESULTS_DAYS }} days. 18 |
    19 | {% endblock %} 20 | {% block content %} 21 | 27 | {% endblock %} 28 | {% block Lastscripts %} 29 | 69 | {% endblock %} -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/bootstrap/css/screen.css: -------------------------------------------------------------------------------- 1 | table.bootstrap a:link, 2 | table.bootstrap a:visited, 3 | table.bootstrap + ul.pagination > li > a { 4 | color: #7EA419; 5 | text-decoration: none; 6 | font-weight: bold; 7 | } 8 | 9 | table.bootstrap a:hover { 10 | color: #7EA419; 11 | } 12 | 13 | table.bootstrap td, 14 | table.bootstrap th { 15 | padding: 5px; 16 | line-height: 13px; 17 | border-bottom: 1px solid #EEE; 18 | border-left: 1px solid #DDD; 19 | text-align: left; 20 | } 21 | 22 | table.bootstrap thead th:first-child, 23 | table.bootstrap thead td:first-child { 24 | border-left: none !important; 25 | } 26 | 27 | table.bootstrap thead th, 28 | table.bootstrap thead td { 29 | background: #FCFCFC url(../img/header-bg.png) left bottom repeat-x; 30 | border-bottom: 1px solid #DDD; 31 | padding: 2px 5px; 32 | font-size: 11px; 33 | vertical-align: middle; 34 | color: #6E009E; 35 | } 36 | 37 | table.bootstrap thead th > a:link, 38 | table.bootstrap thead th > a:visited { 39 | color: #7EA419; 40 | } 41 | 42 | table.bootstrap thead th.orderable > a { 43 | padding-right: 20px; 44 | background: url(../img/arrow-inactive-up.png) right center no-repeat; 45 | } 46 | table.bootstrap thead th.orderable.asc > a { 47 | background-image: url(../img/arrow-active-up.png); 48 | } 49 | table.bootstrap thead th.orderable.desc > a { 50 | background-image: url(../img/arrow-active-down.png); 51 | } 52 | 53 | table.bootstrap tr.odd { 54 | background-color: #EEEEEE; 55 | } 56 | 57 | table.bootstrap tr.even { 58 | background-color: white; 59 | } 60 | 61 | table.bootstrap + ul.pagination { 62 | overflow: auto; 63 | margin: 0; 64 | padding: 10px; 65 | list-style: none; 66 | } 67 | 68 | table.bootstrap + ul.pagination > li { 69 | float: left; 70 | line-height: 22px; 71 | margin-left: 10px; 72 | } 73 | 74 | table.bootstrap + ul.pagination > li:first-child { 75 | margin-left: 0; 76 | } 77 | 78 | table.bootstrap + ul.pagination > li.cardinality { 79 | float: right; 80 | } 81 | 82 | table.bootstrap > tbody > tr > td > span.true, 83 | table.bootstrap > tbody > tr > td > span.false { 84 | background-position: top left; 85 | background-repeat: no-repeat; 86 | display: inline-block; 87 | height: 10px; 88 | overflow: hidden; 89 | text-indent: -200px; 90 | width: 10px; 91 | } 92 | 93 | table.bootstrap > tbody > tr > td > span.true { 94 | background-image: url(../img/true.gif); 95 | } 96 | 97 | table.bootstrap > tbody > tr > td > span.false { 98 | background-image: url(../img/false.gif); 99 | } 100 | 101 | div.table-container { 102 | display: inline-block; 103 | } 104 | -------------------------------------------------------------------------------- /DionaeaFR/static/django_tables2/themes/paleblue/css/screen.css: -------------------------------------------------------------------------------- 1 | table.paleblue { 2 | border-collapse: collapse; 3 | border-color: #CCC; 4 | border: 1px solid #DDD; 5 | } 6 | 7 | table.paleblue, 8 | table.paleblue + ul.pagination { 9 | font: normal 11px/14px 'Lucida Grande', Verdana, Helvetica, Arial, sans-serif; 10 | } 11 | 12 | table.paleblue a:link, 13 | table.paleblue a:visited, 14 | table.paleblue + ul.pagination > li > a { 15 | color: #5B80B2; 16 | text-decoration: none; 17 | font-weight: bold; 18 | } 19 | 20 | table.paleblue a:hover { 21 | color: #036; 22 | } 23 | 24 | table.paleblue td, 25 | table.paleblue th { 26 | padding: 5px; 27 | line-height: 13px; 28 | border-bottom: 1px solid #EEE; 29 | border-left: 1px solid #DDD; 30 | text-align: left; 31 | } 32 | 33 | table.paleblue thead th:first-child, 34 | table.paleblue thead td:first-child { 35 | border-left: none !important; 36 | } 37 | 38 | table.paleblue thead th, 39 | table.paleblue thead td { 40 | background: #FCFCFC url(../img/header-bg.png) left bottom repeat-x; 41 | border-bottom: 1px solid #DDD; 42 | padding: 2px 5px; 43 | font-size: 11px; 44 | vertical-align: middle; 45 | color: #666; 46 | } 47 | 48 | table.paleblue thead th > a:link, 49 | table.paleblue thead th > a:visited { 50 | color: #666; 51 | } 52 | 53 | table.paleblue thead th.orderable > a { 54 | padding-right: 20px; 55 | background: url(../img/arrow-inactive-up.png) right center no-repeat; 56 | } 57 | table.paleblue thead th.orderable.asc > a { 58 | background-image: url(../img/arrow-active-up.png); 59 | } 60 | table.paleblue thead th.orderable.desc > a { 61 | background-image: url(../img/arrow-active-down.png); 62 | } 63 | 64 | table.paleblue tr.odd { 65 | background-color: #EDF3FE; 66 | } 67 | 68 | table.paleblue tr.even { 69 | background-color: white; 70 | } 71 | 72 | table.paleblue + ul.pagination { 73 | background: white url(../img/pagination-bg.gif) left 180% repeat-x; 74 | overflow: auto; 75 | margin: 0; 76 | padding: 10px; 77 | border: 1px solid #DDD; 78 | list-style: none; 79 | } 80 | 81 | table.paleblue + ul.pagination > li { 82 | float: left; 83 | line-height: 22px; 84 | margin-left: 10px; 85 | } 86 | 87 | table.paleblue + ul.pagination > li:first-child { 88 | margin-left: 0; 89 | } 90 | 91 | table.paleblue + ul.pagination > li.cardinality { 92 | float: right; 93 | } 94 | 95 | table.paleblue > tbody > tr > td > span.true, 96 | table.paleblue > tbody > tr > td > span.false { 97 | background-position: top left; 98 | background-repeat: no-repeat; 99 | display: inline-block; 100 | height: 10px; 101 | overflow: hidden; 102 | text-indent: -200px; 103 | width: 10px; 104 | } 105 | 106 | table.paleblue > tbody > tr > td > span.true { 107 | background-image: url(../img/true.gif); 108 | } 109 | 110 | table.paleblue > tbody > tr > td > span.false { 111 | background-image: url(../img/false.gif); 112 | } 113 | 114 | div.table-container { 115 | display: inline-block; 116 | } 117 | -------------------------------------------------------------------------------- /DionaeaFR/urls.py: -------------------------------------------------------------------------------- 1 | from django.conf.urls import patterns, url 2 | 3 | from Web.views.other import home 4 | from Web.views.connection import connectionIndex, connectionDetail 5 | from Web.views.download import downloadIndex 6 | from Web.views.graph import services, servicesData 7 | from Web.views.graph import ports, portsData 8 | from Web.views.graph import urls, urlsData 9 | from Web.views.graph import malware, malwareData 10 | from Web.views.graph import ips, ipsData, ipsCountries 11 | from Web.views.graph import connections, connectionsData, connCountries 12 | from Web.views.graph import timeline 13 | from Web.views.map import attackersMap, countriesMap 14 | 15 | 16 | urlpatterns = patterns( 17 | 'Web.views', 18 | url( 19 | r'^$', 20 | home 21 | ), 22 | url( 23 | r'^connections/$', 24 | connectionIndex, 25 | name='connection-index' 26 | ), 27 | url( 28 | r'^connections/(?P\d+)/', 29 | connectionDetail, 30 | name='connection-detail' 31 | ), 32 | url( 33 | r'^downloads/', 34 | downloadIndex, 35 | name='download-index' 36 | ), 37 | url( 38 | r'^graphs/services/$', 39 | services, 40 | name='services' 41 | ), 42 | url( 43 | r'^graphs/servicesdata/$', 44 | servicesData, 45 | name='services-data' 46 | ), 47 | url( 48 | r'^graphs/ports/$', 49 | ports, 50 | name='ports' 51 | ), 52 | url( 53 | r'^graphs/portsdata/$', 54 | portsData, 55 | name='ports-data' 56 | ), 57 | url( 58 | r'^graphs/urls/$', 59 | urls, 60 | name='urls' 61 | ), 62 | url( 63 | r'^graphs/urlsdata/$', 64 | urlsData, 65 | name='urls-data' 66 | ), 67 | url( 68 | r'^graphs/malware/$', 69 | malware, 70 | name='malware' 71 | ), 72 | url( 73 | r'^graphs/malwaredata/$', 74 | malwareData, 75 | name='malware-data' 76 | ), 77 | url( 78 | r'^graphs/ips/$', 79 | ips, 80 | name='ips' 81 | ), 82 | url( 83 | r'^graphs/ipsdata/$', 84 | ipsData, 85 | name='ips-data' 86 | ), 87 | url( 88 | r'^graphs/connections/$', 89 | connections, 90 | name='connections' 91 | ), 92 | url( 93 | r'^graphs/connectionsdata/$', 94 | connectionsData, 95 | name='connections-data' 96 | ), 97 | url( 98 | r'^graphs/timeline/$', 99 | timeline, 100 | name='timeline' 101 | ), 102 | url( 103 | r'^graphs/conncountries/$', 104 | connCountries, 105 | name='conn-countries' 106 | ), 107 | url( 108 | r'^graphs/ipscountries/$', 109 | ipsCountries, 110 | name='ips-countries' 111 | ), 112 | url( 113 | r'^maps/attackers/$', 114 | attackersMap, 115 | name='attackers-map' 116 | ), 117 | url( 118 | r'^maps/countries/$', 119 | countriesMap, 120 | name='countries-map' 121 | ), 122 | ) 123 | 124 | # vim: set expandtab:ts=4 125 | -------------------------------------------------------------------------------- /Web/models/connection.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | import os 3 | 4 | try: 5 | import pygeoip 6 | except ImportError: 7 | print "Install pygeoip" 8 | print "\tpip install pygeoip" 9 | pass 10 | 11 | from django.db import models 12 | 13 | 14 | gi = pygeoip.GeoIP( 15 | os.path.join( 16 | 'DionaeaFR/static', 17 | 'GeoIP.dat' 18 | ), 19 | pygeoip.MEMORY_CACHE 20 | ) 21 | 22 | 23 | class Connection(models.Model): 24 | connection = models.IntegerField( 25 | primary_key=True, 26 | blank=True, 27 | verbose_name='ID' 28 | ) 29 | 30 | connection_type = models.TextField( 31 | blank=True, 32 | verbose_name='State' 33 | ) 34 | 35 | connection_transport = models.TextField( 36 | blank=True, 37 | verbose_name='Protocol' 38 | ) 39 | 40 | connection_protocol = models.TextField( 41 | blank=True, 42 | verbose_name='Service' 43 | ) 44 | 45 | connection_timestamp = models.IntegerField( 46 | blank=True, 47 | verbose_name='Date' 48 | ) 49 | 50 | connection_root = models.IntegerField( 51 | blank=True, 52 | verbose_name='Root' 53 | ) 54 | 55 | connection_parent = models.IntegerField( 56 | blank=True, 57 | verbose_name='Parent' 58 | ) 59 | 60 | local_host = models.TextField( 61 | blank=True, 62 | verbose_name='Sensor' 63 | ) 64 | 65 | local_port = models.IntegerField( 66 | blank=True, 67 | verbose_name='Dst Port' 68 | ) 69 | 70 | remote_host = models.TextField( 71 | blank=True, 72 | verbose_name='Attacker' 73 | ) 74 | 75 | remote_hostname = models.TextField( 76 | blank=True, 77 | verbose_name='Hostname' 78 | ) 79 | 80 | remote_port = models.IntegerField( 81 | blank=True, 82 | verbose_name='Src Port' 83 | ) 84 | 85 | class Meta: 86 | db_table = u'connections' 87 | ordering = ['-connection'] 88 | verbose_name_plural = "Connections" 89 | 90 | def __str__(self): 91 | return str(self.connection) 92 | 93 | @property 94 | def getDate(self): 95 | return datetime.datetime.fromtimestamp( 96 | float( 97 | self.connection_timestamp 98 | ) 99 | ).strftime("%d-%m-%Y %H:%M:%S") 100 | 101 | @property 102 | def getTrace(self): 103 | conns = Connection.objects.filter( 104 | connection_root=self.connection_root 105 | ).order_by( 106 | 'connection' 107 | ) 108 | return conns 109 | 110 | @property 111 | def getCC(self): 112 | cc = None 113 | if self.remote_host: 114 | cc = gi.country_code_by_addr( 115 | self.remote_host 116 | ) 117 | else: 118 | cc = "zz" 119 | if cc: 120 | return cc.lower() 121 | else: 122 | return "zz" 123 | 124 | @property 125 | def getCountryName(self): 126 | name = "Unkown" 127 | if self.remote_host: 128 | name = gi.country_name_by_addr( 129 | self.remote_host 130 | ) 131 | return name 132 | 133 | @property 134 | def getRemoteHost(self): 135 | if self.remote_host == "": 136 | return '127.0.0.1' 137 | else: 138 | return self.remote_host 139 | 140 | # vim: set expandtab:ts=4 141 | -------------------------------------------------------------------------------- /Web/views/map.py: -------------------------------------------------------------------------------- 1 | import re 2 | import time 3 | import datetime 4 | import sys 5 | import os 6 | 7 | try: 8 | import pygeoip 9 | except ImportError: 10 | print "Install pygeoip" 11 | print "\tpip install pygeoip" 12 | pass 13 | 14 | from django.template import RequestContext 15 | from django.conf import settings 16 | from django.shortcuts import render_to_response 17 | 18 | from Web.models.connection import Connection 19 | 20 | reload(sys) 21 | sys.setdefaultencoding('utf-8') 22 | 23 | gi = pygeoip.GeoIP( 24 | os.path.join( 25 | 'DionaeaFR/static', 26 | 'GeoIP.dat' 27 | ), 28 | pygeoip.MEMORY_CACHE 29 | ) 30 | 31 | gic = pygeoip.GeoIP( 32 | os.path.join( 33 | 'DionaeaFR/static', 34 | 'GeoLiteCity.dat' 35 | ), 36 | pygeoip.STANDARD 37 | ) 38 | 39 | IP_PATTERN = "(^[2][0-5][0-5]|^[1]{0,1}[0-9]{1,2})\.([0-2][0-5][0-5]|[1]{0,1}[0-9]{1,2})\.([0-2][0-5][0-5]|[1]{0,1}[0-9]{1,2})\.([0-2][0-5][0-5]|[1]{0,1}[0-9]{1,2})$" 40 | LAT_PATTERN = "{{latLng:[{:-f},{:-f}], count:'{}', host:'{}'}}," 41 | COUNTRY_PATTERN = '"{0}":{1},' 42 | 43 | 44 | def countriesMap(request): 45 | date_now = datetime.date.today() - datetime.timedelta(days=settings.RESULTS_DAYS) 46 | conn = Connection.objects.filter( 47 | connection_timestamp__gt=time.mktime( 48 | date_now.timetuple() 49 | ) 50 | ).values( 51 | 'remote_host' 52 | ) 53 | data = {} 54 | for c in conn: 55 | if (re.match(IP_PATTERN, c['remote_host']) is not None): 56 | cc = gi.country_code_by_addr( 57 | c['remote_host'] 58 | ) 59 | if cc != "": 60 | try: 61 | data[cc] += 1 62 | except: 63 | data[cc] = 1 64 | var = "var gdpData = {" 65 | for country in data: 66 | var = var + COUNTRY_PATTERN.format( 67 | country, 68 | str(data[country]) 69 | ) 70 | var = var.rstrip(',') + "};" 71 | return render_to_response( 72 | 'maps/countries.html', 73 | { 74 | 'cc': var 75 | }, 76 | context_instance=RequestContext(request) 77 | ) 78 | 79 | 80 | def attackersMap(request): 81 | date_now = datetime.date.today() - datetime.timedelta(days=settings.RESULTS_DAYS) 82 | conn = Connection.objects.filter( 83 | connection_timestamp__gt=time.mktime( 84 | date_now.timetuple() 85 | ) 86 | ).values( 87 | 'remote_host' 88 | ) 89 | var = "var gdpData = [" 90 | counts = {} 91 | for c in conn: 92 | if (re.match(IP_PATTERN, c['remote_host']) is not None): 93 | try: 94 | counts[c['remote_host']] += 1 95 | except: 96 | counts[c['remote_host']] = 1 97 | for c in counts: 98 | if (re.match(IP_PATTERN, c) is not None): 99 | cc = gic.record_by_addr( 100 | c 101 | ) 102 | if cc: 103 | var = var + LAT_PATTERN.format( 104 | cc['latitude'], 105 | cc['longitude'], 106 | counts[c], 107 | str(c) 108 | ) 109 | var = var.rstrip(',') + "];" 110 | return render_to_response( 111 | 'maps/attackers.html', 112 | { 113 | 'attackers': var 114 | }, 115 | context_instance=RequestContext(request) 116 | ) 117 | 118 | # vim: set expandtab:ts=4 119 | -------------------------------------------------------------------------------- /DionaeaFR/Templates/table.html: -------------------------------------------------------------------------------- 1 | {% spaceless %} 2 | {% load django_tables2 %} 3 | {% load i18n %} 4 | {% block table %} 5 | 6 | {% nospaceless %} 7 | {% block table.thead %} 8 | 9 | 10 | {% for column in table.columns %} 11 | {% if column.orderable %} 12 | 15 | {% else %} 16 | 17 | {% endif %} 18 | {% endfor %} 19 | 20 | 21 | {% endblock table.thead %} 22 | {% block table.tbody %} 23 | 24 | {% for row in table.page.object_list|default:table.rows %} 25 | {% block table.tbody.row %} 26 | 27 | {% for column, cell in row.items %} 28 | 29 | {% endfor %} 30 | 31 | {% endblock table.tbody.row %} 32 | {% empty %} 33 | {% if table.empty_text %} 34 | {% block table.tbody.empty_text %} 35 | 36 | 37 | 38 | {% endblock table.tbody.empty_text %} 39 | {% endif %} 40 | {% endfor %} 41 | 42 | {% endblock table.tbody %} 43 | {% block table.tfoot %} 44 | 45 | {% endblock table.tfoot %} 46 | {% endnospaceless %} 47 |
    {{ column.header }} 14 | {{ column.header }}
    {{ cell }}
    {{ table.empty_text }}
    48 | {% endblock table %} 49 | 50 | {% if table.page %} 51 | {% with table.page.paginator.count as total %} 52 | {% with table.page.object_list|length as count %} 53 | {% block pagination %} 54 | 75 | {% endblock pagination %} 76 | {% endwith %} 77 | {% endwith %} 78 | {% endif %} 79 | {% endspaceless %} 80 | -------------------------------------------------------------------------------- /Web/views/connection.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render_to_response 2 | from django.template import RequestContext 3 | from django.http import Http404 4 | 5 | from django_tables2 import RequestConfig 6 | from Web.models.connection import Connection 7 | from Web.models.dcerpcbind import Dcerpcbind 8 | from Web.models.dcerpcrequest import Dcerpcrequest 9 | from Web.models.download import Download 10 | from Web.models.emuprofile import EmuProfile 11 | from Web.models.emuservice import EmuService 12 | from Web.models.login import Login 13 | from Web.models.mssqlcommand import MssqlCommand 14 | from Web.models.mssqlfingerprint import MssqlFingerprint 15 | from Web.models.mysqlcommand import MysqlCommand 16 | from Web.models.offer import Offer 17 | from Web.models.p0f import P0f 18 | from Web.models.resolve import Resolve 19 | from Web.models.sipcommand import SipCommand 20 | from Web.tables.connection import ConnectionTable 21 | from Web.forms.connection import ConnectionFilterForm 22 | from Web.filters.connection import ConnectionFilter 23 | 24 | 25 | def connectionIndex(request): 26 | connections = Connection.objects.all() 27 | filterQueryset = ConnectionFilter( 28 | request.GET, 29 | queryset=connections 30 | ) 31 | table = ConnectionTable( 32 | filterQueryset 33 | ) 34 | filters = ConnectionFilterForm() 35 | RequestConfig( 36 | request, 37 | paginate={ 38 | "per_page": 15 39 | } 40 | ).configure( 41 | table 42 | ) 43 | return render_to_response( 44 | 'base.html', 45 | { 46 | 'filters': filters, 47 | 'table': table, 48 | 'title': u'Connections' 49 | }, 50 | context_instance=RequestContext( 51 | request 52 | ) 53 | ) 54 | 55 | 56 | def connectionDetail(request, connection_id): 57 | try: 58 | length = Connection.objects.count() 59 | conn = Connection.objects.get( 60 | pk=connection_id 61 | ) 62 | dcerpcbind = Dcerpcbind.objects.filter( 63 | connection=connection_id 64 | ) 65 | dcerpcrequest = Dcerpcrequest.objects.filter( 66 | connection=connection_id 67 | ) 68 | download = Download.objects.filter( 69 | connection=connection_id 70 | ) 71 | emuProfile = EmuProfile.objects.filter( 72 | connection=connection_id 73 | ) 74 | emuService = EmuService.objects.filter( 75 | connection=connection_id 76 | ) 77 | login = Login.objects.filter( 78 | connection=connection_id 79 | ) 80 | mssqlCommand = MssqlCommand.objects.filter( 81 | connection=connection_id 82 | ) 83 | mssqlFingerprint = MssqlFingerprint.objects.filter( 84 | connection=connection_id 85 | ) 86 | mysqlCommand = MysqlCommand.objects.filter( 87 | connection=connection_id 88 | ) 89 | offer = Offer.objects.filter( 90 | connection=connection_id 91 | ) 92 | p0f = P0f.objects.filter( 93 | connection=connection_id 94 | ) 95 | resolve = Resolve.objects.filter( 96 | connection=connection_id 97 | ) 98 | sipcommand = SipCommand.objects.filter( 99 | connection=connection_id 100 | ) 101 | previous = 0 102 | next = 0 103 | if int(connection_id) > 0: 104 | previous = int(connection_id) - 1 105 | if int(connection_id) < length: 106 | next = int(connection_id) + 1 107 | except Connection.DoesNotExist: 108 | raise Http404 109 | return render_to_response( 110 | 'connections/detail.html', 111 | { 112 | 'connection': conn, 113 | 'dcerpcbind': dcerpcbind, 114 | 'dcerpcrequest': dcerpcrequest, 115 | 'download': download, 116 | 'emuProfile': emuProfile, 117 | 'emuService': emuService, 118 | 'login': login, 119 | 'mssqlCommand': mssqlCommand, 120 | 'mssqlFingerprint': mssqlFingerprint, 121 | 'mysqlCommand': mysqlCommand, 122 | 'offer': offer, 123 | 'p0f': p0f, 124 | 'resolve': resolve, 125 | 'sipcommand': sipcommand, 126 | 'previous': int(previous), 127 | 'next': int(next), 128 | 'title': str(conn) 129 | } 130 | ) 131 | 132 | # vim: set expandtab:ts=4 133 | -------------------------------------------------------------------------------- /DionaeaFR/static/css/styles.css: -------------------------------------------------------------------------------- 1 | .padding { 2 | padding-left: 15px; 3 | padding-right: 15px; 4 | padding-top: 15px; 5 | padding-bottom: 15px; 6 | } 7 | @font-face { 8 | font-family: "Coolvetica"; 9 | src: url(../static/fonts/coolvetica rg.ttf) format('truetype'); 10 | } 11 | * { 12 | margin: 0; 13 | } 14 | html, 15 | body { 16 | height: 100%; 17 | background-color: white; 18 | } 19 | body:before { 20 | content: ""; 21 | position: fixed; 22 | top: -10px; 23 | left: 0; 24 | width: 100%; 25 | height: 10px; 26 | -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.8); 27 | -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.8); 28 | box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.8); 29 | z-index: 100; 30 | } 31 | body:after { 32 | content: ""; 33 | position: fixed; 34 | bottom: -10px; 35 | left: 0; 36 | width: 100%; 37 | height: 10px; 38 | -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.8); 39 | -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.8); 40 | box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.8); 41 | z-index: 100; 42 | } 43 | .page-header { 44 | background-color: #7ea419; 45 | margin-top: 0px; 46 | padding-left: 15px; 47 | padding-right: 15px; 48 | padding-top: 15px; 49 | padding-bottom: 15px; 50 | } 51 | h1 { 52 | font-family: Coolvetica, "Helvetica Neue", Helvetica, Arial, sans-serif; 53 | display: inline; 54 | position: relative; 55 | letter-spacing: -1px; 56 | color: white; 57 | } 58 | h1 small { 59 | font-family: Coolvetica, "Helvetica Neue", Helvetica, Arial, sans-serif; 60 | display: inline; 61 | position: relative; 62 | letter-spacing: -1px; 63 | color: #1b1b1b; 64 | } 65 | h2 small { 66 | font-family: Coolvetica, "Helvetica Neue", Helvetica, Arial, sans-serif; 67 | display: inline; 68 | position: relative; 69 | letter-spacing: -1px; 70 | color: white; 71 | } 72 | h4 { 73 | font-family: Coolvetica, "Helvetica Neue", Helvetica, Arial, sans-serif; 74 | letter-spacing: 3px; 75 | } 76 | a { 77 | color: #7ea419; 78 | } 79 | a:hover { 80 | color: #7ea419; 81 | } 82 | .label-important { 83 | background-color: #7ea419; 84 | } 85 | .pagination ul > .disabled > span, 86 | .pagination ul > .disabled > a, 87 | .pagination ul > .disabled > a:hover { 88 | background-color: white; 89 | } 90 | .dropdown-menu li > a:hover, 91 | .dropdown-menu li > a:focus, 92 | .dropdown-submenu:hover > a, 93 | .dropdown-submenu:focus > a { 94 | text-decoration: none; 95 | background-color: #7ea419; 96 | color: white; 97 | background-image: none; 98 | -webkit-border-radius: 5px; 99 | -moz-border-radius: 5px; 100 | -ms-border-radius: 5px; 101 | -o-border-radius: 5px; 102 | border-radius: 5px; 103 | -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 104 | -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 105 | box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 106 | } 107 | .nav > li > a:hover { 108 | text-decoration: none; 109 | background-color: #7ea419; 110 | color: white; 111 | -webkit-border-radius: 5px; 112 | -moz-border-radius: 5px; 113 | -ms-border-radius: 5px; 114 | -o-border-radius: 5px; 115 | border-radius: 5px; 116 | -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 117 | -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 118 | box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 119 | } 120 | .nav-list { 121 | padding-bottom: 10px; 122 | } 123 | .sidebar-nav { 124 | -webkit-border-radius: 5px; 125 | -moz-border-radius: 5px; 126 | -ms-border-radius: 5px; 127 | -o-border-radius: 5px; 128 | border-radius: 5px; 129 | -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 130 | -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 131 | box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 132 | background-color: white; 133 | } 134 | #filter { 135 | -webkit-border-radius: 5px; 136 | -moz-border-radius: 5px; 137 | -ms-border-radius: 5px; 138 | -o-border-radius: 5px; 139 | border-radius: 5px; 140 | -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 141 | -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 142 | box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 143 | background-color: white; 144 | margin-top: 20px; 145 | } 146 | #info { 147 | -webkit-border-radius: 5px; 148 | -moz-border-radius: 5px; 149 | -ms-border-radius: 5px; 150 | -o-border-radius: 5px; 151 | border-radius: 5px; 152 | -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 153 | -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 154 | box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 155 | margin-top: 20px; 156 | background-color: #7ea419; 157 | color: white; 158 | border-color: #7ea419; 159 | } 160 | #wrap { 161 | min-height: 100%; 162 | height: auto !important; 163 | height: 100%; 164 | margin: 0 auto -90px; 165 | } 166 | .table { 167 | font-size: 11px; 168 | } 169 | .table td { 170 | max-width: 850px; 171 | overflow-x: hidden; 172 | white-space: pre; 173 | white-space: pre-wrap; 174 | white-space: pre-line; 175 | white-space: -pre-wrap; 176 | white-space: -o-pre-wrap; 177 | white-space: -moz-pre-wrap; 178 | white-space: -hp-pre-wrap; 179 | word-wrap: break-word; 180 | } 181 | #content { 182 | -webkit-border-radius: 5px; 183 | -moz-border-radius: 5px; 184 | -ms-border-radius: 5px; 185 | -o-border-radius: 5px; 186 | border-radius: 5px; 187 | -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 188 | -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 189 | box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); 190 | padding-left: 15px; 191 | padding-right: 15px; 192 | padding-top: 15px; 193 | padding-bottom: 15px; 194 | background-color: white; 195 | min-height: 600px; 196 | height: auto !important; 197 | height: 600px; 198 | margin-bottom: 20px; 199 | } 200 | #resultado { 201 | -webkit-border-radius: 5px; 202 | -moz-border-radius: 5px; 203 | -ms-border-radius: 5px; 204 | -o-border-radius: 5px; 205 | border-radius: 5px; 206 | border: 1px solid #eeeeee; 207 | padding-left: 15px; 208 | padding-right: 15px; 209 | padding-top: 15px; 210 | padding-bottom: 15px; 211 | background-color: black; 212 | color: white; 213 | margin-bottom: 20px; 214 | } 215 | #footer { 216 | padding-top: 15px; 217 | height: 90px; 218 | background-color: #1b1b1b; 219 | color: white; 220 | } 221 | #push { 222 | height: 91px; 223 | } 224 | select { 225 | width: 140px; 226 | } 227 | .thumbnail { 228 | text-align: center; 229 | } 230 | .statistics { 231 | color: #6e009e; 232 | } 233 | #map { 234 | border: none; 235 | box-shadow: none; 236 | width: auto; 237 | height: 550px; 238 | } 239 | -------------------------------------------------------------------------------- /DionaeaFR/static/css/styles.less: -------------------------------------------------------------------------------- 1 | @font-color: #000000; 2 | @border-color: #EEEEEE; 3 | @green: #7EA419; 4 | @purple: #6E009E; 5 | @black: #1B1B1B; 6 | @result-back: #000000; 7 | @result-color: #FFFFFF; 8 | @base-color: #FFFFFF; 9 | @widget-color: #EEEEEE; 10 | @link: #7EA419; 11 | @font-table: 11px; 12 | @border-height: 1px; 13 | @footer-height: 90px; 14 | @shadow-hard: 0px 0px 10px rgba(0,0,0,.8); 15 | @shadow-soft: 0px 0px 10px rgba(0,0,0,.2); 16 | @shadow-height: 10px; 17 | @padding-left: 15px; 18 | @padding-right: 15px; 19 | @padding-top: 15px; 20 | @padding-bottom: 15px; 21 | @margin-bottom: 20px; 22 | @margin-top: 20px; 23 | @content-size: 600px; 24 | @select-width: 140px; 25 | @height-map: 550px; 26 | 27 | .padding { 28 | padding-left: @padding-left; 29 | padding-right: @padding-right; 30 | padding-top: @padding-top; 31 | padding-bottom: @padding-bottom; 32 | } 33 | 34 | .rounded-corners (@radius: 5px) { 35 | -webkit-border-radius: @radius; 36 | -moz-border-radius: @radius; 37 | -ms-border-radius: @radius; 38 | -o-border-radius: @radius; 39 | border-radius: @radius; 40 | -webkit-box-shadow: @shadow-soft; 41 | -moz-box-shadow: @shadow-soft; 42 | box-shadow: @shadow-soft; 43 | } 44 | 45 | .rounded-bordered (@radius: 5px) { 46 | -webkit-border-radius: @radius; 47 | -moz-border-radius: @radius; 48 | -ms-border-radius: @radius; 49 | -o-border-radius: @radius; 50 | border-radius: @radius; 51 | border: @border-height solid @border-color; 52 | } 53 | 54 | .rounded-top (@radius: 5px) { 55 | -webkit-border-top-left-radius: @radius; 56 | -moz-border-top-left-radius: @radius; 57 | -ms-border-top-left-radius: @radius; 58 | -o-border-top-left-radius: @radius; 59 | border-top-left-radius: @radius; 60 | -webkit-border-top-right-radius: @radius; 61 | -moz-border-top-right-radius: @radius; 62 | -ms-border-top-right-radius: @radius; 63 | -o-border-top-right-radius: @radius; 64 | border-top-right-radius: @radius; 65 | } 66 | 67 | .format_font (@spacing: -1px) { 68 | font-family: Coolvetica, "Helvetica Neue", Helvetica, Arial, sans-serif; 69 | display: inline; 70 | position: relative; 71 | letter-spacing: @spacing; 72 | color: rgba(255, 255, 255, 1); 73 | } 74 | 75 | .format_font_small (@spacing: -1px) { 76 | font-family: Coolvetica, "Helvetica Neue", Helvetica, Arial, sans-serif; 77 | display: inline; 78 | position: relative; 79 | letter-spacing: @spacing; 80 | color: @black; 81 | } 82 | 83 | .format_font_small_white (@spacing: -1px) { 84 | font-family: Coolvetica, "Helvetica Neue", Helvetica, Arial, sans-serif; 85 | display: inline; 86 | position: relative; 87 | letter-spacing: @spacing; 88 | color: @base-color; 89 | } 90 | 91 | @font-face { 92 | font-family: "Coolvetica"; 93 | src: url(../static/fonts/coolvetica rg.ttf) format('truetype'); 94 | } 95 | 96 | * { 97 | margin: 0; 98 | } 99 | 100 | html, body { 101 | height: 100%; 102 | background-color: @base-color; 103 | } 104 | 105 | body:before { 106 | content: ""; 107 | position: fixed; 108 | top: -10px; 109 | left: 0; 110 | width: 100%; 111 | height: @shadow-height; 112 | -webkit-box-shadow: @shadow-hard; 113 | -moz-box-shadow: @shadow-hard; 114 | box-shadow: @shadow-hard; 115 | z-index: 100; 116 | } 117 | 118 | body:after { 119 | content: ""; 120 | position: fixed; 121 | bottom: -10px; 122 | left: 0; 123 | width: 100%; 124 | height: @shadow-height; 125 | -webkit-box-shadow: @shadow-hard; 126 | -moz-box-shadow: @shadow-hard; 127 | box-shadow: @shadow-hard; 128 | z-index: 100; 129 | } 130 | 131 | .page-header { 132 | background-color: @green; 133 | margin-top: 0px; 134 | .padding; 135 | } 136 | 137 | h1 { 138 | .format_font; 139 | } 140 | 141 | 142 | h1 small{ 143 | .format_font_small; 144 | } 145 | 146 | h2 small{ 147 | .format_font_small_white; 148 | } 149 | 150 | h4 151 | { 152 | font-family: Coolvetica, "Helvetica Neue", Helvetica, Arial, sans-serif; 153 | letter-spacing: 3px; 154 | } 155 | 156 | a { 157 | color: @link; 158 | } 159 | 160 | a:hover { 161 | color: @link; 162 | } 163 | 164 | .label-important { 165 | background-color: @green; 166 | } 167 | 168 | .pagination ul > .disabled > span, .pagination ul > .disabled > a, .pagination ul > .disabled > a:hover { 169 | background-color: @base-color; 170 | } 171 | 172 | .dropdown-menu li > a:hover, .dropdown-menu li > a:focus, .dropdown-submenu:hover > a, .dropdown-submenu:focus > a 173 | { 174 | text-decoration: none; 175 | background-color: @link; 176 | color: white; 177 | background-image: none; 178 | .rounded-corners; 179 | } 180 | 181 | .nav > li > a:hover { 182 | text-decoration: none; 183 | background-color: @link; 184 | color: white; 185 | .rounded-corners; 186 | } 187 | 188 | .nav-list 189 | { 190 | padding-bottom: 10px; 191 | } 192 | 193 | .sidebar-nav { 194 | .rounded-corners; 195 | background-color: @base-color; 196 | } 197 | 198 | #filter { 199 | .rounded-corners; 200 | background-color: @base-color; 201 | margin-top: @margin-top; 202 | } 203 | 204 | #info { 205 | .rounded-corners; 206 | margin-top: @margin-top; 207 | background-color: @green; 208 | color: @base-color; 209 | border-color: @green; 210 | } 211 | 212 | #wrap { 213 | min-height: 100%; 214 | height: auto !important; 215 | height: 100%; 216 | margin: 0 auto -@footer-height; 217 | } 218 | 219 | .table 220 | { 221 | font-size: @font-table; 222 | } 223 | 224 | .table td { 225 | max-width: 850px; 226 | overflow-x: hidden; 227 | white-space: pre; 228 | white-space: pre-wrap; 229 | white-space: pre-line; 230 | white-space: -pre-wrap; 231 | white-space: -o-pre-wrap; 232 | white-space: -moz-pre-wrap; 233 | white-space: -hp-pre-wrap; 234 | word-wrap: break-word; 235 | } 236 | 237 | #content { 238 | .rounded-corners; 239 | .padding; 240 | background-color: @base-color; 241 | min-height: @content-size; 242 | height: auto !important; 243 | height: @content-size; 244 | margin-bottom: @margin-bottom; 245 | } 246 | 247 | #resultado 248 | { 249 | .rounded-bordered; 250 | .padding; 251 | background-color: @result-back; 252 | color: @result-color; 253 | margin-bottom: @margin-bottom; 254 | } 255 | #footer { 256 | padding-top: @padding-top; 257 | height: @footer-height; 258 | background-color: @black; 259 | color: @base-color; 260 | } 261 | 262 | #push { 263 | height: @footer-height + 1; 264 | } 265 | 266 | select { 267 | width: @select-width; 268 | } 269 | 270 | .thumbnail{ 271 | text-align: center; 272 | } 273 | 274 | .statistics{ 275 | color: @purple; 276 | } 277 | 278 | #map { 279 | border: none; 280 | box-shadow: none; 281 | width: auto; 282 | height: @height-map; 283 | } 284 | 285 | .btn-danger { 286 | background-color: @purple; 287 | background-image: none; 288 | } 289 | 290 | .btn-danger:hover, .btn-danger:focus { 291 | background-color: @purple; 292 | background-image: none; 293 | } -------------------------------------------------------------------------------- /DionaeaFR/settings.py.dist: -------------------------------------------------------------------------------- 1 | # Django settings for DionaeaFR project. 2 | import os 3 | 4 | CURRENT_PATH = os.path.abspath(os.path.dirname(__file__)) 5 | 6 | DEBUG = True 7 | TEMPLATE_DEBUG = DEBUG 8 | 9 | ADMINS = ( 10 | # ('Your Name', 'your_email@example.com'), 11 | ) 12 | 13 | MANAGERS = ADMINS 14 | 15 | DATABASES = { 16 | 'default': { 17 | 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 18 | 'NAME': '/var/lib/dionaea/logsql.sqlite', 19 | 'USER': '', # Not used with sqlite3. 20 | 'PASSWORD': '', # Not used with sqlite3. 21 | 'HOST': '', # Set to empty string for localhost. Not used with sqlite3. 22 | 'PORT': '', # Set to empty string for default. Not used with sqlite3. 23 | }, 24 | 'OPTIONS': { 25 | 'timeout': 60, 26 | } 27 | } 28 | 29 | # How many days (going backwards) worth of results to show 30 | RESULTS_DAYS = 14 31 | 32 | # Local time zone for this installation. Choices can be found here: 33 | # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name 34 | # although not all choices may be available on all operating systems. 35 | # On Unix systems, a value of None will cause Django to use the same 36 | # timezone as the operating system. 37 | # If running in a Windows environment this must be set to the same as your 38 | # system time zone. 39 | DATETIME_FORMAT = 'd-m-Y H:i:s' 40 | TIME_ZONE = 'Etc/UTC' 41 | 42 | # Language code for this installation. All choices can be found here: 43 | # http://www.i18nguy.com/unicode/language-identifiers.html 44 | LANGUAGE_CODE = 'en-us' 45 | 46 | SITE_ID = 1 47 | 48 | # If you set this to False, Django will make some optimizations so as not 49 | # to load the internationalization machinery. 50 | USE_I18N = True 51 | 52 | # If you set this to False, Django will not format dates, numbers and 53 | # calendars according to the current locale. 54 | USE_L10N = True 55 | 56 | # If you set this to False, Django will not use timezone-aware datetimes. 57 | USE_TZ = True 58 | 59 | # Absolute filesystem path to the directory that will hold user-uploaded files. 60 | # Example: "/home/media/media.lawrence.com/media/" 61 | MEDIA_ROOT = os.path.join(CURRENT_PATH, 'media') 62 | 63 | # URL that handles the media served from MEDIA_ROOT. Make sure to use a 64 | # trailing slash. 65 | # Examples: "http://media.lawrence.com/media/", "http://example.com/media/" 66 | MEDIA_URL = '/media/' 67 | 68 | # Absolute path to the directory static files should be collected to. 69 | # Don't put anything in this directory yourself; store your static files 70 | # in apps' "static/" subdirectories and in STATICFILES_DIRS. 71 | # Example: "/home/media/media.lawrence.com/static/" 72 | STATIC_ROOT = os.path.abspath(os.path.join(os.path.join(CURRENT_PATH, os.pardir), 'static')) 73 | 74 | # URL prefix for static files. 75 | # Example: "http://media.lawrence.com/static/" 76 | STATIC_URL = '/static/' 77 | 78 | # Additional locations of static files 79 | STATICFILES_DIRS = ( 80 | os.path.join(CURRENT_PATH, 'static'), 81 | ) 82 | 83 | # List of finder classes that know how to find static files in 84 | # various locations. 85 | STATICFILES_FINDERS = ( 86 | 'django.contrib.staticfiles.finders.FileSystemFinder', 87 | 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 88 | 'compressor.finders.CompressorFinder', 89 | ) 90 | 91 | # Make this unique, and don't share it with anybody. 92 | SECRET_KEY = 'o*w2sbrhS_LKSQwx_dmlslsdmcx,c,k!(el0^qx5dljbv6eyjwx)(76^wppdjrrxnj%wcny3h2r' 93 | 94 | # List of callables that know how to import templates from various sources. 95 | TEMPLATE_LOADERS = ( 96 | 'django.template.loaders.filesystem.Loader', 97 | 'django.template.loaders.app_directories.Loader', 98 | # 'django.template.loaders.eggs.Loader', 99 | ) 100 | 101 | TEMPLATE_CONTEXT_PROCESSORS = ( 102 | 'django.core.context_processors.request', 103 | 'django.core.context_processors.static', 104 | 'django.contrib.messages.context_processors.messages', 105 | 'django.contrib.auth.context_processors.auth', 106 | 'Web.context_processors.expose_extra_settings_keys', 107 | ) 108 | 109 | MIDDLEWARE_CLASSES = ( 110 | 'django.middleware.gzip.GZipMiddleware', 111 | 'htmlmin.middleware.HtmlMinifyMiddleware', 112 | 'django.middleware.common.CommonMiddleware', 113 | 'django.contrib.sessions.middleware.SessionMiddleware', 114 | 'django.middleware.csrf.CsrfViewMiddleware', 115 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 116 | 'django.contrib.messages.middleware.MessageMiddleware', 117 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 118 | 'pagination.middleware.PaginationMiddleware', 119 | ) 120 | 121 | ANTIVIRUS_VIRUSTOTAL = 'Sophos' 122 | 123 | RESERVED_IP = ( 124 | '0.0.0.0/8', 125 | '10.0.0.0/8', 126 | '100.64.0.0/10', 127 | '127.0.0.0/8', 128 | '169.254.0.0/16', 129 | '172.16.0.0/12', 130 | '192.0.0.0/24', 131 | '192.0.2.0/24', 132 | '192.88.99.0/24', 133 | '192.168.0.0/16', 134 | '198.15.0.0/15', 135 | '198.51.100.0/24', 136 | '203.0.113.0/24', 137 | '224.0.0.0/4', 138 | '240.0.0.0/4', 139 | '255.255.255.255/32' 140 | ) 141 | 142 | HTML_MINIFY = False 143 | 144 | ROOT_URLCONF = 'DionaeaFR.urls' 145 | 146 | # Python dotted path to the WSGI application used by Django's runserver. 147 | WSGI_APPLICATION = 'DionaeaFR.wsgi.application' 148 | 149 | TEMPLATE_DIRS = ( 150 | os.path.join(CURRENT_PATH, 'Templates'), 151 | ) 152 | 153 | COMPRESS_PRECOMPILERS = ( 154 | ('text/less', 'lessc {infile} {outfile}'), 155 | ) 156 | 157 | INTERNAL_IPS = ('127.0.0.1',) 158 | 159 | INSTALLED_APPS = ( 160 | 'django.contrib.auth', 161 | 'django.contrib.contenttypes', 162 | 'django.contrib.sessions', 163 | 'django.contrib.sites', 164 | 'django.contrib.messages', 165 | 'django.contrib.staticfiles', 166 | 'compressor', 167 | 'django_tables2', 168 | 'django_tables2_simplefilter', 169 | 'pagination', 170 | 'django.contrib.humanize', 171 | 'Web', 172 | ) 173 | 174 | # A sample logging configuration. The only tangible logging 175 | # performed by this configuration is to send an email to 176 | # the site admins on every HTTP 500 error when DEBUG=False. 177 | # See http://docs.djangoproject.com/en/dev/topics/logging for 178 | # more details on how to customize your logging configuration. 179 | LOGGING = { 180 | 'version': 1, 181 | 'disable_existing_loggers': False, 182 | 'filters': { 183 | 'require_debug_false': { 184 | '()': 'django.utils.log.RequireDebugFalse' 185 | } 186 | }, 187 | 'handlers': { 188 | 'mail_admins': { 189 | 'level': 'ERROR', 190 | 'filters': ['require_debug_false'], 191 | 'class': 'django.utils.log.AdminEmailHandler' 192 | } 193 | }, 194 | 'loggers': { 195 | 'django.request': { 196 | 'handlers': ['mail_admins'], 197 | 'level': 'ERROR', 198 | 'propagate': True, 199 | }, 200 | } 201 | } 202 | -------------------------------------------------------------------------------- /DionaeaFR/Templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DionaeaFR - {% block title %}{{ title }}{% endblock %} 6 | 7 | {% block head %} 8 | {% load staticfiles %} 9 | 10 | 11 | 12 | {% load compress %} 13 | {% if debug %} 14 | 15 | {% else %} 16 | {% compress css %} 17 | 18 | {% endcompress %} 19 | {% endif %} 20 | 23 | 24 | 25 | 26 | {% block scripts %} 27 | {% endblock %} 28 | {% endblock %} 29 | 30 | 31 | 32 |
    33 | 46 |
    47 |
    48 |
    49 | 67 | {% block info %} 68 | {% endblock %} 69 | {% block pagination %} 70 | {% endblock %} 71 |
    72 |
    73 | {% if filters %} 74 |
    75 | {% block filters %} 76 | Filters 77 | 108 | {% endblock %} 109 |
    110 | {% endif %} 111 | {% block content %} 112 | {% if table %} 113 | {% load django_tables2 %} 114 | {% render_table table %} 115 | {% endif %} 116 | {% endblock %} 117 |
    118 |
    119 |
    120 |
    121 |
    122 |
    123 | 134 | {% block Lastscripts %} 135 | {% endblock %} 136 | 137 | 138 | -------------------------------------------------------------------------------- /DionaeaFR/static/js/kendo.fx.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Kendo UI v2011.3.1129 (http://kendoui.com) 3 | * Copyright 2011 Telerik AD. All rights reserved. 4 | * 5 | * Kendo UI commercial licenses may be obtained at http://kendoui.com/license. 6 | * If you do not own a commercial license, this file shall be governed by the 7 | * GNU General Public License (GPL) version 3. For GPL requirements, please 8 | * review: http://www.gnu.org/copyleft/gpl.html 9 | */ 10 | 11 | (function(a,b){function R(a,b){if(j){var c=a.css(I);if(c=="none")return b=="scale"?1:0;var d=c.match(new RegExp(b+"\\s*\\(([\\d\\w\\.]+)")),e=0;d?e=J(d[1]):(d=c.match(n)||[0,0,0,0],p.test(b)?e=J(d[2]):b.toLowerCase()=="translatey"?e=J(d[3]):b.toLowerCase()=="scale"&&(e=parseFloat(d[1])));return e}return a.css(b)}function N(b){var d=b.effects,e;d==="zoom"&&(d="zoomIn fadeIn"),d==="slide"&&(d="slide:left"),d==="fade"&&(d="fadeIn"),d==="overlay"&&(d="slideIn:left"),/^overlay:(.+)$/.test(d)&&(d="slideIn:"+RegExp.$1),e=b.reverse&&/^(slide:)/.test(d),e&&delete b.reverse,b.effects=a.extend(c.parseEffects(d,e),{show:!0});return b}function M(a){a.effects.slideIn=a.effects.slide,delete a.effects.slide;return a}function L(a,b){var c={};if(b){if(document.defaultView&&document.defaultView.getComputedStyle){var d=document.defaultView.getComputedStyle(a,"");e(b,function(a,b){c[b]=d.getPropertyValue(b)})}else if(a.currentStyle){var f=a.currentStyle;e(b,function(a,b){c[b]=f[b.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()})]})}}else c=document.defaultView.getComputedStyle(a,"");return c}function K(a,b){return J(a.css(b))}function J(a){return parseInt(a,10)}var c=window.kendo,d=c.fx,e=a.each,f=a.extend,g=c.size,h=a.browser,i=c.support,j=i.transitions,k={scale:0,scaleX:0,scaleY:0,scale3d:0},l={translate:0,translateX:0,translateY:0,translate3d:0},m=[1,0,0,0,0,1,0,0,0,0,1,1,0,0,0,1],n=/matrix3?d?\s*\(.*,\s*([\d\w\.\-]+),\s*([\d\w\.\-]+),\s*([\d\w\.\-]+)/,o=/^(-?[\d\.\-]+)?[\w\s]*,?\s*(-?[\d\.\-]+)?[\w\s]*/i,p=/translatex?$/i,q={rotate:"",scale:"",translate:""},r=["perspective","rotate","rotateX","rotateY","rotateZ","rotate3d","scale","scaleX","scaleY","scaleZ","scale3d","skew","skewX","skewY","translate","translateX","translateY","translateZ","translate3d","matrix","matrix3d"],s=j.css,t=Math.round,u="",v="px",w="none",x="auto",y="width",z="scale",A="height",B="hidden",C="origin",D="abortId",E="overflow",F="translate",G="style",H=s+"transition",I=s+"transform";c.directions={left:{reverse:"right",property:"left",transition:"translateX",vertical:!1,modifier:-1},right:{reverse:"left",property:"left",transition:"translateX",vertical:!1,modifier:1},down:{reverse:"up",property:"top",transition:"translateY",vertical:!0,modifier:1},up:{reverse:"down",property:"top",transition:"translateY",vertical:!0,modifier:-1},"in":{reverse:"out",modifier:-1},out:{reverse:"in",modifier:1}},f(a.fn,{kendoStop:function(a,b){return j?c.fx.stopQueue(this,a||!1,b||!1):this.stop(a,b)}}),c.toggleClass=function(a,b,c,d){b&&(b=b.split(" "),j&&(c=f({exclusive:"all",duration:400,ease:"ease-out"},c),a.css(H,c.exclusive+" "+c.duration+"ms "+c.ease),setTimeout(function(){a.css(H,w).css(A)},c.duration)),e(b,function(b,c){a.toggleClass(c,d)}));return a},c.parseEffects=function(a,b){var d={};typeof a=="string"?e(a.split(" "),function(){var a=this.split(":"),e=a[1],f={};a.length>1&&(f.direction=b?c.directions[e].reverse:e),d[a[0]]=f}):e(a,function(a){var e=this.direction;e&&b&&(e=c.directions[e].reverse),d[a]=this});return d};if(j){function O(a){var b=[];for(var c in a)b.push(c);return b}function P(a){a.css(H,w),h.safari||a.css(A)}function Q(a){var b=a.object;!a||(b.css(a.setup),b.css(H),setTimeout(function(){b.data(D,setTimeout(function(){P(b),b.dequeue(),a.complete.call(b)},a.duration)),b.css(a.CSS)},0))}f(c.fx,{transition:function(b,c,d){d=f({duration:200,ease:"ease-out",complete:null,exclusive:"all"},d),d.duration=a.fx?a.fx.speeds[d.duration]||d.duration:d.duration;var e=[],g={},h;for(h in c)r.indexOf(h)!=-1?e.push(h+"("+c[h]+")"):g[h]=c[h];e.length&&(g[I]=e.join(" "));var i={keys:O(g),CSS:g,object:b,setup:{},duration:d.duration,complete:d.complete};i.setup[H]=d.exclusive+" "+d.duration+"ms "+d.ease;var j=b.data("keys")||[];a.merge(j,i.keys),b.data("keys",a.unique(j)),Q(i)},stopQueue:function(a,b,c){a.data(D)&&(clearTimeout(a.data(D)),a.removeData(D));var d=this,e=a.data("keys"),f=c===!1&&e;if(f)var g=L(a[0],e);P(a),f&&a.css(g),a.removeData("keys"),d.complete&&d.complete.call(a),a.stop(b);return a}})}c.fx.promise=function(b,d){var h=[],j=d.effects;typeof j=="string"&&(j=c.parseEffects(d.effects)),b.data("animating",!0),b.data("reverse",d.reverse);var k={keep:[],restore:[]},l={},m={setup:[],teardown:[]},n={},o=a.Deferred(function(h){if(g(j)){var o=f({},d,{complete:h.resolve});e(j,function(b,d){var g=c.fx[b];g&&(o=f(!0,o,d),e(m,function(a){g[a]&&m[a].push(g[a])}),e(k,function(b){g[b]&&a.merge(k[b],g[b])}),g.css&&(l=f(l,g.css)))});if(m.setup.length){e(a.unique(k.keep),function(a,c){b.data(c)||b.data(c,b.css(c))}),d.show&&(l=f(l,{display:b.data("olddisplay")||"block"})),l.transform&&(l[i.transitions.prefix+"Transform"]=l.transform,delete l.transform),b.css(l),b.css("overflow"),e(m.setup,function(){n=f(n,this(b,o))}),c.fx.animate&&(d.init(),c.fx.animate(b,n,o));return}}d.show&&b.css({display:b.data("olddisplay")||"block"}).css("display"),h.resolve()}).promise();h.push(o),a.when.apply(null,h).then(function(){b.removeData("animating").removeData("reverse").dequeue(),d.hide&&b.data("olddisplay",b.css("display")).hide();if(g(j)){var c=function(){e(a.unique(k.restore),function(a,c){b.css(c,b.data(c))})};a.browser.msie?setTimeout(c,0):c(),e(m.teardown,function(){this(b,d.reverse)})}d.completeCallback&&d.completeCallback(b)})},c.fx.transitionPromise=function(a,b,d){c.fx.animateTo(a,b,d);return a},f(c.fx,{animate:function(c,g,h){var i=h.transition!==!1;delete h.transition,j&&"transition"in d&&i?d.transition(c,g,h):e(r,function(d,e){var i,j=g?g[e]+" ":null;c.each(function(){if(j){var c=a(this),d=g;if(e in k&&g[e]!==b){!c.data(z)&&c.data(z,{top:K(c,"top")||0,left:K(c,"left")||0,width:c.width(),height:c.height()});var m=c.data(z);i=j.match(o);if(i){var n=e==z+"Y"?+null:+i[1],p=e==z+"Y"?+i[1]:+i[2]||+i[1];!isNaN(n)&&f(d,{left:m.left+m.width*(1-n)/2,width:m.width*n}),!isNaN(p)&&f(d,{top:m.top+m.height*(1-p)/2,height:m.height*p})}}else if(e in l&&g[e]!==b){var q=c.css("position"),r=q=="absolute"||q=="fixed";c.data(F)||(r?c.data(F,{top:K(c,"top")||0,left:K(c,"left")||0,bottom:K(c,"bottom"),right:K(c,"right")}):c.data(F,{top:K(c,"marginTop")||0,left:K(c,"marginLeft")||0}));var s=c.data(F);i=j.match(o);if(i){var t=e==F+"Y"?+null:+i[1],u=e==F+"Y"?+i[1]:+i[2];r?(isNaN(s.right)?!isNaN(t)&&f(d,{left:s.left+t}):!isNaN(t)&&f(d,{right:s.right-t}),isNaN(s.bottom)?!isNaN(u)&&f(d,{top:s.top+u}):!isNaN(u)&&f(d,{bottom:s.bottom-u})):(!isNaN(t)&&f(d,{marginLeft:s.left+t}),!isNaN(u)&&f(d,{marginTop:s.top+u}))}}e in d&&delete d[e],c.animate(d,f({queue:!1},h,{show:!1,hide:!1}))}})})},animateTo:function(b,c,d){function h(){c[0].style.cssText="",b[0].style.cssText="",f.css(E,g),d.completeCallback&&d.completeCallback()}var e,f=b.parents().filter(c.parents()).first(),g=f.css(E);d=N(d),f.css("overflow-x","hidden"),a.each(d.effects,function(a,b){e=e||b.direction}),d.complete=a.browser.msie?function(){setTimeout(h)}:h,"slide"in d.effects?(b.kendoAnimate(d),c.kendoAnimate(M(d))):(d.reverse?b:c).kendoAnimate(d)},fadeOut:{css:{opacity:function(){var c=a(this);return c.data("reverse")&&!this.style.opacity?0:b}},setup:function(a,b){return f({opacity:b.reverse?1:0},b.properties)}},fadeIn:{css:{opacity:function(){var c=a(this);return!c.data("reverse")&&!this.style.opacity?0:b}},setup:function(a,b){return f({opacity:b.reverse?0:1},b.properties)}},zoomIn:{css:{transform:function(){var c=a(this);return!c.data("reverse")&&j?"scale(.01)":b}},setup:function(a,b){return f({scale:b.reverse?.01:1},b.properties)}},zoomOut:{css:{transform:function(){var c=a(this);return c.data("reverse")&&j?"scale(.01)":b}},setup:function(a,b){return f({scale:b.reverse?1:.01},b.properties)}},slide:{setup:function(a,b){var d=c.directions[b.direction],e={},g,h=b.reverse,i=b.divisor||1;if(!h){var k=a.data(C);g=d.modifier*(d.vertical?a.outerHeight():a.outerWidth())/i,!k&&k!==0&&a.data(C,R(a,d.transition))}j&&b.transition!==!1?e[d.transition]=h?a.data(C)||0:g+v:e[d.property]=h?a.data(C)||0:g+v;return f(e,b.properties)}},slideMargin:{setup:function(a,b){var c=a.data(C),d=b.offset,e,g={},h=b.reverse;!h&&!c&&c!==0&&a.data(C,parseInt(a.css("margin-left"),10)),e=a.data(C)||0,g["margin-"+b.axis]=h?e:e+d;return f(g,b.properties)}},slideTo:{setup:function(a,b){var c=(b.offset+"").split(","),d={},e=b.reverse;j&&b.transition!==!1?d.translate=e?0:c+v:(d.left=e?0:c[0],d.top=e?0:c[1]),a.css("left");return f(d,b.properties)}},slideIn:{setup:function(a,b){var d=c.directions[b.direction],e=-d.modifier*(d.vertical?a.outerHeight():a.outerWidth()),g={},h=b.reverse;j&&b.transition!==!1?(a.css(I,d.transition+"("+(h?0:e)+"px)"),g[d.transition]=h?e+v:0):(!h&&a.css(d.property,e+v),g[d.property]=h?e+v:0),a.css(d.property);return f(g,b.properties)}},expandVertical:{keep:[E],css:{overflow:B},restore:[E],setup:function(a,c){var d=c.reverse,e=a[0].style.height,g=a.data(A),h=J(g||e),i=h||t(a.css({height:x}).height());a.css(A,d?i:0).css(A),g===b&&a.data(A,e);return f({height:(d?0:i)+v},c.properties)},teardown:function(a){var b=a.data(A);(b==x||b===u)&&setTimeout(function(){a.css(A,x).css(A)},0)}},simple:{setup:function(a,b){return b.properties}}})})(jQuery) -------------------------------------------------------------------------------- /DionaeaFR/static/css/normalize.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v2.1.0 | MIT License | git.io/normalize */ 2 | 3 | /* ========================================================================== 4 | HTML5 display definitions 5 | ========================================================================== */ 6 | 7 | /** 8 | * Correct `block` display not defined in IE 8/9. 9 | */ 10 | 11 | article, 12 | aside, 13 | details, 14 | figcaption, 15 | figure, 16 | footer, 17 | header, 18 | hgroup, 19 | main, 20 | nav, 21 | section, 22 | summary { 23 | display: block; 24 | } 25 | 26 | /** 27 | * Correct `inline-block` display not defined in IE 8/9. 28 | */ 29 | 30 | audio, 31 | canvas, 32 | video { 33 | display: inline-block; 34 | } 35 | 36 | /** 37 | * Prevent modern browsers from displaying `audio` without controls. 38 | * Remove excess height in iOS 5 devices. 39 | */ 40 | 41 | audio:not([controls]) { 42 | display: none; 43 | height: 0; 44 | } 45 | 46 | /** 47 | * Address styling not present in IE 8/9. 48 | */ 49 | 50 | [hidden] { 51 | display: none; 52 | } 53 | 54 | /* ========================================================================== 55 | Base 56 | ========================================================================== */ 57 | 58 | /** 59 | * 1. Set default font family to sans-serif. 60 | * 2. Prevent iOS text size adjust after orientation change, without disabling 61 | * user zoom. 62 | */ 63 | 64 | html { 65 | font-family: sans-serif; /* 1 */ 66 | -webkit-text-size-adjust: 100%; /* 2 */ 67 | -ms-text-size-adjust: 100%; /* 2 */ 68 | } 69 | 70 | /** 71 | * Remove default margin. 72 | */ 73 | 74 | body { 75 | margin: 0; 76 | } 77 | 78 | /* ========================================================================== 79 | Links 80 | ========================================================================== */ 81 | 82 | /** 83 | * Address `outline` inconsistency between Chrome and other browsers. 84 | */ 85 | 86 | a:focus { 87 | outline: thin dotted; 88 | } 89 | 90 | /** 91 | * Improve readability when focused and also mouse hovered in all browsers. 92 | */ 93 | 94 | a:active, 95 | a:hover { 96 | outline: 0; 97 | } 98 | 99 | /* ========================================================================== 100 | Typography 101 | ========================================================================== */ 102 | 103 | /** 104 | * Address variable `h1` font-size and margin within `section` and `article` 105 | * contexts in Firefox 4+, Safari 5, and Chrome. 106 | */ 107 | 108 | h1 { 109 | font-size: 2em; 110 | margin: 0.67em 0; 111 | } 112 | 113 | /** 114 | * Address styling not present in IE 8/9, Safari 5, and Chrome. 115 | */ 116 | 117 | abbr[title] { 118 | border-bottom: 1px dotted; 119 | } 120 | 121 | /** 122 | * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. 123 | */ 124 | 125 | b, 126 | strong { 127 | font-weight: bold; 128 | } 129 | 130 | /** 131 | * Address styling not present in Safari 5 and Chrome. 132 | */ 133 | 134 | dfn { 135 | font-style: italic; 136 | } 137 | 138 | /** 139 | * Address differences between Firefox and other browsers. 140 | */ 141 | 142 | hr { 143 | -moz-box-sizing: content-box; 144 | box-sizing: content-box; 145 | height: 0; 146 | } 147 | 148 | /** 149 | * Address styling not present in IE 8/9. 150 | */ 151 | 152 | mark { 153 | background: #ff0; 154 | color: #000; 155 | } 156 | 157 | /** 158 | * Correct font family set oddly in Safari 5 and Chrome. 159 | */ 160 | 161 | code, 162 | kbd, 163 | pre, 164 | samp { 165 | font-family: monospace, serif; 166 | font-size: 1em; 167 | } 168 | 169 | /** 170 | * Improve readability of pre-formatted text in all browsers. 171 | */ 172 | 173 | pre { 174 | white-space: pre-wrap; 175 | } 176 | 177 | /** 178 | * Set consistent quote types. 179 | */ 180 | 181 | q { 182 | quotes: "\201C" "\201D" "\2018" "\2019"; 183 | } 184 | 185 | /** 186 | * Address inconsistent and variable font size in all browsers. 187 | */ 188 | 189 | small { 190 | font-size: 80%; 191 | } 192 | 193 | /** 194 | * Prevent `sub` and `sup` affecting `line-height` in all browsers. 195 | */ 196 | 197 | sub, 198 | sup { 199 | font-size: 75%; 200 | line-height: 0; 201 | position: relative; 202 | vertical-align: baseline; 203 | } 204 | 205 | sup { 206 | top: -0.5em; 207 | } 208 | 209 | sub { 210 | bottom: -0.25em; 211 | } 212 | 213 | /* ========================================================================== 214 | Embedded content 215 | ========================================================================== */ 216 | 217 | /** 218 | * Remove border when inside `a` element in IE 8/9. 219 | */ 220 | 221 | img { 222 | border: 0; 223 | } 224 | 225 | /** 226 | * Correct overflow displayed oddly in IE 9. 227 | */ 228 | 229 | svg:not(:root) { 230 | overflow: hidden; 231 | } 232 | 233 | /* ========================================================================== 234 | Figures 235 | ========================================================================== */ 236 | 237 | /** 238 | * Address margin not present in IE 8/9 and Safari 5. 239 | */ 240 | 241 | figure { 242 | margin: 0; 243 | } 244 | 245 | /* ========================================================================== 246 | Forms 247 | ========================================================================== */ 248 | 249 | /** 250 | * Define consistent border, margin, and padding. 251 | */ 252 | 253 | fieldset { 254 | border: 1px solid #c0c0c0; 255 | margin: 0 2px; 256 | padding: 0.35em 0.625em 0.75em; 257 | } 258 | 259 | /** 260 | * 1. Correct `color` not being inherited in IE 8/9. 261 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. 262 | */ 263 | 264 | legend { 265 | border: 0; /* 1 */ 266 | padding: 0; /* 2 */ 267 | } 268 | 269 | /** 270 | * 1. Correct font family not being inherited in all browsers. 271 | * 2. Correct font size not being inherited in all browsers. 272 | * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. 273 | */ 274 | 275 | button, 276 | input, 277 | select, 278 | textarea { 279 | font-family: inherit; /* 1 */ 280 | font-size: 100%; /* 2 */ 281 | margin: 0; /* 3 */ 282 | } 283 | 284 | /** 285 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in 286 | * the UA stylesheet. 287 | */ 288 | 289 | button, 290 | input { 291 | line-height: normal; 292 | } 293 | 294 | /** 295 | * Address inconsistent `text-transform` inheritance for `button` and `select`. 296 | * All other form control elements do not inherit `text-transform` values. 297 | * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. 298 | * Correct `select` style inheritance in Firefox 4+ and Opera. 299 | */ 300 | 301 | button, 302 | select { 303 | text-transform: none; 304 | } 305 | 306 | /** 307 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 308 | * and `video` controls. 309 | * 2. Correct inability to style clickable `input` types in iOS. 310 | * 3. Improve usability and consistency of cursor style between image-type 311 | * `input` and others. 312 | */ 313 | 314 | button, 315 | html input[type="button"], /* 1 */ 316 | input[type="reset"], 317 | input[type="submit"] { 318 | -webkit-appearance: button; /* 2 */ 319 | cursor: pointer; /* 3 */ 320 | } 321 | 322 | /** 323 | * Re-set default cursor for disabled elements. 324 | */ 325 | 326 | button[disabled], 327 | html input[disabled] { 328 | cursor: default; 329 | } 330 | 331 | /** 332 | * 1. Address box sizing set to `content-box` in IE 8/9. 333 | * 2. Remove excess padding in IE 8/9. 334 | */ 335 | 336 | input[type="checkbox"], 337 | input[type="radio"] { 338 | box-sizing: border-box; /* 1 */ 339 | padding: 0; /* 2 */ 340 | } 341 | 342 | /** 343 | * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. 344 | * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome 345 | * (include `-moz` to future-proof). 346 | */ 347 | 348 | input[type="search"] { 349 | -webkit-appearance: textfield; /* 1 */ 350 | -moz-box-sizing: content-box; 351 | -webkit-box-sizing: content-box; /* 2 */ 352 | box-sizing: content-box; 353 | } 354 | 355 | /** 356 | * Remove inner padding and search cancel button in Safari 5 and Chrome 357 | * on OS X. 358 | */ 359 | 360 | input[type="search"]::-webkit-search-cancel-button, 361 | input[type="search"]::-webkit-search-decoration { 362 | -webkit-appearance: none; 363 | } 364 | 365 | /** 366 | * Remove inner padding and border in Firefox 4+. 367 | */ 368 | 369 | button::-moz-focus-inner, 370 | input::-moz-focus-inner { 371 | border: 0; 372 | padding: 0; 373 | } 374 | 375 | /** 376 | * 1. Remove default vertical scrollbar in IE 8/9. 377 | * 2. Improve readability and alignment in all browsers. 378 | */ 379 | 380 | textarea { 381 | overflow: auto; /* 1 */ 382 | vertical-align: top; /* 2 */ 383 | } 384 | 385 | /* ========================================================================== 386 | Tables 387 | ========================================================================== */ 388 | 389 | /** 390 | * Remove most spacing between table cells. 391 | */ 392 | 393 | table { 394 | border-collapse: collapse; 395 | border-spacing: 0; 396 | } 397 | -------------------------------------------------------------------------------- /DionaeaFR/Templates/home.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block title %} 4 | Home 5 | {% endblock %} 6 | {% block scripts %} 7 | {% load staticfiles %} 8 | 9 | 10 | 11 | 12 | {% endblock %} 13 | {% block titlecontent %} 14 | Home 15 | {% endblock %} 16 | {% block content %} 17 | {% load humanize %} 18 | 98 | 108 | 114 | {% endblock %} 115 | {% block Lastscripts %} 116 | 161 | 206 | 263 | {% endblock %} --------------------------------------------------------------------------------