https://github.com/fyxme/dreamcatcher
Dreamcatcher combines a TCP listener (eg. reverse shell listener) and an HTTP file server (ie. similar to python SimpleHTTPServer).
https://github.com/fyxme/dreamcatcher
fileserver listener shell tcp-server weblistener
Last synced: 3 months ago
JSON representation
Dreamcatcher combines a TCP listener (eg. reverse shell listener) and an HTTP file server (ie. similar to python SimpleHTTPServer).
- Host: GitHub
- URL: https://github.com/fyxme/dreamcatcher
- Owner: fyxme
- Created: 2021-08-07T09:10:54.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-10-10T20:14:17.000Z (over 1 year ago)
- Last Synced: 2025-06-15T20:19:29.875Z (about 1 year ago)
- Topics: fileserver, listener, shell, tcp-server, weblistener
- Language: Go
- Homepage:
- Size: 5.86 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Dreamcatcher
Dreamcatcher combines a tcp connection listener (eg. reverse shell listener) and an HTTP file server (ie. similar to python SimpleHTTPServer).
This means you can listen for http requests and reverse shells on the same TCP port.
Also reduces the amount of tab, tmux panes, windows, etc.. that you need since everything is served on the same port.
This tool is provided as is. YMMV.
> It's like running an infinite number of netcat listeners and a python HTTP server at once. This is brilliant! - Emon Lusk
## Compiling
```
go build dreamcatcher.go
```
## Usage
```
$ dreamcatcher -h
Usage of dreamcatcher:
-d string
Directory you want to serve files from (default ".")
-i string
Host to listen on (default "127.0.0.1")
-p int
Port to listen on (default 4444)
-v Verbose mode
```
```
$ ./dreamcatcher -d /tmp
:: Catcher listening on 127.0.0.1:4444
:: Serving directory /tmp
:: HTTP request for file: /tmp/test.txt
[127.0.0.1:35776] :: $ whoami
[127.0.0.1:35776] :: root
```
## Known bugs and future improvements
It can currently catch multiple reverse shells at once but it doesnt handle them properly. Instead it will switch between them:
```
$ go run dreamcatcher.go
:: Catcher listening on 127.0.0.1:4444
:: Serving directory .
[127.0.0.1:35686] :: $ [127.0.0.1:35688] :: $
[127.0.0.1:35686] :: $ [127.0.0.1:35690] :: $
[127.0.0.1:35688] :: $
[127.0.0.1:35686] :: $
[127.0.0.1:35690] :: $
[127.0.0.1:35688] :: $
[127.0.0.1:35686] :: $
```
### Todo
- add menu with prefix
- prefix ":"
- action: help, list/ls, switch/s \
- add a way to switch between reverse shells (ie. via menu action)