All Projects → riolet → Sam

riolet / Sam

Licence: gpl-3.0
System Architecture Mapper

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Sam

Grassmarlin
Provides situational awareness of Industrial Control Systems (ICS) and Supervisory Control and Data Acquisition (SCADA) networks in support of network security assessments. #nsacyber
Stars: ✭ 621 (+252.84%)
Mutual labels:  analysis, networking
Netjson
NetJSON is a data interchange format for encoding the basic building blocks of networks.
Stars: ✭ 171 (-2.84%)
Mutual labels:  networking
Netctl
Profile based systemd network management
Stars: ✭ 163 (-7.39%)
Mutual labels:  networking
Angr Utils
Handy utilities for the angr binary analysis framework, most notably CFG visualization
Stars: ✭ 169 (-3.98%)
Mutual labels:  analysis
Spitfire
An easy to use WebRTC Datachannels library for .NET applications.
Stars: ✭ 164 (-6.82%)
Mutual labels:  networking
Swifthub
GitHub iOS client in RxSwift and MVVM-C clean architecture
Stars: ✭ 2,330 (+1223.86%)
Mutual labels:  networking
Zap
An asynchronous runtime with a focus on performance and resource efficiency.
Stars: ✭ 162 (-7.95%)
Mutual labels:  networking
Ansible Role Wireguard
Ansible role for installing WireGuard VPN. Supports Ubuntu, Debian, Archlinx, Fedora and CentOS.
Stars: ✭ 176 (+0%)
Mutual labels:  networking
Smol
A small and fast async runtime for Rust
Stars: ✭ 2,206 (+1153.41%)
Mutual labels:  networking
Pe Linux
Linux Privilege Escalation Tool By WazeHell
Stars: ✭ 168 (-4.55%)
Mutual labels:  analysis
Gitinspector
📊 The statistical analysis tool for git repositories
Stars: ✭ 2,058 (+1069.32%)
Mutual labels:  analysis
Unity Fastpacedmultiplayer
Features a Networking Framework to be used on top of Unity Networking, in order to implement an Authoritative Server with Lag Compensation, Client-Side Prediction/Server Reconciliation and Entity Interpolation
Stars: ✭ 162 (-7.95%)
Mutual labels:  networking
Medium
Independent telecommunication environment
Stars: ✭ 171 (-2.84%)
Mutual labels:  networking
Simplenet
An easy-to-use, event-driven, asynchronous network application framework compiled with Java 11.
Stars: ✭ 164 (-6.82%)
Mutual labels:  networking
Quic.net
A .NET C# Implementation of QUIC protocol - Google's experimental transport layer.
Stars: ✭ 173 (-1.7%)
Mutual labels:  networking
Iptools
PHP Library for manipulating network addresses (IPv4 and IPv6)
Stars: ✭ 163 (-7.39%)
Mutual labels:  networking
Lightio
LightIO is a userland implemented green thread library for ruby
Stars: ✭ 165 (-6.25%)
Mutual labels:  networking
Ladybug Legacy
🐞 Ladybug is an environmental plugin for Grasshopper.
Stars: ✭ 169 (-3.98%)
Mutual labels:  analysis
Tracepkt
Trace a ping packet journey across network interfaces and namespace on recent Linux. Supports IPv4 and IPv6.
Stars: ✭ 176 (+0%)
Mutual labels:  networking
Dnxfirewall
dnxfirewall (dad's next-gen firewall), a pure Python next generation firewall built on top of Linux kernel/netfilter.
Stars: ✭ 174 (-1.14%)
Mutual labels:  networking

SAM - System Architecture Mapper

SAM is a tool designed to map a network based on the data log of a router. It runs as a local python-based server and displays the a map and statistics on the browser.

Check out the website for details about the project and a demo!

Quickstart (using pip)

install SAM with pip:

pip install samapper

Collect network data with tcpdump and run the http server:

sudo tcpdump -i any -f --immediate-mode -l -n -Q inout -tt | samapper --local --whois --format=tcpdump
  • tcpdump will probably need to be run with sudo to allow it to capture network traffic from your devices.
  • Only tcpdump format works locally via pipe at the moment.

Or, run the http server without collecting data:

samapper --local --whois --format=none

Known issue:

When running samapper in local mode using sqlite (the default) the database will sometimes lock up when the collector is inserting and you are viewing the display. If this is happening, just run the collector for a while, stop it, and run the http server on its own.

Installation (using git)

Prerequisites

(optional) mysql - database software that will work better for this than sqlite.

apt-get install mysql-server libmysqlclient-dev python python-dev

pip - to install python packages

apt-get install python-pip

Installing

  1. Clone this repository
  2. Run pip install -r requirements.txt from within the directory to install necessary packages.
  3. Set environment variables for credentials and settings. See sam/default.cfg.
e.g:
export SAM__DATABASE__DBN=mysql
export SAM__DATABASE__USER=root
export SAM__DATABASE__PW=mypassword

Usage

  1. Start the server locally by running: python -m sam.launcher --target=webserver For a more robust deployment, SAM supports the WSGI interface (python sam/server_webserver.py) and can be run through a different web server.

  2. Create a data source to use in the settings page, or use the default empty data source provided.

  3. For static analysis, import your log files into the database by running the following scripts, where log_file is the path to your log file and destination is the name of the data source you wish to fill.

    python -m sam.launcher --target=import --format=<format> --dest=<destination> <log_file>

    Log formats currently supported include:

    1. paloalto: The paloalto syslog format is expected.
    2. nfdump: Binary files from nfcapd are expected. nfdump must be installed.
    3. asa: Cisco ASA logs, Partial support. Thanks to Emre for contributing.
    4. aws: AWS VPC Flow logs: Partial support. Thanks to Emre for contributing. VPC log spec
    5. tcpdump: Designed to work with live local mode. See quickstart above
    6. tshark: Partial support.
  4. For live analysis,

    1. On the settings page, choose a data source for your live data to be funneled into then create a Access Key
    2. Edit default.cfg or set an environment variable (SAM__COLLECTOR__UPLOAD_KEY) to your new access key
    3. Start the aggregator (this loads log data into the database)
      • python -m sam.launcher --target=aggregator
    4. Start the collector (this listens to port 514 and translates syslog lines)
      • python -m sam.launcher --target=collector
      • You will need priviledges to bind to system port 514.
      • It should print "Testing connection... Succeeded."
    5. Tell your router to output it's log files to that freshly opened socket.
  5. Navigate your browser to localhost:8080 and explore your network!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].