-->

Raven - Advanced Cyber Threat Map (Simplified, Customizable, Responsive)


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!.


Live - Demo

https://qeeqbox.github.io/raven/

Offline - Demo


Features

  • Uses D3.js (Not Anime.js)
  • Active threat map (Live and replay)
  • IP, country, city, and port info for each attack
  • Attacks stats for countries (Only known attacks)
  • Responsive interface (Move, drag, zoom in and out)
  • Customize options for countries and cites
  • 247 countries are listed on the interface (Not 174)
  • Optimized worldmap for faster rendering
  • Includes IP lookup, port information
  • Random simulation (IP, country, city)
  • Can be used online or offline (Static)
  • Theme picker module

Functions

Init the worldmap

qb_raven_map()                      //raven object constructor takes the following:svg_id                              //SVG IDworld_type                          //round or 2dselected_countries = []             //List of ISO_3166 alpha 2 countries that will be selectedremove_countries = []               //List of ISO_3166 alpha 2 countries that will be removed from the mapheight                              //height of the worldmapwidth                               //width of the worldmaporginal_country_color               //Hex color for all countriesclicked_country_color               //Hex color will be applied to any clickable countriesselected_country_color              //Hex color will be applied to any selected countriescountries_json_location             //Countries JSON file (qcountries.json)<   br/>cities_json_location                //Cities JSON file (qcities.json)global_timeout                      //Global timeout for animationdb_length                           //Size of the db that stores attack eventsglobal_stats_limit                  //Limit attack stats of a countryverbose                             //Verbose output should be off unless (use only for debugging)raven = new qb_raven_map("#qb-worldmap-svg", null, [], ["aq"], window.innerHeight, window.innerWidth, "#4f4f4f", "#6c4242", "#ff726f", "qcountries.json", "qcities.json", 2000, 100, 10, true)raven.init_world()                  //Init the worldmap (The worldmap should be ready for you to use at this point)

Plotting data

raven.add_marker_by_name()          //Plot info by country or city nameraven.add_marker_by_ip()            //Plot data by IP addressraven.add_marker_by_coordinates()   //Plot data by coordinatesmarker_object                       //An object {'from':'','to':""} see examplescolors_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 outmarker = []                         //A list of animation marker, use ['line'] for nowraven.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 + adding it to the output table

raven.add_to_data_to_table()        //Plot info and add them to the output tablemethod                              //Name, IP or coordinatesmarker_object                       //An object {'from':'','to':""} see examplescolors_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 outmarker = []                         //A list of animation marker, use ['line'] for nowraven.add_to_data_to_table('name',{'from':'seattle,wa,us','to':'delhi,in'},{'line':{'from':null,'to':null}},2000,['line'])raven.add_to_data_to_table('ip',{'from':'0.0.0.0','to':'0.0.0.0:3389'},{'line':{'from':'#FF0000','to':'#FF00   00'}},1000,['line')raven.add_to_data_to_table('coordinates',{'from':['-11.074920','-51.648929'],'to':['51.464957','-107.583864']},{'line':{'from':null,'to':'#FFFF00'}},1000,['line'])

Timeline

  • Optimize the IP filters <- queued for testing (If you run this in an isolated environment, it should not be an issue)
  • Add Theme Picker

Resources

  • Wikipedia, naturalearthdata, d3.js, topojson, jquery, font-awesome, OSINT package, iana, geonames, AFRINIC, APNIC, ARIN, LACNIC and RIPE
  • Let me know if I missed a reference or resource!

Disclaimer\Notes

  • The dark grey style is typical in my projects (You can change that if you want)
  • If you need help improving your world map or cyber threat map, reach out, and I might be able to help you!
  • Please spend some time in understanding how this project works before opening any issues or leaving any inquiries or comments
  • If you want to see other examples of worldmaps that DO NOT have all the features listed in this project (Google image search -> world map dark grey)


Disqus Comments