mirror of https://github.com/CIRCL/AIL-framework
275 lines
12 KiB
HTML
275 lines
12 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html>
|
||
|
|
||
|
<head>
|
||
|
<title>Report - AIL</title>
|
||
|
<link rel="icon" href="{{ url_for('static', filename='image/ail-icon.png') }}">
|
||
|
|
||
|
<!-- Core CSS -->
|
||
|
<link href="{{ url_for('static', filename='css/bootstrap4.min.css') }}" rel="stylesheet">
|
||
|
<link href="{{ url_for('static', filename='css/font-awesome.min.css') }}" rel="stylesheet">
|
||
|
<link href="{{ url_for('static', filename='css/dataTables.bootstrap.min.css') }}" rel="stylesheet">
|
||
|
|
||
|
<!-- JS -->
|
||
|
<script src="{{ url_for('static', filename='js/jquery.js')}}"></script>
|
||
|
<script src="{{ url_for('static', filename='js/popper.min.js')}}"></script>
|
||
|
<script src="{{ url_for('static', filename='js/bootstrap4.min.js')}}"></script>
|
||
|
<script src="{{ url_for('static', filename='js/jquery.dataTables.min.js')}}"></script>
|
||
|
<script src="{{ url_for('static', filename='js/dataTables.bootstrap.min.js')}}"></script>
|
||
|
<script src="{{ url_for('static', filename='js/d3.min.js')}}"></script>
|
||
|
<script src="{{ url_for('static', filename='js/d3/heatmap_week_hour.js')}}"></script>
|
||
|
<script src="{{ url_for('static', filename='js/d3/sparklines.js') }}"></script>
|
||
|
|
||
|
<style>
|
||
|
.chat-message-left,
|
||
|
.chat-message-right {
|
||
|
display: flex;
|
||
|
flex-shrink: 0;
|
||
|
}
|
||
|
.chat-message-right {
|
||
|
flex-direction: row-reverse;
|
||
|
margin-left: auto
|
||
|
}
|
||
|
.divider:after,
|
||
|
.divider:before {
|
||
|
content: "";
|
||
|
flex: 1;
|
||
|
height: 2px;
|
||
|
background: #eee;
|
||
|
}
|
||
|
.object_image {
|
||
|
max-width: 50%;
|
||
|
}
|
||
|
</style>
|
||
|
|
||
|
</head>
|
||
|
<body>
|
||
|
{% include 'nav_bar.html' %}
|
||
|
|
||
|
<div class="container-fluid">
|
||
|
<div class="row">
|
||
|
|
||
|
<div class="col-12">
|
||
|
|
||
|
<h1>Tracker Report:</h1>
|
||
|
|
||
|
<div class="row">
|
||
|
<div class="col-8">
|
||
|
|
||
|
<div class="card my-2">
|
||
|
<div class="card-header bg-dark text-white">
|
||
|
<span class="badge badge-light lex-row-reverse float-right">
|
||
|
<span id="sparkline"></span>
|
||
|
</span>
|
||
|
<h4 class="card-title">
|
||
|
{% if meta['description'] %}
|
||
|
{{ meta['description'] }}
|
||
|
{% endif %}
|
||
|
</h4>
|
||
|
</div>
|
||
|
<div class="card-body bg-light pt-2">
|
||
|
<table class="table table-borderless">
|
||
|
<tbody>
|
||
|
<tr>
|
||
|
<td class="text-right"><b>Type</b></td>
|
||
|
<td>
|
||
|
{% if meta['type'] == 'word' %}
|
||
|
<i class="fas fa-font"></i>
|
||
|
{% elif meta['type'] == 'set' %}
|
||
|
<i class="fas fa-layer-group"></i>
|
||
|
{% elif meta['type'] == 'regex' %}
|
||
|
<i class="fas fa-compass"></i>
|
||
|
{% elif meta['type'] == 'typosquatting' %}
|
||
|
<i class="fas fa-clone"></i>
|
||
|
{% elif meta['type'] == 'yara' %}
|
||
|
<span class="bg-danger text-white font-weight-bold" style="font-size: 120%"> { </span>
|
||
|
{% endif %}
|
||
|
{{ meta['type'] }}
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="text-right"><b>Generation Date</b></td>
|
||
|
<td>
|
||
|
<b>{{meta['date']}}</b>
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="text-right"><b>First Seen <i class="fas fa-hourglass-start"></i></b></td>
|
||
|
<td>
|
||
|
{% if meta['first_seen'] %}
|
||
|
{{ meta['first_seen'][0:4] }} - {{ meta['first_seen'][4:6] }} - {{ meta['first_seen'][6:8] }}
|
||
|
{% endif %}
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="text-right"><b>Last Seen <i class="fas fa-hourglass-end"></i></b></td>
|
||
|
<td>
|
||
|
{% if meta['last_seen'] %}
|
||
|
{{ meta['last_seen'][0:4] }} - {{ meta['last_seen'][4:6] }} - {{ meta['last_seen'][6:8] }}
|
||
|
{% endif %}
|
||
|
</td>
|
||
|
</tr>
|
||
|
<tr>
|
||
|
<td class="text-right"><b>Tags</b></td>
|
||
|
<td>
|
||
|
{%for tag in meta['tags']%}
|
||
|
<span class="badge badge-{{ bootstrap_label[loop.index0 % 5] }}">{{ tag }}</span>
|
||
|
{%endfor%}
|
||
|
</td>
|
||
|
</tr>
|
||
|
|
||
|
|
||
|
|
||
|
<tr>
|
||
|
<td class="text-right"><b>Objects Match</b></td>
|
||
|
<td>
|
||
|
{%for obj_type in meta['nb_objs']%}
|
||
|
<h4><span class="badge badge-{{ bootstrap_label[loop.index0 % 5] }}">
|
||
|
{{ obj_type }}
|
||
|
<span class="badge badge-light">{{ meta['nb_objs'][obj_type] }}</span>
|
||
|
</span></h4>
|
||
|
{%endfor%}
|
||
|
</td>
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
{% if meta['type'] != 'yara' %}
|
||
|
<tr>
|
||
|
<td class="text-right"><b>Tracker</b></td>
|
||
|
<td>
|
||
|
{{ meta['tracked'] }}
|
||
|
</td>
|
||
|
</tr>
|
||
|
{% endif %}
|
||
|
</table>
|
||
|
|
||
|
{% if yara_rule_content %}
|
||
|
<h5 class="mb-0">Yara Rule:</h5>
|
||
|
<p class="my-0">
|
||
|
<pre class="border bg-white" style="white-space: pre-wrap;">{{ yara_rule_content }}</pre>
|
||
|
</p>
|
||
|
{% endif %}
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
<div class="col-4">
|
||
|
<div>
|
||
|
<img src="{{ url_for('static', filename='image/ail-project.png') }}" width="200">
|
||
|
</div>
|
||
|
<div>
|
||
|
<img src="https://circl.lu/assets/images/circl-logo.png" width="200">
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<h3>Messages:</h3>
|
||
|
{% for message in messages %}
|
||
|
<div class="d-flex justify-content-between py-2 px-3 border-top" style="background-color: rgba(0,0,0,.03)">
|
||
|
<div>
|
||
|
<svg height="30" width="30">
|
||
|
<g class="nodes">
|
||
|
<circle cx="15" cy="15" r="15" fill="{{ chats[message['chat']]["svg_icon"]["color"] }}"></circle>
|
||
|
<text x="15" y="15" text-anchor="middle" dominant-baseline="central" class="{{ chats[message['chat']]["svg_icon"]["style"] }}" font-size="16px">{{ chats[message['chat']]["svg_icon"]["icon"] }}</text>
|
||
|
</g>
|
||
|
</svg>
|
||
|
{% if chats[message['chat']]['name'] %}{{ chats[message['chat']]['name'] }}{% endif %}
|
||
|
</div>
|
||
|
<div>
|
||
|
{% if chats[message['chat']]['origin_link'] %}
|
||
|
<span class="flex-row-reverse">{{ chats[message['chat']]['origin_link'] }}</span>
|
||
|
{% endif %}
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
{% with message=message,show_full_message=True %}
|
||
|
{% include 'chats_explorer/block_message.html' %}
|
||
|
{% endwith %}
|
||
|
|
||
|
{% endfor %}
|
||
|
|
||
|
<h3 class="mt-4">Chats Metadata:</h3>
|
||
|
{% for chat in chats %}
|
||
|
<div class="my-2">
|
||
|
{% with meta=chats[chat],report_mode=True %}
|
||
|
{% include 'chats_explorer/basic_card_chat.html' %}
|
||
|
{% endwith %}
|
||
|
</div>
|
||
|
{% endfor %}
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
{# <h5 class="mx-5 mt-2 text-secondary">All Messages:</h5>#}
|
||
|
{# <div id="heatmapweekhourall"></div>#}
|
||
|
|
||
|
{# {% with translate_url=url_for('chats_explorer.chats_explorer_chat', subtype=chat['subtype']), obj_id=chat['id'], pagination=chat['pagination'] %}#}
|
||
|
{# {% include 'chats_explorer/block_translation.html' %}#}
|
||
|
{# {% endwith %}#}
|
||
|
|
||
|
{# {% if chat['messages'] %}#}
|
||
|
{##}
|
||
|
{# <div class="position-relative">#}
|
||
|
{# <div class="chat-messages p-2">#}
|
||
|
{##}
|
||
|
{# {% for date in chat['messages'] %}#}
|
||
|
{##}
|
||
|
{# <div class="divider d-flex align-items-center mb-4">#}
|
||
|
{# <p class="text-center h2 mx-3 mb-0" style="color: #a2aab7;">#}
|
||
|
{# <span class="badge badge-secondary mb-2" id="date_section_{{ date }}">{{ date }}</span>#}
|
||
|
{# </p>#}
|
||
|
{# </div>#}
|
||
|
{##}
|
||
|
{# {% for mess in chat['messages'][date] %}#}
|
||
|
{##}
|
||
|
{# {% with message=mess %}#}
|
||
|
{# {% include 'chats_explorer/block_message.html' %}#}
|
||
|
{# {% endwith %}#}
|
||
|
{##}
|
||
|
{# {% endfor %}#}
|
||
|
{# <br>#}
|
||
|
{# {% endfor %}#}
|
||
|
{##}
|
||
|
{# </div>#}
|
||
|
{# </div>#}
|
||
|
{##}
|
||
|
{# {% endif %}#}
|
||
|
|
||
|
|
||
|
|
||
|
<script>
|
||
|
$(document).ready(function(){
|
||
|
$("#page-Decoded").addClass("active");
|
||
|
$("#nav_chat").addClass("active");
|
||
|
|
||
|
// unblur images
|
||
|
let images = document.getElementsByClassName('object_image');
|
||
|
for(i = 0; i < images.length; i++) {
|
||
|
images[i].style.filter = "blur(0px)";
|
||
|
}
|
||
|
sparkline("sparkline", {{ meta['sparkline'] }}, {});
|
||
|
});
|
||
|
|
||
|
</script>
|
||
|
|
||
|
|
||
|
{#<script>#}
|
||
|
{# d3.json("{{ url_for('chats_explorer.chats_explorer_messages_stats_week_all') }}?type=chat&subtype={{ chat['subtype'] }}&id={{ chat['id'] }}")#}
|
||
|
{# .then(function(data) {#}
|
||
|
{# create_heatmap_week_hour('#heatmapweekhourall', data);#}
|
||
|
{# })#}
|
||
|
{##}
|
||
|
{#{% if not chat['subchannels'] %}#}
|
||
|
{#d3.json("{{ url_for('chats_explorer.chats_explorer_messages_stats_week') }}?type=chat&subtype={{ chat['subtype'] }}&id={{ chat['id'] }}")#}
|
||
|
{#.then(function(data) {#}
|
||
|
{# create_heatmap_week_hour('#heatmapweekhour', data);#}
|
||
|
{#})#}
|
||
|
{#{% endif %}#}
|
||
|
{#</script>#}
|
||
|
|
||
|
|
||
|
</body>
|
||
|
|
||
|
</html>
|