Raven – Advanced Cyber Threat Map (Simplified, customizable and responsive. It uses D3.js with TOPO JSON, has 247 countries, ~100,000 cities, and can be used in an isolated environment without external lookups!.
Features
You have different options ip, name, and coordinates
ip private or public ip -> any of these IPs -> 0.0.0.0 or 8.8.8.8 as {'from':'0.0.0.0','to':'8.8.8.8'}name city,state,country -> any of these formats work -> seattle,wa,us or 0,us as {'from':'seattle,wa,us','to':'0,in'}coordinates Latitude and Longitude as {'from':['-11.074920','-51.648929'],'to':['51.464957','-107.583864']}Method 1 – Embed it and interact with it
//You only need to embed this iframe in your project.
<iframe id=”raven-iframe” src=”src/raven.html” frameborder=”0″ width=”100%” height=”100%” scrolling=”auto”>
//Then, run the initialization script with your custom settings – That’s all!
script type=”text/javascript”>
document.getElementById(‘raven-iframe’).addEventListener(“load”, function() {
var raven_options = {
‘world_type’: null,
‘selected_countries’: [],
‘remove_countries’: [‘aq’],
‘height’: window.innerHeight,
‘width’: window.innerWidth,
‘backup_background_color’: ‘#212222’,
‘orginal_country_color’: ‘#737373’,
‘clicked_country_color’: ‘#6c4242’,
‘selected_country_color’: ‘#ff726f’,
‘attack_output’: true,
‘global_timeout’: 2000,
‘global_stats_limit’: 10,
‘db_length’: 1000,
‘location’: ‘scripts’,
‘panels’: [‘multi-output’, ‘single-output’,’tooltip’, ‘random’, ‘insert’,’taskbar’],
‘disable’: [],
‘verbose’: true
}
window[‘raven’] = document.getElementById(‘raven-iframe’).contentWindow.raven
window[‘raven’].init_all(raven_options)
window[‘raven’].init_world()
});
//After that, you can plot any data you want
raven.add_to_data_to_table(‘name’,{‘from’:’seattle,wa,us’,’to’:’delhi,in’},{‘line’:{‘from’:null,’to’:null}},2000,[‘line’,’multi-output’,’single-output’])
Plotting data (functions)
raven.add_marker_by_name() //Plot info by country or city name
raven.add_marker_by_ip() //Plot data by IP address
raven.add_marker_by_coordinates() //Plot data by coordinates
marker_object //An object {‘from’:”,’to’:””} see examples
colors_object //An object {‘line: {‘from’: ”#FF0000′,’to’: ‘FF0000’}} this the color of the line between 2 points – (if null, then a random color will be picked)
timeout //Animation time out
options = [] //A list of options such as animation marker
Plotting data (As line, from -> to)
raven.add_marker_by_name({‘from’:’seattle,wa,us’,’to’:’delhi,in’},{‘line’:{‘from’:null,’to’:null}},2000,[‘line’])
raven.add_marker_by_ip({‘from’:’0.0.0.0′,’to’:’0.0.0.0:53′},{‘line’:{‘from’:’#FF0000′,’to’:’#FF0000′}},1000,[‘line’])
raven.add_marker_by_coordinates({‘from’:[‘-11.074920′,’-51.648929′],’to’:[‘51.464957′,’-107.583864′]},{‘line’:{‘from’:null,’to’:’#FFFF00′}},1000,[‘line’])
Plotting data (As point)
raven.add_marker_by_name({‘from’:’portland,or,us’,’to’:null},{‘line’:{‘from’:null,’to’:null}},2000,[‘point’])
raven.add_marker_by_ip({‘from’:’8.8.8.8′,’to’:null},{‘line’:{‘from’:’#FF0000′,’to’:’#FF0000′}},1000,[‘point’])
raven.add_marker_by_coordinates({‘from’:[‘-11.074920′,’-51.648929′],’to’:null},{‘line’:{‘from’:null,’to’:’#FFFF00′}},1000,[‘point’])
Plotting data + adding it to the output table (function)
raven.add_to_data_to_table() //Plot info and add them to the output table
method //Name, IP or coordinates
marker_object //An object {‘from’:”,’to’:””} see examples
colors_object //An object {‘line: {‘from’: ”#FF0000′,’to’: ‘FF0000’}} this the color of the line between 2 points – (if null, then a random color will be picked)
timeout //Animation time out
options = [] //A list of options such as animation marker ‘line’, and plot place ‘multi-output’ or ‘single-out’ table or both
Plotting data + adding it to the output table (As line, from -> to)
raven.add_to_data_to_table(‘name’,{‘from’:’seattle,wa,us’,’to’:’delhi,in’},{‘line’:{‘from’:null,’to’:null}},2000,[‘line’,’multi-output’,’single-output’])
raven.add_to_data_to_table(‘ip’,{‘from’:’0.0.0.0′,’to’:’0.0.0.0:3389′},{‘line’:{‘from’:’#FF0000′,’to’:’#FF0000′}},1000,[‘line’,’multi-output’])
raven.add_to_data_to_table(‘coordinates’,{‘from’:[‘-11.074920′,’-51.648929′],’to’:[‘51.464957′,’-107.583864′]},{‘line’:{‘from’:null,’to’:’#FFFF00′}},1000,[‘line’,’single-output’])
Plotting data + adding it to the output table (As point)
raven.add_to_data_to_table(‘name’,{‘from’:’seattle,wa,us’,’to’:’delhi,in’},{‘line’:{‘from’:null,’to’:null}},2000,[‘line’,’multi-output’,’single-output’])
raven.add_to_data_to_table(‘ip’,{‘from’:’0.0.0.0′,’to’:’0.0.0.0:3389′},{‘line’:{‘from’:’#FF0000′,’to’:’#FF0000′}},1000,[‘line’,’multi-output’])
raven.add_to_data_to_table(‘coordinates’,{‘from’:[‘-11.074920′,’-51.648929′],’to’:[‘51.464957′,’-107.583864′]},{‘line’:{‘from’:null,’to’:’#FFFF00′}},1000,[‘line’,’single-output’])
Method 2 – Embed it, and use websocket for plotting
Raven Map
You only need to embed this iframe in your project.
iframe id=”raven-iframe” src=”src/raven.html” frameborder=”0″ width=”100%” height=”100%” scrolling=”auto”>
script type=”text/javascript”>
document.getElementById(‘raven-iframe’).addEventListener(“load”, function() {
var raven_options = {
‘world_type’: null,
‘selected_countries’: [],
‘remove_countries’: [‘aq’],
‘height’: window.innerHeight,
‘width’: window.innerWidth,
‘backup_background_color’: ‘#212222’,
‘orginal_country_color’: ‘#737373’,
‘clicked_country_color’: ‘#6c4242’,
‘selected_country_color’: ‘#ff726f’,
‘attack_output’: true,
‘global_timeout’: 2000,
‘global_stats_limit’: 10,
‘db_length’: 1000,
‘location’: ‘scripts’,
‘panels’: [‘single-output’],
‘disable’: [‘multi-output’,’tooltip’, ‘random’, ‘insert’,’taskbar’,’move_to_country’],
‘websocket’:{‘server’:’ws://localhost:5678′,
‘request_timeout’:3000},
‘verbose’: false
}
window[‘raven’] = document.getElementById(‘raven-iframe’).contentWindow.raven
window[‘raven’].init_all(raven_options)
window[‘raven’].init_world()
window[‘raven’].fetch_data_from_server()
});
Plotting data – Send the json object using Websocket ws://localhost:5678
{
“function”:”marker”,
“method”: “ip”,
“object”: {
“from”: “0.0.0.0”,
“to”: “0.0.0.0”
},
“color”: {
“line”: {
“from”: “#977777”,
“to”: “#17777”,
}
},
“timeout”: 1000,
“options”: [
“line”,
“single-output”,
“multi-output”
]
}
Plotting data and add to table – Send the json object using Websocket ws://localhost:5678
{
“function”:”table”,
“method”: “name”,
“object”: {
“from”: “0,us”,
“to”: “0,br”
},
“color”: {
“line”: {
“from”: “#977777”,
“to”: “#17777”,
}
},
“timeout”: 1000,
“options”: [
“line”,
“single-output”,
“multi-output”
]
}
Run simulation (Isolated)
sudo docker build -t simulation . && sudo docker run -p 5678:5678 -p 8080:8080 -it simulation
Java remains one of the most widely used programming platforms for servers, enterprise applications, Android…
Ubuntu users often download software directly from developer websites instead of using the default app…
Installing Ubuntu 26.04 LTS is only the first step toward building a smooth, secure, and…
What is a Software Supply Chain Attack? A software supply chain attack occurs when a…
When people ask how UDP works, the simplest answer is this: UDP sends data quickly…
Endpoint Detection and Response (EDR) solutions have become a cornerstone of modern cybersecurity, designed to…