mirror of
https://github.com/adulau/netbeacon.git
synced 2024-11-25 03:27:11 +00:00
Create gh-pages branch via GitHub
This commit is contained in:
commit
544782441d
9 changed files with 657 additions and 0 deletions
BIN
images/bg_hr.png
Normal file
BIN
images/bg_hr.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 943 B |
BIN
images/blacktocat.png
Normal file
BIN
images/blacktocat.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
BIN
images/icon_download.png
Normal file
BIN
images/icon_download.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
images/sprite_download.png
Normal file
BIN
images/sprite_download.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
154
index.html
Normal file
154
index.html
Normal file
|
@ -0,0 +1,154 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset='utf-8' />
|
||||
<meta http-equiv="X-UA-Compatible" content="chrome=1" />
|
||||
<meta name="description" content="Netbeacon : netbeacon - monitoring your network capture, NIDS or network analysis process" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
|
||||
|
||||
<title>Netbeacon</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!-- HEADER -->
|
||||
<div id="header_wrap" class="outer">
|
||||
<header class="inner">
|
||||
<a id="forkme_banner" href="https://github.com/adulau/netbeacon">View on GitHub</a>
|
||||
|
||||
<h1 id="project_title">Netbeacon</h1>
|
||||
<h2 id="project_tagline">netbeacon - monitoring your network capture, NIDS or network analysis process</h2>
|
||||
|
||||
<section id="downloads">
|
||||
<a class="zip_download_link" href="https://github.com/adulau/netbeacon/zipball/master">Download this project as a .zip file</a>
|
||||
<a class="tar_download_link" href="https://github.com/adulau/netbeacon/tarball/master">Download this project as a tar.gz file</a>
|
||||
</section>
|
||||
</header>
|
||||
</div>
|
||||
|
||||
<!-- MAIN CONTENT -->
|
||||
<div id="main_content_wrap" class="outer">
|
||||
<section id="main_content" class="inner">
|
||||
<h1>netbeacon - monitoring your network capture</h1>
|
||||
|
||||
<p>netbeacon is a set of free software tools to send beacons over
|
||||
the network to test the accuracy and the precision of your network
|
||||
capture framework. With netbeacon you can test the following properties
|
||||
of your network capture (e.g. for honeypot packet data capture,
|
||||
data interception devices, NIDS, DPI ...):</p>
|
||||
|
||||
<ul>
|
||||
<li>How long it takes for a packet to reach your monitoring.</li>
|
||||
<li>Time inconsistencies between devices.</li>
|
||||
<li>Finding missing packets or its (re)ordering.</li>
|
||||
<li>Watchdog to verify an operational network capture.</li>
|
||||
</ul><h2>netbeacon - packet format</h2>
|
||||
|
||||
<p>The netbeacon format is a simple ASCII format encapsulated in an UDP
|
||||
packet. The format is the following:</p>
|
||||
|
||||
<pre><code>header;epoch;sequence;hmac
|
||||
</code></pre>
|
||||
|
||||
<ul>
|
||||
<li>The current header is nb</li>
|
||||
<li>The epoch value (in UTC format)</li>
|
||||
<li>The sequence an unsigned integer</li>
|
||||
<li>and the HMAC-SHA1 signature.</li>
|
||||
</ul><p>Each message is encapsulated in UDP and by default using port 12345.</p>
|
||||
|
||||
<p>A pre-shared key (PSK) is agreed between the netbeacon sender
|
||||
and netbeacon recipient to ensure packet integrity using HMAC (SHA1).
|
||||
There is a default key "netbeacon" but we highly recommend to set your
|
||||
own for your systems.</p>
|
||||
|
||||
<h3>sample netbeacon messages</h3>
|
||||
|
||||
<p>Here is a serie of 3 netbeacon messages extracted from 3 UDP packets:</p>
|
||||
|
||||
<pre><code> nb;1354960619;101;335540bf3dae684c3d5cd5795fd09b9097bad656
|
||||
nb;1354960619;102;56fc82c066644f179b58eb84a47e577bf92adc47
|
||||
nb;1354960619;103;854207f54c1c4be97bdf4cd4a0d1068731848698
|
||||
</code></pre>
|
||||
|
||||
<h2>netbeacon - usage</h2>
|
||||
|
||||
<h3>How to use it?</h3>
|
||||
|
||||
<p>On a device where you able to send packets on the monitored/tapped network, you
|
||||
can send beacons using nb_send.py</p>
|
||||
|
||||
<pre><code>python nb_send.py -s -i 3 -d 1.2.3.4
|
||||
</code></pre>
|
||||
|
||||
<p>Where you are processing your network capture, you can run the following:</p>
|
||||
|
||||
<pre><code>python nb_collect.py -i dag0 | python nb_verify.py -s -t
|
||||
</code></pre>
|
||||
|
||||
<h3>nb_send.py</h3>
|
||||
|
||||
<pre><code> Usage: nb_send.py [options]
|
||||
|
||||
Options:
|
||||
-h, --help show this help message and exit
|
||||
-p PSK, --psk=PSK pre-shared key used by the HMAC-SHA1 (default:
|
||||
netbeacon)
|
||||
-s, --storeseq store sequence and validate sequence
|
||||
-i ITERATION, --iteration=ITERATION
|
||||
set the number of interation for sending the netbeacon
|
||||
-d DESTINATION, --destination=DESTINATION
|
||||
set the destination IPv4 address (default: 127.0.0.1)
|
||||
-v, --verbose output netbeacon sent
|
||||
</code></pre>
|
||||
|
||||
<h3>nb_collect.py</h3>
|
||||
|
||||
<pre><code> Usage: nb_collect.py [options]
|
||||
|
||||
Options:
|
||||
-h, --help show this help message and exit
|
||||
-i INTERFACE, --interface=INTERFACE
|
||||
live capture on interface (default:lo)
|
||||
-r FILEDUMP, --read=FILEDUMP
|
||||
read pcap file
|
||||
-e EXTENDED, --extended=EXTENDED
|
||||
enable extended format including pcap timestamp
|
||||
</code></pre>
|
||||
|
||||
<h3>nb_verify.py</h3>
|
||||
|
||||
<pre><code> Usage: nb_verify.py [options] <netbeacon messages>
|
||||
|
||||
Options:
|
||||
-h, --help show this help message and exit
|
||||
-t, --timedelta show timedelta
|
||||
-s, --storeseq store sequence and validate sequence
|
||||
-p PSK, --psk=PSK pre-shared key used by the HMAC-SHA1 (default: netbeacon)
|
||||
</code></pre>
|
||||
|
||||
<h1>License</h1>
|
||||
|
||||
<p>netbeacon is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.</p>
|
||||
|
||||
<p>Copyright (c) 2012 Alexandre Dulaunoy - <a href="https://github.com/adulau/">https://github.com/adulau/</a></p>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<!-- FOOTER -->
|
||||
<div id="footer_wrap" class="outer">
|
||||
<footer class="inner">
|
||||
<p class="copyright">Netbeacon maintained by <a href="https://github.com/adulau">adulau</a></p>
|
||||
<p>Published with <a href="http://pages.github.com">GitHub Pages</a></p>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
1
javascripts/main.js
Normal file
1
javascripts/main.js
Normal file
|
@ -0,0 +1 @@
|
|||
console.log('This would be the main JS file.');
|
1
params.json
Normal file
1
params.json
Normal file
|
@ -0,0 +1 @@
|
|||
{"name":"Netbeacon","google":"","tagline":"netbeacon - monitoring your network capture, NIDS or network analysis process","body":"\r\nnetbeacon - monitoring your network capture\r\n===========================================\r\n\r\nnetbeacon is a set of free software tools to send beacons over\r\nthe network to test the accuracy and the precision of your network\r\ncapture framework. With netbeacon you can test the following properties\r\nof your network capture (e.g. for honeypot packet data capture,\r\ndata interception devices, NIDS, DPI ...):\r\n\r\n- How long it takes for a packet to reach your monitoring.\r\n- Time inconsistencies between devices.\r\n- Finding missing packets or its (re)ordering.\r\n- Watchdog to verify an operational network capture.\r\n\r\nnetbeacon - packet format\r\n-------------------------\r\n\r\nThe netbeacon format is a simple ASCII format encapsulated in an UDP\r\npacket. The format is the following:\r\n\r\n header;epoch;sequence;hmac\r\n\r\n* The current header is nb\r\n* The epoch value (in UTC format)\r\n* The sequence an unsigned integer\r\n* and the HMAC-SHA1 signature.\r\n\r\nEach message is encapsulated in UDP and by default using port 12345.\r\n\r\nA pre-shared key (PSK) is agreed between the netbeacon sender\r\nand netbeacon recipient to ensure packet integrity using HMAC (SHA1).\r\nThere is a default key \"netbeacon\" but we highly recommend to set your\r\nown for your systems.\r\n\r\n### sample netbeacon messages ###\r\n\r\nHere is a serie of 3 netbeacon messages extracted from 3 UDP packets:\r\n \r\n nb;1354960619;101;335540bf3dae684c3d5cd5795fd09b9097bad656\r\n nb;1354960619;102;56fc82c066644f179b58eb84a47e577bf92adc47\r\n nb;1354960619;103;854207f54c1c4be97bdf4cd4a0d1068731848698\r\n\r\nnetbeacon - usage\r\n-----------------\r\n\r\n### How to use it? ###\r\n\r\nOn a device where you able to send packets on the monitored/tapped network, you\r\ncan send beacons using nb_send.py\r\n\r\n python nb_send.py -s -i 3 -d 1.2.3.4\r\n\r\nWhere you are processing your network capture, you can run the following:\r\n\r\n python nb_collect.py -i dag0 | python nb_verify.py -s -t\r\n\r\n### nb_send.py ###\r\n\r\n Usage: nb_send.py [options]\r\n\r\n Options:\r\n -h, --help show this help message and exit\r\n -p PSK, --psk=PSK pre-shared key used by the HMAC-SHA1 (default:\r\n netbeacon)\r\n -s, --storeseq store sequence and validate sequence\r\n -i ITERATION, --iteration=ITERATION\r\n set the number of interation for sending the netbeacon\r\n -d DESTINATION, --destination=DESTINATION\r\n set the destination IPv4 address (default: 127.0.0.1)\r\n -v, --verbose output netbeacon sent\r\n\r\n\r\n### nb_collect.py ###\r\n\r\n Usage: nb_collect.py [options]\r\n\r\n Options:\r\n -h, --help show this help message and exit\r\n -i INTERFACE, --interface=INTERFACE\r\n live capture on interface (default:lo)\r\n -r FILEDUMP, --read=FILEDUMP\r\n read pcap file\r\n -e EXTENDED, --extended=EXTENDED\r\n enable extended format including pcap timestamp\r\n\r\n### nb_verify.py ###\r\n\r\n Usage: nb_verify.py [options] <netbeacon messages>\r\n\r\n Options:\r\n -h, --help show this help message and exit\r\n -t, --timedelta show timedelta\r\n -s, --storeseq store sequence and validate sequence\r\n -p PSK, --psk=PSK pre-shared key used by the HMAC-SHA1 (default: netbeacon)\r\n\r\n\r\n\r\nLicense\r\n=======\r\n\r\nnetbeacon is free software: you can redistribute it and/or modify\r\nit under the terms of the GNU General Public License as published by\r\nthe Free Software Foundation, either version 3 of the License, or\r\n(at your option) any later version.\r\n\r\nCopyright (c) 2012 Alexandre Dulaunoy - https://github.com/adulau/\r\n","note":"Don't delete this file! It's used internally to help with page regeneration."}
|
70
stylesheets/pygment_trac.css
Normal file
70
stylesheets/pygment_trac.css
Normal file
|
@ -0,0 +1,70 @@
|
|||
.highlight .hll { background-color: #ffffcc }
|
||||
.highlight { background: #f0f3f3; }
|
||||
.highlight .c { color: #0099FF; font-style: italic } /* Comment */
|
||||
.highlight .err { color: #AA0000; background-color: #FFAAAA } /* Error */
|
||||
.highlight .k { color: #006699; font-weight: bold } /* Keyword */
|
||||
.highlight .o { color: #555555 } /* Operator */
|
||||
.highlight .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
|
||||
.highlight .cp { color: #009999 } /* Comment.Preproc */
|
||||
.highlight .c1 { color: #0099FF; font-style: italic } /* Comment.Single */
|
||||
.highlight .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */
|
||||
.highlight .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
|
||||
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||
.highlight .gr { color: #FF0000 } /* Generic.Error */
|
||||
.highlight .gh { color: #003300; font-weight: bold } /* Generic.Heading */
|
||||
.highlight .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
|
||||
.highlight .go { color: #AAAAAA } /* Generic.Output */
|
||||
.highlight .gp { color: #000099; font-weight: bold } /* Generic.Prompt */
|
||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #003300; font-weight: bold } /* Generic.Subheading */
|
||||
.highlight .gt { color: #99CC66 } /* Generic.Traceback */
|
||||
.highlight .kc { color: #006699; font-weight: bold } /* Keyword.Constant */
|
||||
.highlight .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */
|
||||
.highlight .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */
|
||||
.highlight .kp { color: #006699 } /* Keyword.Pseudo */
|
||||
.highlight .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #007788; font-weight: bold } /* Keyword.Type */
|
||||
.highlight .m { color: #FF6600 } /* Literal.Number */
|
||||
.highlight .s { color: #CC3300 } /* Literal.String */
|
||||
.highlight .na { color: #330099 } /* Name.Attribute */
|
||||
.highlight .nb { color: #336666 } /* Name.Builtin */
|
||||
.highlight .nc { color: #00AA88; font-weight: bold } /* Name.Class */
|
||||
.highlight .no { color: #336600 } /* Name.Constant */
|
||||
.highlight .nd { color: #9999FF } /* Name.Decorator */
|
||||
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
|
||||
.highlight .ne { color: #CC0000; font-weight: bold } /* Name.Exception */
|
||||
.highlight .nf { color: #CC00FF } /* Name.Function */
|
||||
.highlight .nl { color: #9999FF } /* Name.Label */
|
||||
.highlight .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */
|
||||
.highlight .nt { color: #330099; font-weight: bold } /* Name.Tag */
|
||||
.highlight .nv { color: #003333 } /* Name.Variable */
|
||||
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
|
||||
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.highlight .mf { color: #FF6600 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #FF6600 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #FF6600 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #FF6600 } /* Literal.Number.Oct */
|
||||
.highlight .sb { color: #CC3300 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #CC3300 } /* Literal.String.Char */
|
||||
.highlight .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #CC3300 } /* Literal.String.Double */
|
||||
.highlight .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #CC3300 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #AA0000 } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #CC3300 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #33AAAA } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #CC3300 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #FFCC33 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #336666 } /* Name.Builtin.Pseudo */
|
||||
.highlight .vc { color: #003333 } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #003333 } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #003333 } /* Name.Variable.Instance */
|
||||
.highlight .il { color: #FF6600 } /* Literal.Number.Integer.Long */
|
||||
|
||||
.type-csharp .highlight .k { color: #0000FF }
|
||||
.type-csharp .highlight .kt { color: #0000FF }
|
||||
.type-csharp .highlight .nf { color: #000000; font-weight: normal }
|
||||
.type-csharp .highlight .nc { color: #2B91AF }
|
||||
.type-csharp .highlight .nn { color: #000000 }
|
||||
.type-csharp .highlight .s { color: #A31515 }
|
||||
.type-csharp .highlight .sc { color: #A31515 }
|
431
stylesheets/stylesheet.css
Normal file
431
stylesheets/stylesheet.css
Normal file
|
@ -0,0 +1,431 @@
|
|||
/*******************************************************************************
|
||||
Slate Theme for Github Pages
|
||||
by Jason Costello, @jsncostello
|
||||
*******************************************************************************/
|
||||
|
||||
@import url(pygment_trac.css);
|
||||
|
||||
/*******************************************************************************
|
||||
MeyerWeb Reset
|
||||
*******************************************************************************/
|
||||
|
||||
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: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/* HTML5 display-role reset for older browsers */
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
blockquote, q {
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
a:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
Theme Styles
|
||||
*******************************************************************************/
|
||||
|
||||
body {
|
||||
box-sizing: border-box;
|
||||
color:#373737;
|
||||
background: #212121;
|
||||
font-size: 16px;
|
||||
font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif;
|
||||
line-height: 1.5;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin: 10px 0;
|
||||
font-weight: 700;
|
||||
color:#222222;
|
||||
font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 36px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
h2 {
|
||||
padding-bottom: 10px;
|
||||
font-size: 32px;
|
||||
background: url('../images/bg_hr.png') repeat-x bottom;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 21px;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 10px 0 15px 0;
|
||||
}
|
||||
|
||||
footer p {
|
||||
color: #f2f2f2;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: #007edf;
|
||||
text-shadow: none;
|
||||
|
||||
transition: color 0.5s ease;
|
||||
transition: text-shadow 0.5s ease;
|
||||
-webkit-transition: color 0.5s ease;
|
||||
-webkit-transition: text-shadow 0.5s ease;
|
||||
-moz-transition: color 0.5s ease;
|
||||
-moz-transition: text-shadow 0.5s ease;
|
||||
-o-transition: color 0.5s ease;
|
||||
-o-transition: text-shadow 0.5s ease;
|
||||
-ms-transition: color 0.5s ease;
|
||||
-ms-transition: text-shadow 0.5s ease;
|
||||
}
|
||||
|
||||
#main_content a:hover {
|
||||
color: #0069ba;
|
||||
text-shadow: #0090ff 0px 0px 2px;
|
||||
}
|
||||
|
||||
footer a:hover {
|
||||
color: #43adff;
|
||||
text-shadow: #0090ff 0px 0px 2px;
|
||||
}
|
||||
|
||||
em {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
img {
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
max-width: 739px;
|
||||
padding: 5px;
|
||||
margin: 10px 0 10px 0;
|
||||
border: 1px solid #ebebeb;
|
||||
|
||||
box-shadow: 0 0 5px #ebebeb;
|
||||
-webkit-box-shadow: 0 0 5px #ebebeb;
|
||||
-moz-box-shadow: 0 0 5px #ebebeb;
|
||||
-o-box-shadow: 0 0 5px #ebebeb;
|
||||
-ms-box-shadow: 0 0 5px #ebebeb;
|
||||
}
|
||||
|
||||
pre, code {
|
||||
width: 100%;
|
||||
color: #222;
|
||||
background-color: #fff;
|
||||
|
||||
font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
|
||||
font-size: 14px;
|
||||
|
||||
border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
-webkit-border-radius: 2px;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
pre {
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
box-shadow: 0 0 10px rgba(0,0,0,.1);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
code {
|
||||
padding: 3px;
|
||||
margin: 0 3px;
|
||||
box-shadow: 0 0 10px rgba(0,0,0,.1);
|
||||
}
|
||||
|
||||
pre code {
|
||||
display: block;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
color: #666;
|
||||
margin-bottom: 20px;
|
||||
padding: 0 0 0 20px;
|
||||
border-left: 3px solid #bbb;
|
||||
}
|
||||
|
||||
ul, ol, dl {
|
||||
margin-bottom: 15px
|
||||
}
|
||||
|
||||
ul li {
|
||||
list-style: inside;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
ol li {
|
||||
list-style: decimal inside;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
dl dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dl dd {
|
||||
padding-left: 20px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
dl p {
|
||||
padding-left: 20px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
hr {
|
||||
height: 1px;
|
||||
margin-bottom: 5px;
|
||||
border: none;
|
||||
background: url('../images/bg_hr.png') repeat-x center;
|
||||
}
|
||||
|
||||
table {
|
||||
border: 1px solid #373737;
|
||||
margin-bottom: 20px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
padding: 10px;
|
||||
background: #373737;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: 10px;
|
||||
border: 1px solid #373737;
|
||||
}
|
||||
|
||||
form {
|
||||
background: #f2f2f2;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
Full-Width Styles
|
||||
*******************************************************************************/
|
||||
|
||||
.outer {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.inner {
|
||||
position: relative;
|
||||
max-width: 640px;
|
||||
padding: 20px 10px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
#forkme_banner {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top:0;
|
||||
right: 10px;
|
||||
z-index: 10;
|
||||
padding: 10px 50px 10px 10px;
|
||||
color: #fff;
|
||||
background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%;
|
||||
font-weight: 700;
|
||||
box-shadow: 0 0 10px rgba(0,0,0,.5);
|
||||
border-bottom-left-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
}
|
||||
|
||||
#header_wrap {
|
||||
background: #212121;
|
||||
background: -moz-linear-gradient(top, #373737, #212121);
|
||||
background: -webkit-linear-gradient(top, #373737, #212121);
|
||||
background: -ms-linear-gradient(top, #373737, #212121);
|
||||
background: -o-linear-gradient(top, #373737, #212121);
|
||||
background: linear-gradient(top, #373737, #212121);
|
||||
}
|
||||
|
||||
#header_wrap .inner {
|
||||
padding: 50px 10px 30px 10px;
|
||||
}
|
||||
|
||||
#project_title {
|
||||
margin: 0;
|
||||
color: #fff;
|
||||
font-size: 42px;
|
||||
font-weight: 700;
|
||||
text-shadow: #111 0px 0px 10px;
|
||||
}
|
||||
|
||||
#project_tagline {
|
||||
color: #fff;
|
||||
font-size: 24px;
|
||||
font-weight: 300;
|
||||
background: none;
|
||||
text-shadow: #111 0px 0px 10px;
|
||||
}
|
||||
|
||||
#downloads {
|
||||
position: absolute;
|
||||
width: 210px;
|
||||
z-index: 10;
|
||||
bottom: -40px;
|
||||
right: 0;
|
||||
height: 70px;
|
||||
background: url('../images/icon_download.png') no-repeat 0% 90%;
|
||||
}
|
||||
|
||||
.zip_download_link {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 90px;
|
||||
height:70px;
|
||||
text-indent: -5000px;
|
||||
overflow: hidden;
|
||||
background: url(../images/sprite_download.png) no-repeat bottom left;
|
||||
}
|
||||
|
||||
.tar_download_link {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 90px;
|
||||
height:70px;
|
||||
text-indent: -5000px;
|
||||
overflow: hidden;
|
||||
background: url(../images/sprite_download.png) no-repeat bottom right;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.zip_download_link:hover {
|
||||
background: url(../images/sprite_download.png) no-repeat top left;
|
||||
}
|
||||
|
||||
.tar_download_link:hover {
|
||||
background: url(../images/sprite_download.png) no-repeat top right;
|
||||
}
|
||||
|
||||
#main_content_wrap {
|
||||
background: #f2f2f2;
|
||||
border-top: 1px solid #111;
|
||||
border-bottom: 1px solid #111;
|
||||
}
|
||||
|
||||
#main_content {
|
||||
padding-top: 40px;
|
||||
}
|
||||
|
||||
#footer_wrap {
|
||||
background: #212121;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
Small Device Styles
|
||||
*******************************************************************************/
|
||||
|
||||
@media screen and (max-width: 480px) {
|
||||
body {
|
||||
font-size:14px;
|
||||
}
|
||||
|
||||
#downloads {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.inner {
|
||||
min-width: 320px;
|
||||
max-width: 480px;
|
||||
}
|
||||
|
||||
#project_title {
|
||||
font-size: 32px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 21px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
code, pre {
|
||||
min-width: 320px;
|
||||
max-width: 480px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue