github pages

This commit is contained in:
PD 2017-10-02 21:31:41 +02:00
parent da5b0b0e7b
commit 5eed6fc61a
13 changed files with 878 additions and 0 deletions

0
docs/README.md Executable file

BIN
docs/icons/PythonPowered.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 945 B

BIN
docs/icons/gnu-head-tiny.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
docs/icons/mailman.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
docs/icons/mm-icon.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

230
docs/index.html Executable file

@ -0,0 +1,230 @@
<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html lang="en"> <!--<![endif]-->
<head>
<!-- Basic Page Needs
================================================== -->
<meta charset="utf-8">
<meta name="robots" content="index,follow" />
<title> Portspoof - A new approach to fight back port and service scanners.</title>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<meta name="description" content="Mangle your attackers' port scan results effectively. "/>
<meta name="keywords" content="port scanning, spoofing, spoof"/>
<link rel="shortcut icon" href="media/favicon.ico" type="image/x-icon" />
<!-- Mobile Specific Metas
================================================== -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<!-- CSS
================================================== -->
<link rel="stylesheet" href="stylesheets/base.css">
<link rel="stylesheet" href="stylesheets/skeleton.css">
<link rel="stylesheet" href="stylesheets/layout.css">
<link rel="stylesheet" href="stylesheets/custom.css">
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-12466584-7']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<div class="container">
<div class="sixteen columns navbar">
<h1 class="remove-bottom" ># Portspoof </h1>
</div>
<div class='sixteen columns navlinks'>
<ul>
<li><a href="#about">About</a>
</li>
<li><a href="https://github.com/drk1wi/portspoof/">Repo</a>
</li>
<li><a href="https://github.com/drk1wi/portspoof/archive/master.zip">Download</a>
</li>
<li><a href="#features">Features</a>
</li>
<li><a href="#license">License & Log</a>
</li>
<li><a href="https://github.com/drk1wi/portspoof/blob/master/DOCS">Documentation</a>
</li>
</ul>
</div>
<div class="twelve columns offset-by-one content">
&nbsp;
<div class="doc-section" id="about">
<h3 >About Portspoof</h3>
<br>
<p> The Portspoof program primary goal is to enhance your systems security through a set of new camouflage techniques. As a result of applying them your attackers' port scan result will become entirely mangled and to very significant extent meaningless. </p>
<strong>Techniques used to achieve this:</strong>
<br> <br>
<ul class="square"><li>
<strong>All configured TCP ports are always open</strong>
</ul></li>
<p>Instead of informing an attacker that a particular port is in a CLOSED or FILTERED state a system running Portspoof will return SYN+ACK for every connection attempt.</p>
<p><u>Result</u>: As a result it is impractical to use stealth (SYN, ACK, etc.) port scanning against your system, since all ports are always reported as OPEN.
With this approach it is really difficult to determine if a valid software is listening on a particular port (check out the screenshots).</p>
<ul class="square"><li>
<strong>Every open TCP port emulates a valid services</strong>
</ul></li>
<p>Portspoof has a huge dynamic service signature database, that will be used to generate responses to your offenders scanning software service probes.</p>
<p>Scanning software usually tries to determine a service that is running on an open port. This step is mandatory if one would want to identify port numbers on which you are running your services on a system behind the Portspoof.
For this reason Portspoof will respond to every service probe with a valid service signature, that is dynamically generated based on a service signature regular expression database. </p>
<p><u>Result</u>: As a result an attacker will not be able to determine which port numbers your system is truly using. </p>
<h5><strong>Reverse exploitation with Portspoof:</strong></h5>
<p>Portspoof can be used as an 'Exploitation Framework Frontend', that turns your system into responsive and aggressive machine. In practice this usually means exploiting your attackers' tools and exploits. </p>
<p>At the moment there are few example exploits in the configuration file (portspoof.conf). One of them exploits Nmap 6.25 default script.</p>
<h5><strong>Overview:</strong></h5>
<p>Portspoof is meant to be a lightweight, fast, portable and secure addition to the any firewall system or security system.
The general goal of the program is to make the reconessaince phase slow and bothersome for your attackers as much it is only possible.
This is quite a change to the standard 5s Nmap scan, that will give a full view of your systems running services.</p>
<p>By using all of the above mentioned techniques together:</br>
<ul class="square">
<li>your attackers will have a tough time while trying to identify all of your listening services.</li>
<li>the only way to determine if a service is emulated is through a protocol probe (imagine probing protocols for 65k open ports!).</li>
<li>it takes more than 8 hours and 200MB of sent data in order to get all of the service banners for your system ( nmap -sV -p - equivalent).</li>
</ul>
<hr class="large" />
<div class="doc-section">
<h3>Screenshots</h3>
<h4>Nmap port scan results for TCP ports 1:65353 (only one service is real):</h4>
<a href="media/nmap_scan.jpg"><img width="523" src='media/nmap_scan.jpg'></img></a>
</div>
<hr class="large" />
<h3>Videos</h3>
<div class="doc-section">
<h4>Nmap scan against system protected by Portspoof:</h4>
<iframe width="523" height="294" src="http://www.youtube.com/embed/oDBvXSMf3wU?wmode=transparent&rel=0" frameborder="0" allowfullscreen></iframe>
</p>
<h4>Exploiting your attackers automated exploit scripts with Portspoof:</h4>
<iframe width="523" height="294" src="http://www.youtube.com/embed/YDnwqy7a1zk?wmode=transparent&rel=0" frameborder="0" allowfullscreen></iframe>
</p>
<h4>Exploiting your attackers Nmap NSE script with Portspoof:</h4>
<iframe width="523" height="294" src="http://www.youtube.com/embed/iyTmxRUaQ8M?wmode=transparent&rel=0" frameborder="0" allowfullscreen></iframe>
</p>
</div>
<hr class="large" />
<div class="doc-section" id="features">
<h3>Features</h3>
<p><h5> The most important features that Portspoof has: </h5></p>
<p>
- Portspoof is a userland software and does not require root privileges ! </br>
- Binds to just one tcp port per a running instance </br>
- Easily customizable through your iptables rules </br>
- Marginal CPU/memory usage (multithreaded) </br>
- More than 9000 dynamic service signatures are supported ! </br>
</p>
Check out the <a href="https://github.com/drk1wi/portspoof/blob/master/DOCS">documentation</a> page for further details.
</p>
</div>
<hr class="large"/>
<h3>Log</h3>
<div class="doc-section" id="license">
<p> For full log details please visit <a href='https://github.com/drk1wi/portspoof/blob/master/ChangeLog'>https://github.com/drk1wi/portspoof</a></p>
<p>
<strong>1.1 - 1/01/2014 - Linux</strong></br>
* Minor release.</br>
* Updated reverse regular expression generation engine (used for generting bogus service signatures). </br>
* Over 9000 service signatures in the portspoof_signatures file.. </br>
* Better memory management.</br>
</br>
<strong>1.0 - 02/08/2013 - Linux</strong></br>
* Major release. </br>
* Ported to C++. </br>
* Example NMAP NSE exploit, McAffe UTF7 XSS, etc. exploits added . </br>
* Fuzzer functionality added.</br>
* Many minor improvements and enhancements have been made</br>
</br>
<strong>0.3 - 28/09/2012 - Linux </strong> </br>
* Configuration file support. </br>
* Minor bug fixes and improvements. </br>
* Droppped BSD support due to time constraints (will resume in future - maybe).</br>
* 8000 port signatures supported </br>
</br>
<strong>0.2 - 11/08/2012 - Linux/BSD </strong></br>
Note: BSD implementation is still experimental </br>
* Alerts can be logged for further investigation. </br>
* Fixed BSD startup bug. </br>
* Automake files fixed. </br>
* Other minor bugs fixed. </br>
</br>
<strong>0.1 - 02/08/2012 - Linux/BSD</strong></br>
* First stable release for Linux.</br>
* Multithreaded.</br>
* 1866 port signatures supported.</br>
</p>
</div>
<hr class="large" />
<div class="doc-section">
<h3>License</h3>
<p>Portspoof is a free software distributed under GNU GPL version 2 license. <p>All the relevant details can be found <a href="https://github.com/drk1wi/portspoof/blob/master/COPYING">here</a></p>
&nbsp;
</div>
<hr class="large" />
<div class="doc-section">
<h3>Support</h3>
<p>If you like Portspoof and would like to support this project then please aid me with a cup of coffee :) </p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----
">
<input type="image" src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal The safer, easier way to pay online.">
<img alt="" border="0" src="https://www.paypalobjects.com/pl_PL/i/scr/pixel.gif" width="1" height="1">
</form>
</div>
<hr class="large" />
<div class='twelve columns offset-by-one'><p><citie>Portspoof - Piotr [at] Duszynski.eu PGP <a href="media/pduszynski.asc">key</a> @2012 All rights reserved </citie></p>
</div>
</div>
</body>
</html>

BIN
docs/media/favicon.ico Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
docs/media/nmap_scan.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

30
docs/media/pduszynski.asc Executable file

@ -0,0 +1,30 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: STS
mQENBE5lNcoBCADbTBgNDtK8VH+ewaJJAqk7d1r/AeV8rsBNueHFctHFtqMbJ6Dt
Pw4JHzOBw8naycmVlJN0DNChGoO9uSNfCQ0Y3h3gEraK/uuBwOTy7krgmHEHd5u6
ttqp3PmVcjlPq03FDBkmkpWM56WvFwtNpY4wL2ImFRSbkdiKLb2us0xOZrbybZMs
z59Jlkk8aksfqWhEM1lDECNhPuJrJ8n+XC8om8IkXiW7OeIlKMmRot2jpVwpA3Aw
iYYZa1PxGgrDbiaP/ypS6hcIk0JeX1oNNwEpvusnGlRnkS3cNmDfJhb81v9aQ/z2
qPuJS7WYwZiev2F0v7AWEAkio+pHTPuaKcTTABEBAAG0JFBpb3RyIER1c3p5bnNr
aSA8cGlvdHJAZHVzenluc2tpLmV1PokBPgQTAQIAKAUCTmU1ygIbIwUJCWYBgAYL
CQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQclh0luzNNvPwOQf/dBnvtCMHcLZ0
AqRipwx5NvZzjVeLepZCiKs9Ck58CInnWSrM9QbIxQlxFNklJZ++w6VbDr8p+o3R
15K1XMsm/U5Nx6ZMws2NdeHujQPHml3hJGeB/IsBdZ0MUdmvDdkCYFmSFv1N6KPt
jzkItUbgvNv8AiXHLyXbNX/zv3kw9txB34+c2YtkWJ407jfgRf2ElSVtYuDJzf7c
ZwRoBSTpeQ4tXadTiweyHsX1qyTZsGdmjNGvr5rLKgxtysNF+m0yM+jmQBW3w0Ln
mjZQyLyeryM7JKtQ3zpV7St4LyJcY6VVmdFWFRHScpIzzKiQ7yaILOQ/dumLhZMD
vh7y/9J4NrkBDQROZTXKAQgAogLXYeR0NVjy+qMqo3S6ZCTPryawZtyarDlG/sW+
4KfJvS7g0dKTeWPTzZzC9u2duqKlTw4JCXiJ0V1VJfoYjJe5jrgF+s37L+YXptRm
pNHmQBMtH3TJakQWyFRnlRdxiNUTg9UKxR3ETneBMvo96IIsf2I8oqaW+5fNBr+Q
ZmJDuViWIGxdJtI7KiorqZ3kZDhz6KBf/Is5yhCaYkLTMke0tsEFkeYXwt0G4AxA
RJvo3+4j9COxuiTw/W17WkTFxl/4ofj/WDuW7+gYkL1TWo2a1iMnkPve8AR+zSAz
l1vMqdBDymEe7+sMeL9DwqU4dflKpa0FOtGg9Y8ODolzfQARAQABiQElBBgBAgAP
BQJOZTXKAhsMBQkJZgGAAAoJEHJYdJbszTbzg5wH/045rrFEzaRloT5Q+vcy1byA
GUK2fdgRDgj2oU8THBSyRgW/uPsEG0gwlAW8IMps6Dw4rESZrGIAF9ChdQyScwS7
ue3qkkBOqn33azGgiGnmtiZkCQegVqcKZ6L5TlWfaXEn7nI85jRjhCJUM4NgDADz
X9WMXGNCsFPMIKyTmws4raR9Qg6P4rnNrb1PeWNo02JQHVWoLQLTrw4tG8wQ3AjU
7OUiOukBXJdR2vRa/H2xk+T0Sa0d+8B4P5TRUrrkI79yomzL2H6o+g0LB7RIsbzI
xg2pGGUjJhf+Y4sqG/UmprGfrVqvBgMjsXPj+IrtCxmWfTZumuGsBMfYzcV9MME=
=T912
-----END PGP PUBLIC KEY BLOCK-----

269
docs/stylesheets/base.css Executable file

@ -0,0 +1,269 @@
/*
* Skeleton V1.2
* Copyright 2011, Dave Gamache
* www.getskeleton.com
* Free to use under the MIT license.
* http://www.opensource.org/licenses/mit-license.php
* 6/20/2012
*/
/* Table of Content
==================================================
#Reset & Basics
#Basic Styles
#Site Styles
#Typography
#Links
#Lists
#Images
#Buttons
#Forms
#Misc */
/* #Reset & Basics (Inspired by E. Meyers)
================================================== */
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline; }
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
display: block; }
body {
line-height: 1; }
ol, ul {
list-style: none; }
blockquote, q {
quotes: none; }
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none; }
table {
border-collapse: collapse;
border-spacing: 0; }
/* #Basic Styles
================================================== */
body {
background: #fff;
font: 14px/21px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
color: #444;
-webkit-font-smoothing: antialiased; /* Fix for webkit rendering */
-webkit-text-size-adjust: 100%;
}
/* #Typography
================================================== */
h1, h2, h3, h4, h5, h6 {
color: #181818;
font-family: "Georgia", "Times New Roman", serif;
font-weight: normal; }
h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { font-weight: inherit; }
h1 { font-size: 46px; line-height: 50px; margin-bottom: 14px;}
h2 { font-size: 35px; line-height: 40px; margin-bottom: 10px; }
h3 { font-size: 28px; line-height: 34px; margin-bottom: 8px; }
h4 { font-size: 21px; line-height: 30px; margin-bottom: 4px; }
h5 { font-size: 17px; line-height: 24px; }
h6 { font-size: 14px; line-height: 21px; }
.subheader { color: #777; }
p { margin: 0 0 20px 0; }
p img { margin: 0; }
p.lead { font-size: 21px; line-height: 27px; color: #777; }
em { font-style: italic; }
strong { font-weight: bold; color: #333; }
small { font-size: 80%; }
/* Blockquotes */
blockquote, blockquote p { font-size: 17px; line-height: 24px; color: #777; font-style: italic; }
blockquote { margin: 0 0 20px; padding: 9px 20px 0 19px; border-left: 1px solid #ddd; }
blockquote cite { display: block; font-size: 12px; color: #555; }
blockquote cite:before { content: "\2014 \0020"; }
blockquote cite a, blockquote cite a:visited, blockquote cite a:visited { color: #555; }
hr { border: solid #ddd; border-width: 1px 0 0; clear: both; margin: 10px 0 30px; height: 0; }
/* #Links
================================================== */
a, a:visited { color: #333; text-decoration: underline; outline: 0; }
a:hover, a:focus { color: #000; }
p a, p a:visited { line-height: inherit; }
/* #Lists
================================================== */
ul, ol { margin-bottom: 20px; }
ul { list-style: none outside; }
ol { list-style: decimal; }
ol, ul.square, ul.circle, ul.disc { margin-left: 30px; }
ul.square { list-style: square outside; }
ul.circle { list-style: circle outside; }
ul.disc { list-style: disc outside; }
ul ul, ul ol,
ol ol, ol ul { margin: 4px 0 5px 30px; font-size: 90%; }
ul ul li, ul ol li,
ol ol li, ol ul li { margin-bottom: 6px; }
li { line-height: 18px; margin-bottom: 12px; }
ul.large li { line-height: 21px; }
li p { line-height: 21px; }
/* #Images
================================================== */
img.scale-with-grid {
max-width: 100%;
height: auto; }
/* #Buttons
================================================== */
.button,
button,
input[type="submit"],
input[type="reset"],
input[type="button"] {
background: #eee; /* Old browsers */
background: #eee -moz-linear-gradient(top, rgba(255,255,255,.2) 0%, rgba(0,0,0,.2) 100%); /* FF3.6+ */
background: #eee -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.2)), color-stop(100%,rgba(0,0,0,.2))); /* Chrome,Safari4+ */
background: #eee -webkit-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* Chrome10+,Safari5.1+ */
background: #eee -o-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* Opera11.10+ */
background: #eee -ms-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* IE10+ */
background: #eee linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* W3C */
border: 1px solid #aaa;
border-top: 1px solid #ccc;
border-left: 1px solid #ccc;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
color: #444;
display: inline-block;
font-size: 11px;
font-weight: bold;
text-decoration: none;
text-shadow: 0 1px rgba(255, 255, 255, .75);
cursor: pointer;
margin-bottom: 20px;
line-height: normal;
padding: 8px 10px;
font-family: "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; }
.button:hover,
button:hover,
input[type="submit"]:hover,
input[type="reset"]:hover,
input[type="button"]:hover {
color: #222;
background: #ddd; /* Old browsers */
background: #ddd -moz-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); /* FF3.6+ */
background: #ddd -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.3)), color-stop(100%,rgba(0,0,0,.3))); /* Chrome,Safari4+ */
background: #ddd -webkit-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* Chrome10+,Safari5.1+ */
background: #ddd -o-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* Opera11.10+ */
background: #ddd -ms-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* IE10+ */
background: #ddd linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* W3C */
border: 1px solid #888;
border-top: 1px solid #aaa;
border-left: 1px solid #aaa; }
.button:active,
button:active,
input[type="submit"]:active,
input[type="reset"]:active,
input[type="button"]:active {
border: 1px solid #666;
background: #ccc; /* Old browsers */
background: #ccc -moz-linear-gradient(top, rgba(255,255,255,.35) 0%, rgba(10,10,10,.4) 100%); /* FF3.6+ */
background: #ccc -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.35)), color-stop(100%,rgba(10,10,10,.4))); /* Chrome,Safari4+ */
background: #ccc -webkit-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* Chrome10+,Safari5.1+ */
background: #ccc -o-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* Opera11.10+ */
background: #ccc -ms-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* IE10+ */
background: #ccc linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* W3C */ }
.button.full-width,
button.full-width,
input[type="submit"].full-width,
input[type="reset"].full-width,
input[type="button"].full-width {
width: 100%;
padding-left: 0 !important;
padding-right: 0 !important;
text-align: center; }
/* Fix for odd Mozilla border & padding issues */
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/* #Forms
================================================== */
form {
margin-bottom: 20px; }
fieldset {
margin-bottom: 20px; }
input[type="text"],
input[type="password"],
input[type="email"],
textarea,
select {
border: 1px solid #ccc;
padding: 6px 4px;
outline: none;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2px;
font: 13px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
color: #777;
margin: 0;
width: 210px;
max-width: 100%;
display: block;
margin-bottom: 20px;
background: #fff; }
select {
padding: 0; }
input[type="text"]:focus,
input[type="password"]:focus,
input[type="email"]:focus,
textarea:focus {
border: 1px solid #aaa;
color: #444;
-moz-box-shadow: 0 0 3px rgba(0,0,0,.2);
-webkit-box-shadow: 0 0 3px rgba(0,0,0,.2);
box-shadow: 0 0 3px rgba(0,0,0,.2); }
textarea {
min-height: 60px; }
label,
legend {
display: block;
font-weight: bold;
font-size: 13px; }
select {
width: 220px; }
input[type="checkbox"] {
display: inline; }
label span,
legend span {
font-weight: normal;
font-size: 13px;
color: #444; }
/* #Misc
================================================== */
.remove-bottom { margin-bottom: 0 !important; }
.half-bottom { margin-bottom: 10px !important; }
.add-bottom { margin-bottom: 20px !important; }

49
docs/stylesheets/custom.css Executable file

@ -0,0 +1,49 @@
.container .navbar {
border-top: solid 1px #CCCCCC;
color: #808080;
background:#355568;
height: 48px;
}
.container .navlinks{
margin-top: 5px;
background: white;
border-bottom: solid 1px #CCCCCC;
}
.container .navbar h1 {
text-decoration: none;
color: white;
font-weight: normal
}
.container .navlinks ul {
list-style: none;
margin: 0px 0px 0px 0px;
padding-right: 5px;
text-align:right;
}
.container .navlinks ul li {
display: inline;
font-size: 18px;
padding-right: 5px;
}
.container .navlinks ul li a {
padding-left: 5px;
text-decoration: none;
color: black;
font-weight: normal;
}
.container .navlinks ul li a:hover {
color: grey;
}

58
docs/stylesheets/layout.css Executable file

@ -0,0 +1,58 @@
/*
* Skeleton V1.2
* Copyright 2011, Dave Gamache
* www.getskeleton.com
* Free to use under the MIT license.
* http://www.opensource.org/licenses/mit-license.php
* 6/20/2012
*/
/* Table of Content
==================================================
#Site Styles
#Page Styles
#Media Queries
#Font-Face */
/* #Site Styles
================================================== */
/* #Page Styles
================================================== */
/* #Media Queries
================================================== */
/* Smaller than standard 960 (devices and browsers) */
@media only screen and (max-width: 959px) {}
/* Tablet Portrait size to standard 960 (devices and browsers) */
@media only screen and (min-width: 768px) and (max-width: 959px) {}
/* All Mobile Sizes (devices and browser) */
@media only screen and (max-width: 767px) {}
/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
@media only screen and (min-width: 480px) and (max-width: 767px) {}
/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
@media only screen and (max-width: 479px) {}
/* #Font-Face
================================================== */
/* This is the proper syntax for an @font-face file
Just create a "fonts" folder at the root,
copy your FontName into code below and remove
comment brackets */
/* @font-face {
font-family: 'FontName';
src: url('../fonts/FontName.eot');
src: url('../fonts/FontName.eot?iefix') format('eot'),
url('../fonts/FontName.woff') format('woff'),
url('../fonts/FontName.ttf') format('truetype'),
url('../fonts/FontName.svg#webfontZam02nTh') format('svg');
font-weight: normal;
font-style: normal; }
*/

242
docs/stylesheets/skeleton.css vendored Executable file

@ -0,0 +1,242 @@
/*
* Skeleton V1.2
* Copyright 2011, Dave Gamache
* www.getskeleton.com
* Free to use under the MIT license.
* http://www.opensource.org/licenses/mit-license.php
* 6/20/2012
*/
/* Table of Contents
==================================================
#Base 960 Grid
#Tablet (Portrait)
#Mobile (Portrait)
#Mobile (Landscape)
#Clearing */
/* #Base 960 Grid
================================================== */
.container { position: relative; width: 960px; margin: 0 auto; padding: 0; }
.container .column,
.container .columns { float: left; display: inline; margin-left: 10px; margin-right: 10px; }
.row { margin-bottom: 20px; }
/* Nested Column Classes */
.column.alpha, .columns.alpha { margin-left: 0; }
.column.omega, .columns.omega { margin-right: 0; }
/* Base Grid */
.container .one.column,
.container .one.columns { width: 40px; }
.container .two.columns { width: 100px; }
.container .three.columns { width: 160px; }
.container .four.columns { width: 220px; }
.container .five.columns { width: 280px; }
.container .six.columns { width: 340px; }
.container .seven.columns { width: 400px; }
.container .eight.columns { width: 460px; }
.container .nine.columns { width: 520px; }
.container .ten.columns { width: 580px; }
.container .eleven.columns { width: 640px; }
.container .twelve.columns { width: 700px; }
.container .thirteen.columns { width: 760px; }
.container .fourteen.columns { width: 820px; }
.container .fifteen.columns { width: 880px; }
.container .sixteen.columns { width: 940px; }
.container .one-third.column { width: 300px; }
.container .two-thirds.column { width: 620px; }
/* Offsets */
.container .offset-by-one { padding-left: 60px; }
.container .offset-by-two { padding-left: 120px; }
.container .offset-by-three { padding-left: 180px; }
.container .offset-by-four { padding-left: 240px; }
.container .offset-by-five { padding-left: 300px; }
.container .offset-by-six { padding-left: 360px; }
.container .offset-by-seven { padding-left: 420px; }
.container .offset-by-eight { padding-left: 480px; }
.container .offset-by-nine { padding-left: 540px; }
.container .offset-by-ten { padding-left: 600px; }
.container .offset-by-eleven { padding-left: 660px; }
.container .offset-by-twelve { padding-left: 720px; }
.container .offset-by-thirteen { padding-left: 780px; }
.container .offset-by-fourteen { padding-left: 840px; }
.container .offset-by-fifteen { padding-left: 900px; }
/* #Tablet (Portrait)
================================================== */
/* Note: Design for a width of 768px */
@media only screen and (min-width: 768px) and (max-width: 959px) {
.container { width: 768px; }
.container .column,
.container .columns { margin-left: 10px; margin-right: 10px; }
.column.alpha, .columns.alpha { margin-left: 0; margin-right: 10px; }
.column.omega, .columns.omega { margin-right: 0; margin-left: 10px; }
.alpha.omega { margin-left: 0; margin-right: 0; }
.container .one.column,
.container .one.columns { width: 28px; }
.container .two.columns { width: 76px; }
.container .three.columns { width: 124px; }
.container .four.columns { width: 172px; }
.container .five.columns { width: 220px; }
.container .six.columns { width: 268px; }
.container .seven.columns { width: 316px; }
.container .eight.columns { width: 364px; }
.container .nine.columns { width: 412px; }
.container .ten.columns { width: 460px; }
.container .eleven.columns { width: 508px; }
.container .twelve.columns { width: 556px; }
.container .thirteen.columns { width: 604px; }
.container .fourteen.columns { width: 652px; }
.container .fifteen.columns { width: 700px; }
.container .sixteen.columns { width: 748px; }
.container .one-third.column { width: 236px; }
.container .two-thirds.column { width: 492px; }
/* Offsets */
.container .offset-by-one { padding-left: 48px; }
.container .offset-by-two { padding-left: 96px; }
.container .offset-by-three { padding-left: 144px; }
.container .offset-by-four { padding-left: 192px; }
.container .offset-by-five { padding-left: 240px; }
.container .offset-by-six { padding-left: 288px; }
.container .offset-by-seven { padding-left: 336px; }
.container .offset-by-eight { padding-left: 384px; }
.container .offset-by-nine { padding-left: 432px; }
.container .offset-by-ten { padding-left: 480px; }
.container .offset-by-eleven { padding-left: 528px; }
.container .offset-by-twelve { padding-left: 576px; }
.container .offset-by-thirteen { padding-left: 624px; }
.container .offset-by-fourteen { padding-left: 672px; }
.container .offset-by-fifteen { padding-left: 720px; }
}
/* #Mobile (Portrait)
================================================== */
/* Note: Design for a width of 320px */
@media only screen and (max-width: 767px) {
.container { width: 300px; }
.container .columns,
.container .column { margin: 0; }
.container .one.column,
.container .one.columns,
.container .two.columns,
.container .three.columns,
.container .four.columns,
.container .five.columns,
.container .six.columns,
.container .seven.columns,
.container .eight.columns,
.container .nine.columns,
.container .ten.columns,
.container .eleven.columns,
.container .twelve.columns,
.container .thirteen.columns,
.container .fourteen.columns,
.container .fifteen.columns,
.container .sixteen.columns,
.container .one-third.column,
.container .two-thirds.column { width: 300px; }
/* Offsets */
.container .offset-by-one,
.container .offset-by-two,
.container .offset-by-three,
.container .offset-by-four,
.container .offset-by-five,
.container .offset-by-six,
.container .offset-by-seven,
.container .offset-by-eight,
.container .offset-by-nine,
.container .offset-by-ten,
.container .offset-by-eleven,
.container .offset-by-twelve,
.container .offset-by-thirteen,
.container .offset-by-fourteen,
.container .offset-by-fifteen { padding-left: 0; }
}
/* #Mobile (Landscape)
================================================== */
/* Note: Design for a width of 480px */
@media only screen and (min-width: 480px) and (max-width: 767px) {
.container { width: 420px; }
.container .columns,
.container .column { margin: 0; }
.container .one.column,
.container .one.columns,
.container .two.columns,
.container .three.columns,
.container .four.columns,
.container .five.columns,
.container .six.columns,
.container .seven.columns,
.container .eight.columns,
.container .nine.columns,
.container .ten.columns,
.container .eleven.columns,
.container .twelve.columns,
.container .thirteen.columns,
.container .fourteen.columns,
.container .fifteen.columns,
.container .sixteen.columns,
.container .one-third.column,
.container .two-thirds.column { width: 420px; }
}
/* #Clearing
================================================== */
/* Self Clearing Goodness */
.container:after { content: "\0020"; display: block; height: 0; clear: both; visibility: hidden; }
/* Use clearfix class on parent to clear nested columns,
or wrap each row of columns in a <div class="row"> */
.clearfix:before,
.clearfix:after,
.row:before,
.row:after {
content: '\0020';
display: block;
overflow: hidden;
visibility: hidden;
width: 0;
height: 0; }
.row:after,
.clearfix:after {
clear: both; }
.row,
.clearfix {
zoom: 1; }
/* You can also use a <br class="clear" /> to clear columns */
.clear {
clear: both;
display: block;
overflow: hidden;
visibility: hidden;
width: 0;
height: 0;
}