Skip to content

Commit

Permalink
Initial commit of Fitcrack 2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Larrax committed Dec 12, 2018
1 parent ac5d3f1 commit 10677ea
Show file tree
Hide file tree
Showing 7,529 changed files with 3,605,109 additions and 2 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
224 changes: 222 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,222 @@
# fitcrack
A hashcat-based distributed password cracking system
# Fitcrack (Distributed password cracking system)

This README describes how to install and run Fitcrack distributed password cracking system.
There are four ways of deployment:

* Using installer + [Step-by-step guide for Debian 9 / Ubuntu 18.04 LTS](#instdeb) (recommended way)
* Using installer + [Step-by-step guide for CentOS/RHEL 7](#instcentos) (recommended way)
* Using installer + [General installation instructions](#instgen)
* Manual install:
* For **BOINC and Fitcrack server**, see [server README](server/README.md)
* For **Fitcrack WebAdmin**, see [WebAdmin README](webadmin/README.md)
* For **Custom build of Runner**, see [Runner README](runner/README.md)

Once installed, see how to [Operate the server](#oper)

<a name="instgen"></a>
## General installation instructions

### Software prerequisities
* make (3.79+)
* m4 (1.4+)
* libtool (1.5+)
* autoconf (2.58+)
* automake (1.8+)
* GCC (6.3.0+)
* pkg-config (0.15+)
* Python 2 (2.2+)
* Python 3
* pip for Python 3
* MySQL (4.0.9+) or MariaDB (10.0+)
* libnotify-dev
* Apache with the following modules:
* PHP (5+) with XML and MySQL modules
* CGI
* WSGI
* rewrite
* PHP5 with cli support and the GD and MySQL modules
* OpenSSL (0.98+)

### Installation
Create a user for running BOINC server
```
useradd -m -c "BOINC Administrator" boincadm -s /bin/bash
```
Create a MySQL database and user account for Fitcrack
```
mysql -u root -p
mysql> create database fitcrack;
mysql> GRANT ALL PRIVILEGES ON fitcrack.* TO 'fitcrack'@'localhost' IDENTIFIED BY 'mypassword';
```
As root, use Fitcrack installer:
```
./install_fitcrack.sh
```
And proceed according to your preferences...

![Installer](img/insta.png)

<a name="instdeb"></a>
## Step-by-step: Install on Debian 9 / Ubuntu 18.04 LTS

Open a **root** terminal, go to the directory with Fitcrack sources and proceed as follows.

### Debian 9: (Optional) Switch to MySQL
In Debian 9, MariaDB is used by default instead of MySQL community server.
If you wish to switch to MySQL, type:
```
wget https://dev.mysql.com/get/mysql-apt-config_0.8.10-1_all.deb
dpkg -i mysql-apt-config_0.8.10-1_all.deb
apt-get update
```
Otherwise, in the prerequisities below, you have to choose **libmariadb-dev**, instead of **libmysql-dev**, etc.

### Install prerequisities
```
apt-get install m4 make dh-autoreconf pkg-config git vim apache2 libapache2-mod-php mysql-server mysql-common libmysqlclient-dev zlibc zlib1g zlib1g-dev php php-xml php-mysql php-cli php-gd python python python3 python-mysqldb python3-pymysql python3-pip libapache2-mod-wsgi-py3 libssl-dev libcurl4-openssl-dev apache2-utils libboost1.62-all-dev pkg-config libnotify-dev
mysql_secure_installation # Set MySQL root password
a2enmod cgi # enable mod CGI
a2enmod rewrite # enable mod rewrite
a2enmod wsgi # enable mod wsgi
systemctl restart apache2
```
### Setup user and Database
```
useradd -m -c "BOINC Administrator" boincadm -s /bin/bash
mysql -u root -p
mysql> create database fitcrack;
mysql> GRANT ALL PRIVILEGES ON fitcrack.* TO 'fitcrack'@'localhost' IDENTIFIED BY 'mypassword';
```

### Install Fitcrack
```
./install_fitcrack.sh
```

<a name="instcentos"></a>
## Step-by-step: Install on CentOS/RHEL 7

Open a **root** terminal, go to the directory with Fitcrack sources and proceed as follows.

### SELINUX
The following tutorial assumes **SELINUX** is disabled.
If you wish to use SELINUX on Fitcrack server machine, you have to configure policies manually, or wait for an udpate of the tutorial.

### Add MariaDB 10 repository
Create file `/etc/yum.repos.d/MariaDB.repo` with the following contents:
```
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1
```

### Install prerequisities
Enable IUS, EPEL, and IUS repositories
```
yum install -y https://$(rpm -E '%{?centos:centos}%{!?centos:rhel}%{rhel}').iuscommunity.org/ius-release.rpm
yum install -y epel-release centos-release-scl
```

Install necessary packages:
```
yum install -y devtoolset-7 m4 libtool autoconf automake git vim httpd php php-mysql mod_wsgi mariadb-server mariadb-devel zlib libcurl-devel openssl-libs python python36 python36u-mod_wsgi python36u-setuptools MySQL-python python2-PyMySQL boost* pkgconfig libnotify
```
Set Python 3.6 as default Python3 version:
```
alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 60
```

```
easy_install-3.6 pip
systemctl start httpd.service
systemctl enable httpd.service
systemctl start mariadb
mysql_secure_installation # Set MariaDB root password
systemctl enable mariadb.service
```

### Setup user and Database
```
useradd -m -c "BOINC Administrator" boincadm -s /bin/bash
mysql -u root -p
mysql> create database fitcrack;
mysql> GRANT ALL PRIVILES ON fitcrack.* TO 'fitcrack'@'localhost' IDENTIFIED BY 'mypassword';
```

### Switch to GCC6 and Install Fitcrack
```
scl enable devtoolset-7 bash
./install_fitcrack.sh
```

<a name="oper"></a>
## Operating the server

The **default** login credentials to the WebAdmin are:
* login: ``fitcrack``
* password: ``FITCRACK``

At the end of the installation, the installer asks you if you wish to start
the server daemons. If you decide not to, you can do that manually as described below:

## Running the server

Login to the server as BOINC user (e.g. `boincadm`) and enter the project directory:
```
boincadm@myserver:~$ cd projects/fitcrack
```

### Get server status
```
boincadm@myserver:~/projects/fitcrack$ ./bin/status
```

### Start Fitcrack server
```
boincadm@myserver:~/projects/fitcrack$ ./bin/start
```

### Stop Fitcrack server
```
boincadm@myserver:~/projects/fitcrack$ ./bin/stop
```

## Optional: multiple workunits per hosts

In Fitcrack, it is possible to assign 2 (or more) workunits per node, and make a node compute a single one, while the others are downloading in backgroud. This reduces the overhead for traffic-extensive attacks - e.g. dictionary ttack with big dictionaries.

To achieve this behavior, in your project config, e.g. `/home/boincadm/fitcrack/config.xml` add in `<boinc><config>` section find the following line:
```
<max_wus_in_progress>1</max_wus_in_progress>
```
and replace it to:
```
<max_wus_in_progress>2</max_wus_in_progress>
```

and restart the server (as BOINC user):
```
boincadm@myserver:~$ cd projects/fitcrack
boincadm@myserver:~/projects/fitcrack$ ./bin/stop
boincadm@myserver:~/projects/fitcrack$ ./bin/start
```

Then on each node, you limit maximum concurrent workunits to 1 by creating `app_config.xml` file in your BOINC client project directory, e.g.:
* `C:\ProgramData\BOINC\projects\myserver_fitcrack` (Windows)
* `/var/lib/boinc-client/projects/myserver_fitcrack/app_config.xml` (Linux)
Please note, that the project directory is created automatically once you add the project to you BOINC client (e.g. via BOINC Manager).

To `app_config.xml` place the following contents:
```
<app_config>
<app>
<name>fitcrack</name>
<max_concurrent>1</max_concurrent>
<report_results_immediately/>
</app>
</app_config>
```
47 changes: 47 additions & 0 deletions boinc/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Specify a generic set of rules to help avoid line feed issues across
# various IDEs.
#

# Random stuff
* text=auto

# Source files
#
*.cpp text eol=lf
*.h text eol=lf
*.rc text eol=lf
*.php text eol=lf
*.xpm text eol=lf
*.cu text eol=lf
*.cl text eol=lf
*.c text eol=lf
*.hpp text eol=lf

# Project files
#
*.vcproj text eol=crlf
*.vcxproj text eol=crlf
*.sln text eol=crlf
*.rules text eol=crlf
*.bat text eol=crlf
*.cmd text eol=crlf
*.ac text eol=lf
*.am text eol=lf
*.in text eol=lf
*.m4 text eol=lf
*Makefile* text eol=lf
*.mk text eol=lf

# Commit Notes
#
checkin_notes text eol=lf
checkin_notes_2012 text eol=lf

# Misc files
#
*.txt text eol=lf
*.xml text eol=lf
*.po text eol=lf
*.log text eol=lf
*.rtf text eol=lf
*.rul text eol=crlf
Loading

0 comments on commit 10677ea

Please sign in to comment.