All Projects → John-Lin → Wallofsheep

John-Lin / Wallofsheep

Licence: apache-2.0
Wall of Sheep

Labels

Wall of Sheep

 _       _____    __    __       ____  ______   _____ __  __________________
| |     / /   |  / /   / /      / __ \/ ____/  / ___// / / / ____/ ____/ __ \
| | /| / / /| | / /   / /      / / / / /_      \__ \/ /_/ / __/ / __/ / /_/ /
| |/ |/ / ___ |/ /___/ /___   / /_/ / __/     ___/ / __  / /___/ /___/ ____/
|__/|__/_/  |_/_____/_____/   \____/_/       /____/_/ /_/_____/_____/_/

Join the chat at https://gitter.im/John-Lin/wallofsheep

The Wall of Sheep is dedicated to network security research and we make use of a powerful API provided by RethinkDB, Firebase to store and sync data in realtime.

Without SSL/TLS, your password is just like streaking. Therefore, we recommend that service provider in the list should secure their websites with HTTPS.

You can check out the demo page. The circle symbolizes that the status of sniffer program. Green is online, otherwise offline.

We built sniffer in two languages Python and Node.js. The Node.js version support on OSX and Linux. Unfortunately, The Python version only support on Linux.

New implementation in Node.js

[April 18, 2015 Updated] Add Node.js sniffer implementation. Now OSX user can play with it. 😆

We believe that using JavaScript is more efficient. Please refer to Why capture packets in JavaScript?

In simple terms

  • Event-based.
  • Handling binary data is fast and efficient.
  • Good HTTP parser.

Installation

Here is installation method.

Using brew install Node.js, npm and rethinkdb (option).

$ brew update
$ brew install node
$ brew install npm
$ brew install rethinkdb

Clone the repo and change directory to nodejs folder.

$ git clone [email protected]:John-Lin/wallofsheep.git

Packet capturing depends on mranney/node_pcap and save data to RethinkDB using neumino/thinky (option) you can use npm to get these packages.

$ npm install

That's it.

Basic usage

Two ways to use

Not saving the credentials. Start the sniffer with sudo

john at JohnsMacBook-Air in ~/Repository/wallofsheep/nodejs (master●●)
$ sudo node sniffer.js -i en0
[-] Loading RethinkDB module.
  _       _____    __    __       ____  ______   _____ __  __________________
| |     / /   |  / /   / /      / __ \/ ____/  / ___// / / / ____/ ____/ __ \
| | /| / / /| | / /   / /      / / / / /_      \__ \/ /_/ / __/ / __/ / /_/ /
| |/ |/ / ___ |/ /___/ /___   / /_/ / __/     ___/ / __  / /___/ /___/ ____/
|__/|__/_/  |_/_____/_____/   \____/_/       /____/_/ /_/_____/_____/_/
[*] Using interface: en0
[192.168.0.16:61881 -> 140.***.**.***:80] Account: [email protected]
[192.168.0.16:61881 -> 140.***.**.***:80] Password: thisispassword

Saving credentials in RethinkDB need -s option.

First, start the RethinkDB server like this:

$ rethinkdb
info: Creating directory 'rethinkdb_data'
info: Listening for intracluster connections on port 29015
info: Listening for client driver connections on port 28015
info: Listening for administrative HTTP connections on port 8080
info: Server ready

Second, open a new terminal and start the sniffer with sudo

john at JohnsMacBook-Air in ~/Repository/wallofsheep/nodejs (master●●)
$ sudo node sniffer.js -i en0 -s
[-] Loading RethinkDB module.
  _       _____    __    __       ____  ______   _____ __  __________________
| |     / /   |  / /   / /      / __ \/ ____/  / ___// / / / ____/ ____/ __ \
| | /| / / /| | / /   / /      / / / / /_      \__ \/ /_/ / __/ / __/ / /_/ /
| |/ |/ / ___ |/ /___/ /___   / /_/ / __/     ___/ / __  / /___/ /___/ ____/
|__/|__/_/  |_/_____/_____/   \____/_/       /____/_/ /_/_____/_____/_/
[*] Using interface: en0
[192.168.0.16:61881 -> 140.***.**.***:80] Account: [email protected]
[192.168.0.16:61881 -> 140.***.**.***:80] Password: thisispassword

How to Run Web

Deploy firebase web
First, Install firebase toolkits.

╭─~/Coding/Projects/web/wallofsheep/firebase_app on master✔ using
╰─± npm install -g firebase-tools

Find out the following code snippet in firebase_app/index.html and change to your own firebase's project id and create both pwd_table & status table in the Firebase management panel.

var myDataRef = new Firebase('https://<your-project-id>.firebaseio.com/pwd_table'),
    statusRef = new Firebase('https://<your-project-id>.firebaseio.com/status'),

Last, just do

╭─~/Coding/Projects/web/wallofsheep/firebase_app on master✔ using
╰─± firebase deploy

After a moment, you can find your site on https://your-project-id.firebaseapp.com

Running web implemented in express
Just change directory to express_app, do the following command, do not forget to run rethinkdb and sniffer.js metioned above.

╭─~/Coding/Projects/web/wallofsheep/express_app on master✔ using
╰─± npm install & npm start

Now, You can wait for the comming sheep 😄

Work in progress

  • [x] Support RethinkDB provided push/sync data in realtime.
  • [x] Parsing user/password in IMAP protocol.
  • [x] Parsing user/password in POP3 protocol.
  • [ ] A new Web interface for showing off rely on RethinkDB.
  • [ ] Any protocol not encrypted (e.g., telnet, irc etc.)

Screenshot

wallofsheep

Contributing

Your contribution is welcome ! follow these steps:

  • Fork this project.
  • Create a branch (git checkout -b my_feature_patch)
  • Commit your changes (git commit -am "Added Something Feature")
  • Push to the branch (git push origin my_feature_patch)
  • Open a Pull Request
  • Wait for merge 😄

Contributors

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