sondare 1.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sondare-1.0.1/LICENSE +21 -0
- sondare-1.0.1/PKG-INFO +206 -0
- sondare-1.0.1/README.md +172 -0
- sondare-1.0.1/pyproject.toml +53 -0
- sondare-1.0.1/setup.cfg +4 -0
- sondare-1.0.1/sondare/__init__.py +10 -0
- sondare-1.0.1/sondare/__main__.py +3 -0
- sondare-1.0.1/sondare/main.py +312 -0
- sondare-1.0.1/sondare/models.py +21 -0
- sondare-1.0.1/sondare/monitors/__init__.py +0 -0
- sondare-1.0.1/sondare/monitors/arp_watcher.py +65 -0
- sondare-1.0.1/sondare/monitors/hosts_watcher.py +133 -0
- sondare-1.0.1/sondare/monitors/port_watcher.py +122 -0
- sondare-1.0.1/sondare/monitors/traffic_sniffer.py +98 -0
- sondare-1.0.1/sondare/py.typed +0 -0
- sondare-1.0.1/sondare/services/__init__.py +9 -0
- sondare-1.0.1/sondare/services/arp.py +31 -0
- sondare-1.0.1/sondare/services/fingerprint.py +109 -0
- sondare-1.0.1/sondare/services/graph.py +279 -0
- sondare-1.0.1/sondare/services/icmp.py +76 -0
- sondare-1.0.1/sondare/services/tcp.py +90 -0
- sondare-1.0.1/sondare/services/udp.py +93 -0
- sondare-1.0.1/sondare/utils/__init__.py +5 -0
- sondare-1.0.1/sondare/utils/adaptive.py +106 -0
- sondare-1.0.1/sondare/utils/system_utils.py +57 -0
- sondare-1.0.1/sondare.egg-info/PKG-INFO +206 -0
- sondare-1.0.1/sondare.egg-info/SOURCES.txt +43 -0
- sondare-1.0.1/sondare.egg-info/dependency_links.txt +1 -0
- sondare-1.0.1/sondare.egg-info/entry_points.txt +2 -0
- sondare-1.0.1/sondare.egg-info/requires.txt +7 -0
- sondare-1.0.1/sondare.egg-info/top_level.txt +1 -0
- sondare-1.0.1/tests/test_adaptive.py +130 -0
- sondare-1.0.1/tests/test_arp.py +60 -0
- sondare-1.0.1/tests/test_arp_watcher.py +81 -0
- sondare-1.0.1/tests/test_fingerprint.py +135 -0
- sondare-1.0.1/tests/test_graph.py +188 -0
- sondare-1.0.1/tests/test_icmp.py +55 -0
- sondare-1.0.1/tests/test_main_output.py +146 -0
- sondare-1.0.1/tests/test_parse_target.py +55 -0
- sondare-1.0.1/tests/test_port_watcher.py +191 -0
- sondare-1.0.1/tests/test_system_utils.py +108 -0
- sondare-1.0.1/tests/test_tcp.py +97 -0
- sondare-1.0.1/tests/test_traffic_sniffer.py +198 -0
- sondare-1.0.1/tests/test_udp.py +112 -0
- sondare-1.0.1/tests/test_updown_monitor.py +203 -0
sondare-1.0.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021 Ivan Shurygin
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
sondare-1.0.1/PKG-INFO
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: sondare
|
|
3
|
+
Version: 1.0.1
|
|
4
|
+
Summary: Probe and monitor local network hosts — ARP, ICMP, TCP, UDP, OS fingerprinting, and network graph.
|
|
5
|
+
Author-email: Ivan Shurygin <shurygin1vs@gmail.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Repository, https://github.com/w1ldy0uth/sondare
|
|
8
|
+
Keywords: network,scanner,arp,tcp,udp,icmp,fingerprinting,monitoring,scapy,cli
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Intended Audience :: System Administrators
|
|
12
|
+
Classifier: Intended Audience :: Information Technology
|
|
13
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
14
|
+
Classifier: Operating System :: MacOS
|
|
15
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Topic :: System :: Networking
|
|
22
|
+
Classifier: Topic :: System :: Networking :: Monitoring
|
|
23
|
+
Classifier: Topic :: Security
|
|
24
|
+
Requires-Python: >=3.10
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: scapy>=2.4.5
|
|
28
|
+
Requires-Dist: psutil>=5.9.5
|
|
29
|
+
Provides-Extra: dev
|
|
30
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
31
|
+
Requires-Dist: build>=1.0; extra == "dev"
|
|
32
|
+
Requires-Dist: twine>=5.0; extra == "dev"
|
|
33
|
+
Dynamic: license-file
|
|
34
|
+
|
|
35
|
+
# sondare
|
|
36
|
+
|
|
37
|
+
> *From italian: <u>sonda</u> di <u>re</u>te - network probe*
|
|
38
|
+
|
|
39
|
+
## About
|
|
40
|
+
|
|
41
|
+
**sondare** is a Python CLI tool for auditing local networks, built on top of [Scapy](https://scapy.net/). It provides scanning and fingerprinting methods, each running with multithreaded packet dispatch for speed.
|
|
42
|
+
|
|
43
|
+
- **ARP** — discovers all active hosts on the local subnet (cannot be blocked by firewalls)
|
|
44
|
+
- **ICMP** — pings all hosts to check reachability
|
|
45
|
+
- **TCP** — performs a SYN scan on a target host to find open ports
|
|
46
|
+
- **UDP** — probes UDP ports; reports open (got a UDP reply) or open|filtered (no response) ports
|
|
47
|
+
- **OS fingerprinting** — guesses the OS of a host by analysing TTL and TCP window size in a SYN-ACK response
|
|
48
|
+
|
|
49
|
+
## Requirements
|
|
50
|
+
|
|
51
|
+
- Python 3.10+
|
|
52
|
+
- Root / administrator privileges (required for raw packet access)
|
|
53
|
+
- npcap (Windows only)
|
|
54
|
+
|
|
55
|
+
## Setup
|
|
56
|
+
|
|
57
|
+
### Linux & macOS
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
./init.sh
|
|
61
|
+
source sondare_venv/bin/activate
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Windows
|
|
65
|
+
|
|
66
|
+
```bat
|
|
67
|
+
init.bat
|
|
68
|
+
call sondare_venv\Scripts\activate
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`init.sh` / `init.bat` creates a virtual environment and runs `pip install -e .`, which installs all dependencies and registers the `sondare` command.
|
|
72
|
+
|
|
73
|
+
## Usage
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
sudo sondare <command> [options]
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Commands
|
|
80
|
+
|
|
81
|
+
| Command | Description |
|
|
82
|
+
| --------- | ------------- |
|
|
83
|
+
| `arp` | ARP scan of the local subnet |
|
|
84
|
+
| `ping` | ICMP scan of the local subnet |
|
|
85
|
+
| `tcp` | TCP SYN port scan of a target host |
|
|
86
|
+
| `udp` | UDP port scan of a target host |
|
|
87
|
+
| `os` | OS fingerprint of a target host |
|
|
88
|
+
| `monitor arp` | Watch for ARP traffic; report new hosts and MAC changes |
|
|
89
|
+
| `monitor hosts` | Live host reachability table with auto-discovery |
|
|
90
|
+
| `monitor ports` | Periodically SYN-scan a target and report port state changes |
|
|
91
|
+
| `monitor traffic` | Live packet capture with per-packet protocol breakdown |
|
|
92
|
+
| `graph` | Generate an interactive HTML network graph of the local subnet |
|
|
93
|
+
|
|
94
|
+
### Examples
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Discover all hosts via ARP
|
|
98
|
+
sudo sondare arp
|
|
99
|
+
|
|
100
|
+
# Discover live hosts via ICMP with 10s timeout
|
|
101
|
+
sudo sondare ping -t 10
|
|
102
|
+
|
|
103
|
+
# Scan ports 1–1024 on a target
|
|
104
|
+
sudo sondare tcp --target 192.168.1.1:1-1024
|
|
105
|
+
|
|
106
|
+
# Scan a single port
|
|
107
|
+
sudo sondare tcp --target 192.168.1.1:80
|
|
108
|
+
|
|
109
|
+
# UDP scan of common ports
|
|
110
|
+
sudo sondare udp --target 192.168.1.1:1-1024
|
|
111
|
+
|
|
112
|
+
# Fingerprint a host OS (auto-probes common ports)
|
|
113
|
+
sudo sondare os --target 192.168.1.1
|
|
114
|
+
|
|
115
|
+
# Fingerprint using a known-open port
|
|
116
|
+
sudo sondare os --target 192.168.1.1 --port 80
|
|
117
|
+
|
|
118
|
+
# Watch for new hosts and ARP spoofing attempts
|
|
119
|
+
sudo sondare monitor arp
|
|
120
|
+
|
|
121
|
+
# Monitor all hosts on the subnet (auto-discovers new/departed hosts)
|
|
122
|
+
sudo sondare monitor hosts
|
|
123
|
+
|
|
124
|
+
# Monitor specific hosts every 10s
|
|
125
|
+
sudo sondare monitor hosts --hosts 192.168.1.1 192.168.1.50 -i 10
|
|
126
|
+
|
|
127
|
+
# Watch for port state changes on a target
|
|
128
|
+
sudo sondare monitor ports --target 192.168.1.1:1-1024
|
|
129
|
+
|
|
130
|
+
# Live packet capture (all traffic)
|
|
131
|
+
sudo sondare monitor traffic
|
|
132
|
+
|
|
133
|
+
# Live capture filtered to DNS
|
|
134
|
+
sudo sondare monitor traffic --filter "udp port 53"
|
|
135
|
+
|
|
136
|
+
# Generate a network graph (saved as sondare_graph.html)
|
|
137
|
+
sudo sondare graph
|
|
138
|
+
|
|
139
|
+
# Graph with OS fingerprinting for each discovered host
|
|
140
|
+
sudo sondare graph --fingerprint
|
|
141
|
+
|
|
142
|
+
# Save to a custom path
|
|
143
|
+
sudo sondare graph -o /tmp/my_network.html
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Options
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
arp:
|
|
150
|
+
-t, --timeout Packet timeout in seconds (default: 5)
|
|
151
|
+
-v, --verbose Verbose scapy output
|
|
152
|
+
|
|
153
|
+
ping:
|
|
154
|
+
-t, --timeout Packet timeout in seconds (default: 5)
|
|
155
|
+
-th, --threads Number of threads (default: 100)
|
|
156
|
+
-v, --verbose Verbose scapy output
|
|
157
|
+
|
|
158
|
+
tcp:
|
|
159
|
+
--target Target as ip, ip:port, or ip:start-end (default: local machine, ports 1-1000)
|
|
160
|
+
-t, --timeout Packet timeout in seconds (default: 3)
|
|
161
|
+
-th, --threads Number of threads (default: 20)
|
|
162
|
+
-r, --retries Retries per port on no response (default: 2)
|
|
163
|
+
-v, --verbose Verbose scapy output
|
|
164
|
+
|
|
165
|
+
udp:
|
|
166
|
+
--target Target as ip, ip:port, or ip:start-end (default: local machine, ports 1-1000)
|
|
167
|
+
-t, --timeout Packet timeout in seconds (default: 3)
|
|
168
|
+
-th, --threads Number of threads (default: 20)
|
|
169
|
+
-r, --retries Retries per port on no response (default: 2)
|
|
170
|
+
-v, --verbose Verbose scapy output
|
|
171
|
+
|
|
172
|
+
os:
|
|
173
|
+
--target Target IP address (required)
|
|
174
|
+
--port Port to probe; omit to auto-try common ports in parallel
|
|
175
|
+
-t, --timeout Timeout per probe in seconds (default: 3)
|
|
176
|
+
-v, --verbose Verbose scapy output
|
|
177
|
+
|
|
178
|
+
monitor arp:
|
|
179
|
+
-t, --timeout Timeout for initial ARP seed scan (default: 5)
|
|
180
|
+
-v, --verbose Verbose scapy output
|
|
181
|
+
|
|
182
|
+
monitor hosts:
|
|
183
|
+
--hosts Hosts to monitor; omit to auto-discover via ARP each round
|
|
184
|
+
-i, --interval Seconds between ping rounds (default: 30)
|
|
185
|
+
-t, --timeout Ping timeout in seconds (default: 2)
|
|
186
|
+
-th, --threads Concurrent pings per round (default: 50)
|
|
187
|
+
-v, --verbose Verbose scapy output
|
|
188
|
+
|
|
189
|
+
monitor ports:
|
|
190
|
+
--target Target as ip, ip:port, or ip:start-end (default: local machine, ports 1-1000)
|
|
191
|
+
-i, --interval Seconds between scans (default: 60)
|
|
192
|
+
-t, --timeout Timeout per probe in seconds (default: 3)
|
|
193
|
+
-th, --threads Concurrent probes per scan (default: 20)
|
|
194
|
+
-v, --verbose Verbose scapy output
|
|
195
|
+
|
|
196
|
+
monitor traffic:
|
|
197
|
+
--filter BPF filter expression (e.g. 'tcp', 'udp port 53', 'host 192.168.1.1')
|
|
198
|
+
-v, --verbose Verbose scapy output
|
|
199
|
+
|
|
200
|
+
graph:
|
|
201
|
+
--fingerprint OS-fingerprint each discovered host (TCP SYN, falls back to ICMP TTL)
|
|
202
|
+
-o, --output Output file path (default: sondare_graph.html)
|
|
203
|
+
-t, --timeout ARP scan timeout in seconds (default: 3)
|
|
204
|
+
-th, --threads Concurrent fingerprint probes (default: 10)
|
|
205
|
+
-v, --verbose Verbose scapy output
|
|
206
|
+
```
|
sondare-1.0.1/README.md
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# sondare
|
|
2
|
+
|
|
3
|
+
> *From italian: <u>sonda</u> di <u>re</u>te - network probe*
|
|
4
|
+
|
|
5
|
+
## About
|
|
6
|
+
|
|
7
|
+
**sondare** is a Python CLI tool for auditing local networks, built on top of [Scapy](https://scapy.net/). It provides scanning and fingerprinting methods, each running with multithreaded packet dispatch for speed.
|
|
8
|
+
|
|
9
|
+
- **ARP** — discovers all active hosts on the local subnet (cannot be blocked by firewalls)
|
|
10
|
+
- **ICMP** — pings all hosts to check reachability
|
|
11
|
+
- **TCP** — performs a SYN scan on a target host to find open ports
|
|
12
|
+
- **UDP** — probes UDP ports; reports open (got a UDP reply) or open|filtered (no response) ports
|
|
13
|
+
- **OS fingerprinting** — guesses the OS of a host by analysing TTL and TCP window size in a SYN-ACK response
|
|
14
|
+
|
|
15
|
+
## Requirements
|
|
16
|
+
|
|
17
|
+
- Python 3.10+
|
|
18
|
+
- Root / administrator privileges (required for raw packet access)
|
|
19
|
+
- npcap (Windows only)
|
|
20
|
+
|
|
21
|
+
## Setup
|
|
22
|
+
|
|
23
|
+
### Linux & macOS
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
./init.sh
|
|
27
|
+
source sondare_venv/bin/activate
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Windows
|
|
31
|
+
|
|
32
|
+
```bat
|
|
33
|
+
init.bat
|
|
34
|
+
call sondare_venv\Scripts\activate
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
`init.sh` / `init.bat` creates a virtual environment and runs `pip install -e .`, which installs all dependencies and registers the `sondare` command.
|
|
38
|
+
|
|
39
|
+
## Usage
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
sudo sondare <command> [options]
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Commands
|
|
46
|
+
|
|
47
|
+
| Command | Description |
|
|
48
|
+
| --------- | ------------- |
|
|
49
|
+
| `arp` | ARP scan of the local subnet |
|
|
50
|
+
| `ping` | ICMP scan of the local subnet |
|
|
51
|
+
| `tcp` | TCP SYN port scan of a target host |
|
|
52
|
+
| `udp` | UDP port scan of a target host |
|
|
53
|
+
| `os` | OS fingerprint of a target host |
|
|
54
|
+
| `monitor arp` | Watch for ARP traffic; report new hosts and MAC changes |
|
|
55
|
+
| `monitor hosts` | Live host reachability table with auto-discovery |
|
|
56
|
+
| `monitor ports` | Periodically SYN-scan a target and report port state changes |
|
|
57
|
+
| `monitor traffic` | Live packet capture with per-packet protocol breakdown |
|
|
58
|
+
| `graph` | Generate an interactive HTML network graph of the local subnet |
|
|
59
|
+
|
|
60
|
+
### Examples
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Discover all hosts via ARP
|
|
64
|
+
sudo sondare arp
|
|
65
|
+
|
|
66
|
+
# Discover live hosts via ICMP with 10s timeout
|
|
67
|
+
sudo sondare ping -t 10
|
|
68
|
+
|
|
69
|
+
# Scan ports 1–1024 on a target
|
|
70
|
+
sudo sondare tcp --target 192.168.1.1:1-1024
|
|
71
|
+
|
|
72
|
+
# Scan a single port
|
|
73
|
+
sudo sondare tcp --target 192.168.1.1:80
|
|
74
|
+
|
|
75
|
+
# UDP scan of common ports
|
|
76
|
+
sudo sondare udp --target 192.168.1.1:1-1024
|
|
77
|
+
|
|
78
|
+
# Fingerprint a host OS (auto-probes common ports)
|
|
79
|
+
sudo sondare os --target 192.168.1.1
|
|
80
|
+
|
|
81
|
+
# Fingerprint using a known-open port
|
|
82
|
+
sudo sondare os --target 192.168.1.1 --port 80
|
|
83
|
+
|
|
84
|
+
# Watch for new hosts and ARP spoofing attempts
|
|
85
|
+
sudo sondare monitor arp
|
|
86
|
+
|
|
87
|
+
# Monitor all hosts on the subnet (auto-discovers new/departed hosts)
|
|
88
|
+
sudo sondare monitor hosts
|
|
89
|
+
|
|
90
|
+
# Monitor specific hosts every 10s
|
|
91
|
+
sudo sondare monitor hosts --hosts 192.168.1.1 192.168.1.50 -i 10
|
|
92
|
+
|
|
93
|
+
# Watch for port state changes on a target
|
|
94
|
+
sudo sondare monitor ports --target 192.168.1.1:1-1024
|
|
95
|
+
|
|
96
|
+
# Live packet capture (all traffic)
|
|
97
|
+
sudo sondare monitor traffic
|
|
98
|
+
|
|
99
|
+
# Live capture filtered to DNS
|
|
100
|
+
sudo sondare monitor traffic --filter "udp port 53"
|
|
101
|
+
|
|
102
|
+
# Generate a network graph (saved as sondare_graph.html)
|
|
103
|
+
sudo sondare graph
|
|
104
|
+
|
|
105
|
+
# Graph with OS fingerprinting for each discovered host
|
|
106
|
+
sudo sondare graph --fingerprint
|
|
107
|
+
|
|
108
|
+
# Save to a custom path
|
|
109
|
+
sudo sondare graph -o /tmp/my_network.html
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Options
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
arp:
|
|
116
|
+
-t, --timeout Packet timeout in seconds (default: 5)
|
|
117
|
+
-v, --verbose Verbose scapy output
|
|
118
|
+
|
|
119
|
+
ping:
|
|
120
|
+
-t, --timeout Packet timeout in seconds (default: 5)
|
|
121
|
+
-th, --threads Number of threads (default: 100)
|
|
122
|
+
-v, --verbose Verbose scapy output
|
|
123
|
+
|
|
124
|
+
tcp:
|
|
125
|
+
--target Target as ip, ip:port, or ip:start-end (default: local machine, ports 1-1000)
|
|
126
|
+
-t, --timeout Packet timeout in seconds (default: 3)
|
|
127
|
+
-th, --threads Number of threads (default: 20)
|
|
128
|
+
-r, --retries Retries per port on no response (default: 2)
|
|
129
|
+
-v, --verbose Verbose scapy output
|
|
130
|
+
|
|
131
|
+
udp:
|
|
132
|
+
--target Target as ip, ip:port, or ip:start-end (default: local machine, ports 1-1000)
|
|
133
|
+
-t, --timeout Packet timeout in seconds (default: 3)
|
|
134
|
+
-th, --threads Number of threads (default: 20)
|
|
135
|
+
-r, --retries Retries per port on no response (default: 2)
|
|
136
|
+
-v, --verbose Verbose scapy output
|
|
137
|
+
|
|
138
|
+
os:
|
|
139
|
+
--target Target IP address (required)
|
|
140
|
+
--port Port to probe; omit to auto-try common ports in parallel
|
|
141
|
+
-t, --timeout Timeout per probe in seconds (default: 3)
|
|
142
|
+
-v, --verbose Verbose scapy output
|
|
143
|
+
|
|
144
|
+
monitor arp:
|
|
145
|
+
-t, --timeout Timeout for initial ARP seed scan (default: 5)
|
|
146
|
+
-v, --verbose Verbose scapy output
|
|
147
|
+
|
|
148
|
+
monitor hosts:
|
|
149
|
+
--hosts Hosts to monitor; omit to auto-discover via ARP each round
|
|
150
|
+
-i, --interval Seconds between ping rounds (default: 30)
|
|
151
|
+
-t, --timeout Ping timeout in seconds (default: 2)
|
|
152
|
+
-th, --threads Concurrent pings per round (default: 50)
|
|
153
|
+
-v, --verbose Verbose scapy output
|
|
154
|
+
|
|
155
|
+
monitor ports:
|
|
156
|
+
--target Target as ip, ip:port, or ip:start-end (default: local machine, ports 1-1000)
|
|
157
|
+
-i, --interval Seconds between scans (default: 60)
|
|
158
|
+
-t, --timeout Timeout per probe in seconds (default: 3)
|
|
159
|
+
-th, --threads Concurrent probes per scan (default: 20)
|
|
160
|
+
-v, --verbose Verbose scapy output
|
|
161
|
+
|
|
162
|
+
monitor traffic:
|
|
163
|
+
--filter BPF filter expression (e.g. 'tcp', 'udp port 53', 'host 192.168.1.1')
|
|
164
|
+
-v, --verbose Verbose scapy output
|
|
165
|
+
|
|
166
|
+
graph:
|
|
167
|
+
--fingerprint OS-fingerprint each discovered host (TCP SYN, falls back to ICMP TTL)
|
|
168
|
+
-o, --output Output file path (default: sondare_graph.html)
|
|
169
|
+
-t, --timeout ARP scan timeout in seconds (default: 3)
|
|
170
|
+
-th, --threads Concurrent fingerprint probes (default: 10)
|
|
171
|
+
-v, --verbose Verbose scapy output
|
|
172
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "sondare"
|
|
7
|
+
version = "1.0.1"
|
|
8
|
+
description = "Probe and monitor local network hosts — ARP, ICMP, TCP, UDP, OS fingerprinting, and network graph."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
license-files = ["LICENSE"]
|
|
12
|
+
authors = [
|
|
13
|
+
{name = "Ivan Shurygin", email = "shurygin1vs@gmail.com"},
|
|
14
|
+
]
|
|
15
|
+
keywords = ["network", "scanner", "arp", "tcp", "udp", "icmp", "fingerprinting", "monitoring", "scapy", "cli"]
|
|
16
|
+
requires-python = ">=3.10"
|
|
17
|
+
dependencies = [
|
|
18
|
+
"scapy>=2.4.5",
|
|
19
|
+
"psutil>=5.9.5",
|
|
20
|
+
]
|
|
21
|
+
classifiers = [
|
|
22
|
+
"Development Status :: 4 - Beta",
|
|
23
|
+
"Environment :: Console",
|
|
24
|
+
"Intended Audience :: System Administrators",
|
|
25
|
+
"Intended Audience :: Information Technology",
|
|
26
|
+
"Operating System :: POSIX :: Linux",
|
|
27
|
+
"Operating System :: MacOS",
|
|
28
|
+
"Operating System :: Microsoft :: Windows",
|
|
29
|
+
"Programming Language :: Python :: 3",
|
|
30
|
+
"Programming Language :: Python :: 3.10",
|
|
31
|
+
"Programming Language :: Python :: 3.11",
|
|
32
|
+
"Programming Language :: Python :: 3.12",
|
|
33
|
+
"Programming Language :: Python :: 3.13",
|
|
34
|
+
"Topic :: System :: Networking",
|
|
35
|
+
"Topic :: System :: Networking :: Monitoring",
|
|
36
|
+
"Topic :: Security",
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
[project.urls]
|
|
40
|
+
Repository = "https://github.com/w1ldy0uth/sondare"
|
|
41
|
+
|
|
42
|
+
[project.optional-dependencies]
|
|
43
|
+
dev = ["pytest>=8.0", "build>=1.0", "twine>=5.0"]
|
|
44
|
+
|
|
45
|
+
[project.scripts]
|
|
46
|
+
sondare = "sondare.main:main"
|
|
47
|
+
|
|
48
|
+
[tool.setuptools.packages.find]
|
|
49
|
+
where = ["."]
|
|
50
|
+
include = ["sondare*"]
|
|
51
|
+
|
|
52
|
+
[tool.setuptools.package-data]
|
|
53
|
+
sondare = ["py.typed"]
|
sondare-1.0.1/setup.cfg
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"""sondare — local network scanner using ARP, ICMP, TCP, UDP probes and OS fingerprinting."""
|
|
2
|
+
|
|
3
|
+
from sondare.models import Host, Port, Fingerprint
|
|
4
|
+
from sondare.services.arp import Arp
|
|
5
|
+
from sondare.services.icmp import Ping
|
|
6
|
+
from sondare.services.tcp import Tcp
|
|
7
|
+
from sondare.services.udp import Udp
|
|
8
|
+
from sondare.services.fingerprint import OsFingerprinter
|
|
9
|
+
|
|
10
|
+
__all__ = ["Arp", "Ping", "Tcp", "Udp", "OsFingerprinter", "Host", "Port", "Fingerprint"]
|