Browse Source

Prevent forms form autocompleting fields. When an entry is saved, it is checked if the passphrase was used for other entries too. New admin area. Nfunctions: bulk decrypt, bulk change passphrase.

master
Rolf Brugger 14 years ago
parent
commit
709102c5d3
  1. 8
      doc/index.html
  2. BIN
      img/favicon.ico
  3. 188
      index.php
  4. 32
      sv.css
  5. 8
      vault/simplevault.txt

8
doc/index.html

@ -31,6 +31,8 @@
<p>In the default installation, the vault file contains 2 categories and 4 entries for demonstration purposes. All entries are encrypted with the passphrase <i>toto</i>. You can delete the entries interactively, or by emptying the vault file.</p>
<p>If you have problems please ask your questions in the <a href='http://sourceforge.net/forum/?group_id=205981'>support forum</a>.</p>
<h3>Updating an Existing Installation</h3>
<p>Simply replace the files <tt>index.php</tt>, <tt>sv.css</tt> and <tt>img/*</tt> with the new files from the distribution. </p>
<h2>Usage</h2>
<h3>Quickstart</h3>
@ -56,7 +58,7 @@
<h2>Technical Information</h2>
<h3>Security</h3>
<p>This piece of software has not been designed by a security specialist! SimpleVault is a best-effort approach with common sense security principles in mind. For example, in all input fields scripting tags are automatically filtered or escaped in order to prevent from cross site scripting attacks. But for a really serious application you may prefer one of the bullet proof commercial applications that are available on the market.</p>
<p>This software has not been designed by a security specialist! SimpleVault is a best-effort approach with common sense security principles in mind. For example, in all input fields scripting tags are automatically filtered or escaped in order to prevent from cross site scripting attacks. But for a really serious application you may prefer one of the bullet proof commercial applications that are available on the market.</p>
<p>The most important functionality of SimpleVault is to encrypt all secret data that has to be stored. The encription uses strong encryption algorithms, and if a good password is used, it is virtually impossible to decrypt the data without knowing the password. This means that even if the vault file is stolen, the secret data is safe. Actually, the vault file could be made publicly accessible without any risk.</p>
<p>However, during the process of using SimpleVault, the secret data is unencrypted at certain times and locations. The red boxes in the table below indicate unencrypted secret data. </p>
@ -184,7 +186,9 @@ There are probably more risks or leaks. Please report them in the <a href='http:
</li>
</ul>
<h3>Credits</h3>
<p>These people have contributed to SimpleVault: Christian R., Reimar H.</p>
<p><br/><br/><br/>Rolf Brugger, Sept '07<br/></p>
<p><br/><br/><br/>Rolf Brugger, Jan '08<br/></p>
</body>
</html>

BIN
img/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

188
index.php

@ -1,7 +1,10 @@
<html>
<head>
<title>SimpleVault Password Manager</title>
<meta name="robots" content="noarchive,nofollow" />
<meta http-equiv="cache-control" content="no-cache" />
<title></title>
<link href='sv.css' rel='stylesheet' type='text/css' media='screen' />
<link rel="shortcut icon" href="img/favicon.ico" >
<script type="text/javascript">
function check_pf()
@ -27,7 +30,12 @@ function check_pf()
# Author: Rolf Brugger
# Email: rolf.brugger@schweiz.org
#
# Versions:
# Versions - History:
# 1.4 Feb 08: prevent forms form autocompleting fields.
# when an entry is saved, it is checked if the passphrase was used for other entries too.
# new admin area.
# new functions: bulk decrypt, bulk change passphrase.
# 1.3 Jan 08: more secure handling of special characters in title tags
# 1.2 Nov 07: editing entires improved
# 1.1 Oct 07: edit entires
# 1.0 Sep 07: initial release
@ -39,18 +47,26 @@ function check_pf()
// *** Settings
// ----------------------------------------------------------------------------------------
$vaultdir = "vault";
$vaultfile = "simplevault.txt";
$cipher = 'rijndael-256';
// date format string as used by php function 'date'
//$dateformat = 'm.d.y G:i'; // "09.19.07 15:44"
//$dateformat = 'M jS Y g:ia'; // "Sep 19th 2007 3:44pm"
//$dateformat = 'd-M-Y G:i'; // "09-Sep-2007 15:44"
$dateformat = 'd-M-Y'; // "09-Sep-2007"
// Checks if the pass phrase that was entered to encode an entry has already
// been used to encode other entries. Depending on the usage scenario a re-used
// pass phrase may be wanted or unwanted.
// 1 to enable check, 0 to disable check.
$checkexistingpf = 1;
// ----------------------------------------------------------------------------------------
// *** Constants
// ----------------------------------------------------------------------------------------
$vaultdir = "vault";
$vaultfile = "simplevault.txt";
$cipher = 'rijndael-256';
// ----------------------------------------------------------------------------------------
@ -74,7 +90,9 @@ print "<p class='logo'><a href='$myfname'><img src='img/logo.png' border='0' ali
print "<br clear='all'/>";
print "<form name='deffilter' action='$myfname' method='post'>";
print "<div class='topbar'><span>";
print "<div class='topbar'>";
// left block
print "<div class='leftblock'><span>";
print "<a href='$myfname'><b>Home</b></a>";
print " &nbsp; &nbsp; ";
print "<a href='$myfname?all=1'>all</a>";
@ -82,6 +100,12 @@ print " &nbsp; &nbsp; ";
print "<input type='text' name='filter' value='".$_POST['filter']."' size ='7' id='inpfield'/>";
print "<input type='image' src='img/go-arr.png' name='image' width='10' height='11' title='run filter'>";
print "</span></div>";
// right block
print "<div class='rightblock'>";
print "<span><a href='?admin=1'>Admin</a></span>";
print "</div>";
print "</div>";
print "<div class='catbar'><span>Categories: &nbsp; ";
foreach ($cats as $cat){print "<a href='?cat=$cat'>$cat</a> &nbsp; ";}
@ -90,7 +114,11 @@ print "</form>";
// ----------------------------------------------------------------------------------------
// *** Actions
// ----------------------------------------------------------------------------------------
// *** save an entry
if(isset($_POST['entrysave'])){
if(isset($_POST['mode']) and $_POST['mode']=="modify"){
@ -103,7 +131,11 @@ if(isset($_POST['entrysave'])){
if(isset($_POST['t1']) and strlen($_POST['t1'])>0){
if (!isset($_POST['cat']) or strlen($_POST['cat'])<1){ $_POST['cat']=$_POST['catdl']; $_REQUEST['cat']=$_POST['catdl']; } // take category from dropdown list? category in text field has precedence.
// for security reasons, strip off all html special characters
$_POST['cat'] = strip_titletags($_POST['cat']);
$_POST['t1'] = strip_titletags($_POST['t1']);
$_POST['t2'] = strip_titletags($_POST['t2']);
if(entry_index($vlt, $_POST['cat'], $_POST['t1'], $_POST['t2']) <0){
// *** create new entry
$encpart = svencrypt($_POST['pf'], $preamble, $_POST['newp1'], $_POST['newp2'], $_POST['newp3'], $_POST['newp8'], $_POST['newp9'], $_POST['newnote']);
@ -117,6 +149,15 @@ if(isset($_POST['entrysave'])){
file_put_contents("$vaultdir/$vaultfile", implode("\n", $vlt));
$cats = categories($vlt);
print "<p><span class='info'>Entry ".$_POST['t1']."/".$_POST['t2']." saved.</span></p>";
if ($checkexistingpf){
if (svcountdecodeableentries($_POST['pf']) > 1){ // has the passphrase already been used to encode other entries?
print "<p><span class='info'>This passphrase has already been used to encode other entries.</span></p>";
}
else{
print "<p><span class='info'>This is a new passphrase.</span></p>";
}
}
}
else{
print "<p><span class='warning'>Could not save entry: an entry with this category and title already exists.</span></p>";
@ -129,6 +170,50 @@ if(isset($_POST['entrysave'])){
}
// *** Bulk change passphrase
if(isset($_POST['bulkchangepf'])){
$i=0;
$count = 0;
print "<p>re-encrypting: ";
while ($i < count($vlt)){
$recfields = explode ("\t", $vlt[$i], $nbfields);
$decfields = svdecrypt($_POST['oldpf'], $recfields[$nbfields-1]);
if ($decfields[0] == $preamble){
$encpart = svencrypt($_POST['newpf'], $preamble, $decfields[1], $decfields[2], $decfields[3], $decfields[8], $decfields[9], $decfields[$nbencfields]);
$vlt[$i] = $recfields[0]."\t".$recfields[1]."\t".$recfields[2]."\t".time()."\t\t\t\t\t\t".$encpart;
print $recfields[0]."-".$recfields[1]."-".$recfields[2]."(note".$decfields[$nbencfields]."), &nbsp; ";
$count++;
}
$i++;
}
print "</p>";
file_put_contents("$vaultdir/$vaultfile", implode("\n", $vlt));
print "<p><span class='info'>$count of ".count($vlt)." entries were re-encrypted with the new passphrase.</span></p>";
}
// *** Bulk decrypt entries
if(isset($_POST['bulkdecrypt'])){
$i=0;
$count = 0;
print "<table class='entrylist'>";
while ($i < count($vlt)){
$recfields = explode ("\t", $vlt[$i], $nbfields);
$decfields = svdecrypt($_POST['pf'], $recfields[$nbfields-1]);
if ($decfields[0] == $preamble){
print "<tr><td class='tl'>";
show_entry_title($recfields[0], $recfields[1], $recfields[2]);
print "</td><td class='tl'>";
show_entry_body($decfields);
print "</td></tr>";
print "<tr><td colspan='2'><hr /></td></tr>";
$count++;
}
$i++;
}
print "</table>";
print "<p><span class='info'>$count of ".count($vlt)." entries decrypted.</span></p>";
}
// ----------------------------------------------------------------------------------------
// *** Main Pages
@ -145,6 +230,14 @@ if(isset($decrmode)) {
print "<h1>".ucfirst($decrmode)." Entry</h1>";
// for security reasons, strip off all html special characters
$_POST['cat'] = strip_titletags($_POST['cat']);
$_POST['t1'] = strip_titletags($_POST['t1']);
$_POST['t2'] = strip_titletags($_POST['t2']);
$_REQUEST['cat'] = strip_titletags($_REQUEST['cat']);
$_REQUEST['t1'] = strip_titletags($_REQUEST['t1']);
$_REQUEST['t2'] = strip_titletags($_REQUEST['t2']);
show_entry_title($_REQUEST['cat'], $_REQUEST['t1'], $_REQUEST['t2']);
if (isset($_POST['entrydecrypt']) or isset($_POST['entrydelete']) or isset($_POST['entryedit'])){
@ -158,6 +251,7 @@ if(isset($decrmode)) {
// decryption suceeded
if ($decrmode == "decrypt"){
// passphrase is ok, show decrypted entry
print "<p>decrypted:<br/>";
show_entry_body($decfields);
}
elseif ($decrmode == "delete"){
@ -221,6 +315,40 @@ elseif(isset($_GET['cat']) or isset($_GET['all']) or isset($_POST['filter'])){
print "<p><a href='?new=1&cat=".$_GET['cat']."'><img src='img/add.png' border='0' title='add new entry' /> create new entry</a></p>";
}
// *** Show admin screen
elseif(isset($_GET['admin'])){
print "<h1>Administration</h1>";
print "<h2>Bulk Decrypt Entries</h2>";
$myfname = basename($_SERVER["PHP_SELF"]);
print "<form name='changepf' action='$myfname' method='post' autocomplete='off'>";
print "<p>";
print "Passphrase: <input name='pf' type='password' value='' size='20' maxlength='200'/> &nbsp; ";
print "<input type='submit' name='bulkdecrypt' value='Decrypt all' />";
print "</p>";
print "</form>";
print "<div class='helptext'><span>This function at once decrypts and displays all entries that can be decrypted with the <i>passphrase</i>.</span></div>";
print "<hr/>";
print "<h2>Bulk Change Passphrase</h2>";
$myfname = basename($_SERVER["PHP_SELF"]);
print "<form name='changepf' action='$myfname' method='post' autocomplete='off'>";
print "<p>";
print "Old Passphrase: <input name='oldpf' type='password' value='' size='20' maxlength='200'/> &nbsp; ";
print "New Passphrase: <input name='newpf' type='password' value='' size='20' maxlength='200'/> ";
print "<input type='submit' name='bulkchangepf' value='Change all' />";
print "</p>";
print "</form>";
print "<div class='helptext'><span>This function scans all entries and sets the <i>new passphrase</i> for those entries that can be decrypted with the <i>old passphrase</i>. Those entries that cannot be decrypted with the <i>old passphrase</i> are not modified.</span></div>";
}
else{
print "<p><a href='?new=1'><img src='img/add.png' border='0' title='add new entry' /> create new entry</a></p>";
}
@ -239,7 +367,7 @@ function svencrypt($pf, $p0, $p1, $p2, $p3, $p8, $p9, $note)
{
global $cipher;
$data = strip_tags($p0)."\n".strip_tags($p1)."\n".strip_tags($p2)."\n".strip_tags($p3)."\n\n\n\n\n".strip_tags($p8)."\n".strip_tags($p9)."\n".strip_tags($note);
$data = strip_conttags($p0)."\n".strip_conttags($p1)."\n".strip_conttags($p2)."\n".strip_conttags($p3)."\n\n\n\n\n".strip_conttags($p8)."\n".strip_conttags($p9)."\n".strip_conttags($note);
/* Open module, and create IV */
$td = mcrypt_module_open($cipher, '', 'ecb', '');
@ -289,6 +417,31 @@ function svdecrypt($pf, $data)
/* -------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------- */
function svdecodeableentry($pf, $data)
// returns ture if the entry can be sucessfully decoded with the passphrase
{
global $preamble;
$decfields = svdecrypt($pf, $data);
return ($decfields[0] == $preamble);
}
/* -------------------------------------------------------------------------- */
function svcountdecodeableentries($pf)
// counts how many entries can be decoded with the passphrase
{
global $vlt, $nbfields;
$count = 0;
foreach ($vlt as $record){
$recfields = explode ("\t", $record, $nbfields);
if (svdecodeableentry($pf, $recfields[$nbfields-1])) {$count++;}
}
return $count;
}
/* -------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------- */
function delete_entry(&$vlt, $i, &$cats)
// Delete entry with index $i. The vault ($vlt) and category ($cats) arrays are updated. The vault array is saved to the file.
{
@ -334,7 +487,7 @@ function entry_form($defcat, $deft1, $deft2, $encfields, $mode)
global $cats, $nbencfields;
$myfname = basename($_SERVER["PHP_SELF"]);
print "<form action='$myfname' method='post' name='editentry' onSubmit='return check_pf()'>";
print "<form action='$myfname' method='post' name='editentry' onSubmit='return check_pf()' autocomplete='off'>";
print "<input name='defcat' type='hidden' value='$defcat'/>";
print "<input name='deft1' type='hidden' value='$deft1'/>";
print "<input name='deft2' type='hidden' value='$deft2'/>";
@ -395,7 +548,7 @@ function decrypt_form($cat, $t1, $t2, $action)
// $action is decrypt or delete
{
$myfname = basename($_SERVER["PHP_SELF"]);
print "<form name='enterpf' action='$myfname' method='post'>";
print "<form name='enterpf' action='$myfname' method='post' autocomplete='off'>";
print "<input name='cat' type='hidden' value='$cat'/>";
print "<input name='t1' type='hidden' value='$t1'/>";
print "<input name='t2' type='hidden' value='$t2'/>";
@ -424,7 +577,6 @@ function show_entry_title($cat, $t1, $t2)
function show_entry_body($decfields)
{
global $nbencfields;
print "<p>decrypted:<br/>";
print "<table class='encrbox'>";
print "<tr><td>URL:</td><td>" .print_url($decfields[2])."</td></tr>";
print "<tr><td>Login:</td><td>" .$decfields[1]."</td></tr>";
@ -467,6 +619,18 @@ function print_url ($string)
}
}
/* -------------------------------------------------------------------------- */
function strip_titletags($string)
{
return (strtr($string, "<>&\\'\"", "......"));
}
function strip_conttags($string)
{
return (htmlspecialchars ( $string));
}
/* -------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------- */
?>

32
sv.css

@ -68,6 +68,23 @@ div.topbar input#inpfield{
font-size: 90%
}
div.leftblock{
text-align : left;
float : left;
}
div.rightblock{
text-align : right;
}
div.helptext{
padding-top: 4px;
color: #999;
font-size: 100%;
margin-top: 15px;
}
div.footer{
border-top: solid 1px silver;
padding-top: 4px;
@ -84,7 +101,11 @@ div.footer img{
border: 0px;
}
hr{
color: #999;
border-top: solid 1px silver;
height: 0px;
}
/* Tables */
@ -100,6 +121,10 @@ td.mr{/* top right */
text-align : right;
vertical-align : top;
}
td.tl{/* top left */
text-align : left;
vertical-align : top;
}
table.raw{
@ -108,6 +133,11 @@ table.raw{
border: 0px;
}
table.entrylist{
font-size:1em;
border: 0px;
}
table.entry{
font-size:1em;
padding-top : 2em;

8
vault/simplevault.txt

@ -1,7 +1,11 @@
BbVista 1 1 1201911025 %9A%94%F8s%3E%B1%C9%BD%27%8Cz_%9FZ%26H%15%EBG%CE%C3%DC%D1%AE%0D%86%16%95%BE%E5n%0B
BbVista 2 2 1201911088 iT%11%5D2dU%9F%0D%A0%AFS%2Cy%A0%98%D8%DB%3FA%C6_%E2%E6%A5%D05Q%AE%1B%D3U
BbVista Blackboard devnet 1190719875 %C57%BD%DDF%CF%A9%5BK%40%23%F8%ED%1Ct%1C%3F%F6%8C%82%E936%88%9F%B3%9D%A8c%92%FA%5D6%9D%26%9E%5BzY%DD%AE%E9%4098Z6%14%FD%1E%11XT%01SA%1A%86%DEx%0C2%BDh
BbVista another title subtitle 1201909495 %9A%94%F8s%3E%B1%C9%BD%27%8Cz_%9FZ%26H%15%EBG%CE%C3%DC%D1%AE%0D%86%16%95%BE%E5n%0B
BbVista calanda host 1195432473 %3F%8D%94%C1-%FA%BB%81%19%D6%EC%90r%BE4%B5%D5%B7%D7%00RQ%C1%1FD%E18%B4s%81G%7Dq%FB%E4%2F%D1%B1%DE%AA%90%ED%85%26d%83%CB%A9j%7D%D6%EC-%E9ZA%A8%5CL%94j%F2A%99%B1%2Be%7C%CA%1Ft%96%D7%0An%23%02%40%CF%EB%3C%23%AD%E2%CE%02%03%B8%F4%8C%8A%A4A%F1fs
BbVista calanda oracle 1190241401 G%CFH%EE%85%A2%FA%8A%80N%C1%D8M%12%A6Yk%CA%BEc%C8%BF%8E%DB%D1%D3%16%F8o%AD%95%11%10Al%17%8Ei%D4%8E%29%B8%97%D0%7E%F3%88o_h%0C%C8%AA%21%00V%C3%F2%22%5B%1A%2C%18%BF
BbVista falknis host 1190241453 %8A_%EA%F1%81b%E8%82%CE%17%0EN%1F%2C%D2%0B%BAz%DB%E4%14%2B3%D1%B4M6%C2%15M%88%F1f%B8%A2s1%3E4%91fsu%A3%0D%14%C8%85Y%B6%C9%8E%D6e%0E%AC5%DC%CE%94d%13%7E%9C
BbVista new new 1197587170 %DB%FB%0E%D1%8A%FC%FA%22o%1D%A6%90Ip%C7%04%7C%F1%96%05%9F%97%18x%ED%B1f_%F5%93%E0%A4%92%8C%DD%2Bt%B4%29%02P%90Xf%A8%83%F6l%00%96%F3%9B%27%DA%ED%93%C8%B9%CD%F4O%E1%E4%ED
BbVista q q 1195431612 %03%8Bc%A2+N%2C%7B%93%D2%A7e%0Dm%3Ef%A8v%22%0A%2F%C9%1B%B7%94%C3%91%CB%B5%B8.%A5%E3%1F%AF%C1%3E%9A%8F27%EB%D6%3E%60%C8%E2%AA%F1%AC%F8%B28P%82%F3%23%2C%03Q%60L%AD%F5
BbVista t t 1195431518 %88%29%18%CA3%0E%C0%1F1%97uE%D7L%F1%E8%27%D1%A7%E5%94%FC%3D%A1%3A%7DN%AB%1C%F5%9A%12%9A%A2%22N%28+%C9H%8CR%A9%CC%B2%23%0B%CA%18%B4%B7%8Fn%7E%DEf%18%C7%A8F%12P%0Cn
BbVista test2 test2 1195431304 %A7%8B%97%B5B%8B%B9%5B%FA%93%93%28%B1%E2%95%C1%9CzqD%E4%FD%A3%DEK%E3O%21%CA%DC%90%C2%DA%94%03%7Cf%0D%8A%BC%98c+u%D0%E6u7%99%D5%0B%98%00%82%27%9D%0C%EAv%3C%C9%7D%8B%28%85%9B%A2%23%9Aa%2A%8B%82X%F3S+%0F%5E%2B%AC%FC%DA%8A%A0%00%A7%CD%FD%FA%001%2B%EFg4
@ -9,6 +13,7 @@ Home Servers Thor mysql user for PHP 1191191230 %C2%24%7F%9CQ%B0T%C3%CE%C1%
Home Servers host jupiter mysql user for PHP 1191191342 q%D8%01%95%D5Q%97%B2z%09%04%E6%9E%DFw%91%AD%26z%BE%5E%891%0D%FA%5E%B1%C4%87S%D5%D0%E7%0C%8A%F1%D3%EB%25%AC1%24%FA+%10%98YO%0E%C6%93%3B%02%B6%C2%AAJ%EDq%C37%90r%F2
LOR andro mysql user 1193843153 i%A0%BB%88%7C%1C9%D6%C1%95%BBc%3B%F0%A6%0B%29%04%E9%E8%F6W%C8%E6%C2%D0%25J%9DL%7D%D7%BC%89%3D%21%D0%10%A2%09%AFlCb%C8p%A1%26w%C5T%D5%5D%5B%21I%FFC%5EH%FB%EF3C
LOR andro other host 1190198974 %88%F84%A3%AB%DA%F8%92%E3TL%25%F2%A0f3%12%A5Pm%C3%87H%7FW6%AA%7C%9CX%F1%2Af%B8%A2s1%3E4%91fsu%A3%0D%14%C8%85Y%B6%C9%8E%D6e%0E%AC5%DC%CE%94d%13%7E%9C
LOR mytitle mysubtitle 1201907931 %9C%0F%EF%DDm%3C%9D%D9%C8%0F%3E%F5%EB%D0%0B%2A%06%BC%82%12%3E%0B%0F%89%92%9Ei%A9%0D%ADG%F4
LOR peler apache 1190209649 %E5%86p%2A%8D%9A%24%E5%96%9By%24l%2F%8F%BA%3B%80%3C%AD%CC%3EzH%EF%7BQ%AF1%2C%D8V
LOR peler host 1190209440 %8E%16%03%AF%A6%0A%F3%1D%E6%A1z%7E%8A%B4%CA%E7%AF%EB++t%12%3B%D8%13%CD%D0%E2%5B%ED%D4%D6%10Al%17%8Ei%D4%8E%29%B8%97%D0%7E%F3%88o_h%0C%C8%AA%21%00V%C3%F2%22%5B%1A%2C%18%BF
LOR peler host 1190209496 %8E%16%03%AF%A6%0A%F3%1D%E6%A1z%7E%8A%B4%CA%E7%AF%EB++t%12%3B%D8%13%CD%D0%E2%5B%ED%D4%D6%10Al%17%8Ei%D4%8E%29%B8%97%D0%7E%F3%88o_h%0C%C8%AA%21%00V%C3%F2%22%5B%1A%2C%18%BF
@ -16,4 +21,5 @@ LOR peler mysql root 1190209602 %E5%86p%2A%8D%9A%24%E5%96%9By%24l%2F%8F%BA%
LOR test test 1195426020 %BA%C0%ABd%94%CC+%AEVlo%19%A3A%91%60z%A2%AE%07%1A%0D%C4%DAd%5D%7D%40HG8%BC
LOR test2 test2 1195426472 %1D%DC9%E0%0Dd%2Bx%C8%29%14%AD%02%D9%FA%87%D4%A2%1E%B1%B2%2A%3D%40%E5%3C%E8%BA%06%9An%9Bb%AF%B3%D1B%3E%C2%AB%22%93%E7%E8%D5%A4nk%AEv%F9%FB%5D%1A%C4it%3C%04i4w%BB%83%99%D5c%15%EB%DC%D8_%9BF%F32%C7%5C%E3%FC%99%A7%03%D0%AF%9B%EB%1FbDC%85%D3%19jg
Public Hosts lena root 1190408301 %9A%94%F8s%3E%B1%C9%BD%27%8Cz_%9FZ%26H%15%EBG%CE%C3%DC%D1%AE%0D%86%16%95%BE%E5n%0B
Public Hosts new pub new pub 1190585220 %1B%90+6%CF%F12%DC%17%16%2B%F0UD%F0%92%DBtAC%B9%B9%15%AE%CF%E7%0D%C8%CA%FAs%85%02%2F%DA%A9%CAq%81R%87H%16qu%A6%3Dn%84%19w%C9%25OR%1B%EAb%8FI%BE%BB%2B%AC
Public Hosts new pub new pub 1190585220 %1B%90+6%CF%F12%DC%17%16%2B%F0UD%F0%92%DBtAC%B9%B9%15%AE%CF%E7%0D%C8%CA%FAs%85%02%2F%DA%A9%CAq%81R%87H%16qu%A6%3Dn%84%19w%C9%25OR%1B%EAb%8FI%BE%BB%2B%AC
new The title the subtitle 1201993195 H%0E%CF%E6%F5%27K%A3%CDG09a%10%23%29%7C%B5%22%AA%0D%8D%BA%24%D5%B9%EE%008v%98z%E7%25%B9%E3%F7%C4%85%82%D1%14%04%B3G-Z0W%3En%B6%BC%14h%17t%28%2B8qb%9E%B1%E3r%1B%DE%08%1D%7Fz%D7%B1%2B%1B%C3%B8l%A1%96%AF%A3%1F%F5%F8%DA%E9%0D%11%16%D0%CDq%19W