Skip to content

Commit e29a0b7

Browse files
author
Code Express
committed
Code refactored, changes to README
1 parent 9599d4e commit e29a0b7

File tree

2 files changed

+46
-5
lines changed

2 files changed

+46
-5
lines changed

README.md

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,29 @@ Latest versions can be downloaded from the [Release](https://github.com/codeexpr
3131
This is a golang project with no dependencies. Assuming you have golang compiler installed,
3232
the following will build the binary from scratch
3333
```
34-
$ git clone blah
34+
$ git clone https://github.com/codeexpress/respounder
3535
$ cd respounder
3636
$ go build respounder
3737
```
3838

3939
## Usage
4040

4141
Running `respounder` is as simple as invoking it on the command line.
42-
The following will display output on the terminal.
43-
```
42+
Example invocation:
43+
```bash
4444
$ ./respounder
45+
46+
47+
.´/
48+
/ ( .----------------.
49+
[ ]░░░░░░░░░░░|// RESPOUNDER //|
50+
) ( '----------------'
51+
'-'
52+
53+
[wlan0] Sending probe from 192.168.0.19... responder not detected
54+
[vmnet1] Sending probe from 172.16.211.1... responder not detected
55+
[vmnet8] Sending probe from 172.16.55.1... responder detected at 172.16.55.128
4556
```
46-
To detect a compromise as soon as it happens, **run respounder as a cron job running every minute**
4757
4858
### Flags
4959
@@ -60,6 +70,34 @@ Flags:
6070
Displays this help
6171
```
6272
73+
74+
### Typical usage scenario
75+
76+
#### Personal
77+
Detect rogue hosts running responder on public Wi-Fi networks
78+
e.g. like Airports, Cafés and avoid joining such networks
79+
(especially if you are running windows OS)
80+
81+
#### Corporate
82+
Detect network compromises as soon as they happen by running respounder
83+
in a loop
84+
85+
For eg. the following `crontab` runs respounder every minute and logs a JSON file to syslog
86+
whenever a responder is detected.
87+
```bash
88+
* * * * * /path/to/respounder -json | /usr/bin/logger -t responder-detected
89+
```
90+
91+
Example `syslog` entry:
92+
```bash
93+
code@express:~/$ sudo tail -f /var/log/syslog
94+
Feb 9 03:44:07 responder-detected: [{"interface":"vmnet8","responderIP":"172.16.55.128","sourceIP":"172.16.55.1"}]
95+
```
96+
6397
## Demo
6498
![Respounder in action](https://i.imgur.com/ymcDRnJ.gif)
6599
100+
## Coming Up Next: Android App
101+
There are plans to port this tool to an android app so that adversarial Wi-Fi networks
102+
(eg. WiFi Pineapple or WiFi Pumpkin running responder) can be
103+
detected right from a mobile phone.

respounder.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ const (
2626

2727
Version = 1.0
2828
TimeoutSec = 3
29+
BcastAddr = "224.0.0.252"
30+
LLMNRPort = 5355
2931
)
3032

3133
var (
@@ -73,6 +75,7 @@ func main() {
7375
logger.Println("======== Ending RESPOUNDER Session ========")
7476
}
7577

78+
// Test presence of responder on a given interface
7679
func checkResponderOnInterface(inf net.Interface) map[string]string {
7780
var json map[string]string
7881
addrs, _ := inf.Addrs()
@@ -114,7 +117,7 @@ func sendLLMNRProbe(ip net.IP) string {
114117
"0000000100000000000012617769657264636f6d70757465726e616d650000010001"
115118
n, _ := hex.DecodeString(llmnrRequest)
116119

117-
remoteAddr := net.UDPAddr{IP: net.ParseIP("224.0.0.252"), Port: 5355}
120+
remoteAddr := net.UDPAddr{IP: net.ParseIP(BcastAddr), Port: LLMNRPort}
118121

119122
conn, err := net.ListenUDP("udp", &net.UDPAddr{IP: ip})
120123
if err != nil {

0 commit comments

Comments
 (0)