<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns="http://purl.org/rss/1.0/"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
 xmlns:admin="http://webns.net/mvcb/"
>

<channel rdf:about="http://duda.tordo.net">
<title>Dud project</title>
<link>http://duda.tordo.net</link>
<description>Maciej Duda - Devlog and publications</description>
<dc:language>en-us</dc:language>
<dc:publisher>mduda@tordo.net</dc:publisher>
<dc:creator>mduda@tordo.net</dc:creator>
<dc:subject>IT security, UNIX, web development</dc:subject>
<syn:updateFrequency>1</syn:updateFrequency>
<syn:updatePeriod>daily</syn:updatePeriod>
<items>
 <rdf:Seq>
  <rdf:li rdf:resource="http://duda.tordo.net/achievements/12" />
  <rdf:li rdf:resource="http://duda.tordo.net/achievements/11" />
  <rdf:li rdf:resource="http://duda.tordo.net/devlog/5" />
  <rdf:li rdf:resource="http://duda.tordo.net/devlog/4" />
  <rdf:li rdf:resource="http://duda.tordo.net/devlog/3" />
  <rdf:li rdf:resource="http://duda.tordo.net/devlog/2" />
  <rdf:li rdf:resource="http://duda.tordo.net/devlog/1" />
  <rdf:li rdf:resource="http://duda.tordo.net/achievements/8" />
  <rdf:li rdf:resource="http://duda.tordo.net/achievements/7" />
  <rdf:li rdf:resource="http://duda.tordo.net/achievements/3" />
  <rdf:li rdf:resource="http://duda.tordo.net/achievements/2" />
  <rdf:li rdf:resource="http://duda.tordo.net/achievements/1" />
  <rdf:li rdf:resource="http://duda.tordo.net/achievements/4" />
  <rdf:li rdf:resource="http://duda.tordo.net/achievements/9" />
  <rdf:li rdf:resource="http://duda.tordo.net/achievements/6" />
  <rdf:li rdf:resource="http://duda.tordo.net/achievements/5" />
  <rdf:li rdf:resource="http://duda.tordo.net/achievements/10" />
 </rdf:Seq>
</items>
</channel>
<item rdf:about="http://duda.tordo.net/achievements/12">
<title>Send email away</title>
<link>http://duda.tordo.net/achievements/12</link>
<description>Available in &#x3C;a href=&#x22;http://tordo.net/downloads/publications/send-email-away/Send-email-away_Maciej-Duda.pdf&#x22; rel=&#x22;nofollow&#x22;&#x3E;PDF format&#x3C;/a&#x3E;&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Reviewed by Alex Tomic&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h1&#x3E;Abstract&#x3C;/h1&#x3E;&#x3C;br /&#x3E;
This paper is participation in discussion about current status and future of an email Internet service. It&#x26;#39;s based mostly on my observations and experience in email and jabber server administration.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h1&#x3E;Introduction&#x3C;/h1&#x3E;	&#x3C;br /&#x3E;
Email is the most popular communication method over the Internet. It&#x26;#39;s also very old - it was designed in the early 70s, when people couldn&#x26;#39;t even dream of the Internet as it is now and that it would become this popular. Therefore they weren&#x26;#39;t putting a big effort to several architecture aspects crucial in the modern Internet. The way we use email now has evolved from simple sending of text messages to much more advanced tasks such as sharing files, using web-based user interfaces and using advanced sorting/filtering methods to organize our correspondence.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Emails&#x26;#39; early great success prevented people from implementing drastic changes into protocol, because they were afraid of losing users by blocking old clients from communication with new ones (backward compatibility). This brings many issues with which we must struggle nowadays.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h1&#x3E;Problems&#x3C;/h1&#x3E;&#x3C;br /&#x3E;
Over time email gained additional functionalities. It became a platform, which inspired users with new ways for conversation and data exchange. To fulfill new requirements, developers wrote many add-ons and workarounds such as anti-spam filters, authentication and encryption, which resulted in a very chaotic protocol architecture. So to deploy a solid and useful email service, system administrators must solve all the issues installing and configuring additional software. Lets take a look at details of email problems.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;Security: authentication and confidentiality&#x3C;/h2&#x3E;&#x3C;br /&#x3E;
Email doesn&#x26;#39;t require any type of authentication - everybody can send it from any host connected to the Internet and &#x26;quot;From&#x26;quot; field can be filed with anything the sender wants.&#x3C;br /&#x3E;
&#x3C;pre&#x3E;telnet target.email.server.com 25&#x3C;br /&#x3E;
HELO senders.domain.com&#x3C;br /&#x3E;
MAIL FROM: John Doe&#x3C;br /&#x3E;
RCPT TO: someone@target.email.server.com&#x3C;br /&#x3E;
DATA&#x3C;br /&#x3E;
body of message&#x3C;/pre&#x3E;There is no verification for sender so identity theft is quite easy. Some servers might perform reverse DNS lookup, which will check if IP address of telnet connection matches senders.domain.com DNS records, but it&#x26;#39;s just an unofficial naming convention, and does not have to be followed.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
The problem is that email is used in business and other communications, which requires a higher level of confidentiality during exchange of important information. There are available solutions such as PGP signatures, but they require preparations for both exchange sites to comply, so it&#x26;#39;s fairly difficult to be sure that the received email is legitimate and/or has been intercepted during transfer. SSL is another way to encrypt messages, but it&#x26;#39;s only for network transfer and the message itself is stored in plaintext on the server. Also recent SSL Certificate Authority problems [5] decrease the level of confidence.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Another aspect is the lack of end-to-end encryption. By default not only passwords are sent via plaintext, but also a body of correspondence, which makes it very easy to grab. It&#x26;#39;s worth mentioning, that emails are stored on servers in unencrypted format, which results in full access to them by system administrators and if server is being compromised, unauthorized person gets full access to email content.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
It&#x26;#39;s terrifying if you imagine that every email, which you read could be fabricated or read by somebody else.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;Spam, fraud and scam&#x3C;/h2&#x3E;&#x3C;br /&#x3E;
According to MAAWG [1]:&#x3C;pre&#x3E;from the first and second quarters of 2010, the percentage &#x3C;br /&#x3E;
of email identified as abusive has oscillated over the last&#x3C;br /&#x3E;
six quarters between 88% and 91%.&#x3C;/pre&#x3E;Users receive and process 9 out of 10 unwanted emails - bandwidth, hard drive space and processor time is simply wasted on spam. Filtering messages may end up with deleting important ones by accident. People get regularly tricked into using phishing websites distributed mostly over email. &#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;File exchange&#x3C;/h2&#x3E;&#x3C;br /&#x3E;
So you can add attachment to your email. Did you know that attachment size is 30% bigger, when you send it via email? It can&#x26;#39;t be stressed enough that email is not designed for file exchange. It&#x26;#39;s inconvenient, not efficient and ineffective. Also from an interface perspective inbox is not a file folder - files are not accessed in a straight-forward manner, you cant search the content of files and they are fully dependent on emails, which they are attached to - if the email is moved or deleted, the same happens to the attached file. Transmission is not peer-to-peer and that slows down whole process, so email delivery with large attachments is not instant. It needs to be fully delivered to server and then the recipient can download the email with the content.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
There are much better ways to exchange files over the Internet.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;Standardization&#x3C;/h2&#x3E;&#x3C;br /&#x3E;
Have you ever had a situation, where your legitimate email address was rejected by a website form validation? The problem is that there is lack of one true email address regular expression [2] available, because RFC [3] can be interpreted in many ways. This problem became visible, when Google Mail announced that every user can add suffix to his username to build additional email addresses for his account. The separator was &#x26;#39;+&#x26;#39; so John Doe can have email: &#x26;quot;johndoe+spam@gmail.com&#x26;quot; or &#x26;quot;johndoe+slashdot@gmail&#x26;quot; and every email sent on these accounts will end up in johndoe@gmail.com inbox. Many subscription services rejected subscribe forms with &#x26;#39;+&#x26;#39; in email address, which prevented Gmail users from applying this feature. &#x3C;br /&#x3E;
&#x3C;br /&#x3E;
I recommend to see this talk by rjbs, who covers most issues with email implementation and explains why standards are in terrible condition [4] &#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h1&#x3E;Can we do something about it?&#x3C;/h1&#x3E;&#x3C;br /&#x3E;
Surely there are many solutions and workarounds, which cover most of the mentioned problems (Gmail is a great example), but nevertheless the best solution would be to introduce a new standard, which wouldn&#x26;#39;t be backwards compatible to current email components and was adapted to present email use-cases. &#x3C;br /&#x3E;
&#x3C;br /&#x3E;
One of the most important improvements would be email filtering based on contact list - before delivering email, the sender would be required to be identified by the recipient as if he is willing to receive any emails from that sender. This kind of contact list is implemented in the XMPP protocol [6] and it solves many problems mentioned before: identity and spam/fraud. Perhaps this functionality should be optional, nevertheless it would be useful and efficient.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Google Wave was one recent email replacement attempt. It was supposed to be an email alternative by bringing new breath into communication over the Internet. Wave had everything - security, authentication, grouping and filtering messages and well designed file exchange. Unfortunately this project has been rejected resulting in it being shut down.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Another alternative might be the already mentioned XMPP protocol (which BTW Wave is based on), but it requires a suitable GUI to serve as an email alternative replacement, which it lacks for now.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h1&#x3E;The future of email&#x3C;/h1&#x3E;&#x3C;br /&#x3E;
Email does not go away, but there are trends in replacing POP3/SMTP interface with GUIs based on Web 2.0, which might be a chance to renew email standards so that it will fit more with current requirements. Users wont see any difference, because they don&#x26;#39;t need to set up anything in their Gmail or Facebook. Although they might gain new features like better grouping and threading correspondence.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h1&#x3E;References&#x3C;/h1&#x3E;[1] &#x3C;a href=&#x22;http://www.maawg.org/sites/maawg/files/news/MAAWG_2010_Q3Q4_Metrics_Report_14.pdf&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://www.maawg.org/sites/maawg/files/news/MAAWG_2010_Q3Q4_Metrics_Report_14.pdf&#x3C;/a&#x3E;&#x3C;br /&#x3E;
[2] &#x3C;a href=&#x22;http://www.regular-expressions.info/email.html&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://www.regular-expressions.info/email.html&#x3C;/a&#x3E;&#x3C;br /&#x3E;
[3] &#x3C;a href=&#x22;http://tools.ietf.org/html/rfc2822#section-3.4.1&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://tools.ietf.org/html/rfc2822#section-3.4.1&#x3C;/a&#x3E;&#x3C;br /&#x3E;
[4] &#x3C;a href=&#x22;http://rjbs.manxome.org/&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://rjbs.manxome.org/&#x3C;/a&#x3E;&#x3C;br /&#x3E;
[5] &#x3C;a href=&#x22;http://www.vasco.com/company/press_room/news_archive/2011/news_diginotar_reports_security_incident.aspx&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://www.vasco.com/company/press_room/news_archive/2011/news_diginotar_reports_security_incident.aspx&#x3C;/a&#x3E;&#x3C;br /&#x3E;
[6] &#x3C;a href=&#x22;http://xmpp.org/rfcs/rfc3921.html#int&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://xmpp.org/rfcs/rfc3921.html#int&#x3C;/a&#x3E;</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2012-01-25 00:00</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/achievements/11">
<title>Tordo Status System v2</title>
<link>http://duda.tordo.net/achievements/11</link>
<description>Client-server script, which collects info about Tordo network hosts and processes these data.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Source code and documentation is available at &#x3C;a href=&#x22;http://tordo.net:3000/projects/tss2&#x22; rel=&#x22;nofollow&#x22;&#x3E;project website&#x3C;/a&#x3E;.</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2012-01-09 00:00</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/devlog/5">
<title>My favourite IT security events in 2011</title>
<link>http://duda.tordo.net/devlog/5</link>
<description>Here is my subjective list of most interesting events. I hope that the lessons we learned in 2011 year will bring higher security awareness and result in less problems in 2012. Stay safe, everyone and remember to be always a little bit more paranoid.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;CA certificates takeover&#x3C;/h2&#x3E;SSL certificates became main target for attacks in Internet. There were MITM [1] and weaknesses in software responsible for cert verification [2], but most stunning was theft of CA from DigiNotar, which resulted in compromising whole tree of official certificates including Google Mail, Mozilla. Yahoo and Wordpress. For couple of days Internet froze because there was no guarantee that ssl certificate is valid and safe. DigiNotar announced bankruptcy on September 2011.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;LulzSec mayhem&#x3C;/h2&#x3E;As Sony Pictures Entertainment has became main target of attacks with over 20 hacks in two months, LulzSec popularity grew by every day. Their statement - cause mayhem no matter what - brought controversial opinions. People were cheering them to attack (mostly with DDoS method) more challenging targets including FBI and CIA, but when LulzSec began to target geek-related environments like EVE, LoL or Minecraft, their popularity wasn&#x26;#39;t strong as before. They also made enemies with other hacking groups and small civil war was inevitable. The story of LulzSec ends after 50 days of intensive activity. There are suspicions that other hackers compromised LulzSec members identities and forced them to suspend their activity. &#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;HBGary Federal incident&#x3C;/h2&#x3E;Thats one nice peace of story, which deserves movie adaptation. Security audit company hired by US government for consultent and infiltration of big hacking groups such as Wikileaks and Anonymous became victim of it&#x26;#39;s own techniques and incompetence. HBGary has been hacked by Anonymous compromising confidential emails, which revived unprofessional methods practiced by the company. &#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;RSA SecurID tokens fiasco&#x3C;/h2&#x3E;RSA used to have strong reputation before this incident, but the way they handled it by misinforming users about current statement resulted in permanent loss of market position be this company. The attack was represented as &#x26;quot;extremely sophisticated&#x26;quot;, was as a matter of fact easy to stop pdf/excel macro, which was executed by low priority employee.  &#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;References&#x3C;/h2&#x3E;[1] &#x3C;a href=&#x22;https://seventhoctober.net/2011/08/ssl-mitm-with-an-inserted-ca-and-a-dns-hijack/&#x22; rel=&#x22;nofollow&#x22;&#x3E;https://seventhoctober.net/2011/08/ssl-mitm-with-an-inserted-ca-and-a-dns-hijack/&#x3C;/a&#x3E;&#x3C;br /&#x3E;
[2] &#x3C;a href=&#x22;http://blog.spiderlabs.com/2011/07/twsl2011-007-ios-ssl-implementation-does-not-validate-certificate-chain.html&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://blog.spiderlabs.com/2011/07/twsl2011-007-ios-ssl-implementation-does-not-validate-certificate-chain.html&#x3C;/a&#x3E;</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2012-01-01 23:15</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/devlog/4">
<title>SOPA</title>
<link>http://duda.tordo.net/devlog/4</link>
<description>There is another attempt to regain control by US government and big corporations over the content posted on the Internet. This time it&#x26;#39;s called SOPA - Stop Online Piracy Act, which &#x3C;i&#x3E;gives broad powers to private actors. Any holder of intellectual property rights could simply send a letter to ad network operators like Google and to payment processors like MasterCard, Visa, and PayPal, demanding these companies cut off access to any site the IP holder names as an infringer.&#x3C;/i&#x3E; - &#x3C;a href=&#x22;http://arstechnica.com/tech-policy/news/2011/10/house-takes-senates-bad-internet-censorship-bill-makes-it-worse.ars&#x22; rel=&#x22;nofollow&#x22;&#x3E;Arstechnica&#x3C;/a&#x3E; &#x3C;br /&#x3E;
It means that my entire website might be blocked in USA on request from Tesla Motors because I posted pictures of their car on &#x3C;a href=&#x22;http://duda.tordo.net/devlog/3&#x22; rel=&#x22;nofollow&#x22;&#x3E;previous DevLog post&#x3C;/a&#x3E;.&#x3C;br /&#x3E;
Please, take a look at this case and consider participation in spreading information, because if it gets passed, &#x3C;a href=&#x22;http://news.cnet.com/8301-31921_3-57329001-281/how-sopa-would-affect-you-faq/&#x22; rel=&#x22;nofollow&#x22;&#x3E;we all will be affected&#x3C;/a&#x3E;. &#x3C;br /&#x3E;
Also US Congress clearly tries to hide information from general public about session results by publishing official delay on next year, but in fact &#x3C;a href=&#x22;http://www.youtube.com/watch?v=JhwuXNv8fJM&#x26;amp;feature=colike&#x22; rel=&#x22;nofollow&#x22;&#x3E;it will be brought up again on 21st December&#x3C;/a&#x3E;.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;More info&#x3C;/h2&#x3E;&#x3C;ul&#x3E;&#x3C;li&#x3E;&#x3C;a href=&#x22;http://americancensorship.org&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://americancensorship.org&#x3C;/a&#x3E;&#x3C;/li&#x3E;&#x3C;li&#x3E;&#x3C;a href=&#x22;http://www.youtube.com/watch?v=JhwuXNv8fJM&#x22; rel=&#x22;nofollow&#x22;&#x3E;TotalBiscuit on SOPA&#x3C;/a&#x3E;&#x3C;/li&#x3E;&#x3C;li&#x3E;&#x3C;a href=&#x22;http://news.cnet.com/8301-31921_3-57329001-281/how-sopa-would-affect-you-faq/&#x22; rel=&#x22;nofollow&#x22;&#x3E;SOPA FAQ&#x3C;/a&#x3E;&#x3C;/li&#x3E;&#x3C;/ul&#x3E;</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2011-12-18 01:30</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/devlog/3">
<title>I found Tesla Roadster</title>
<link>http://duda.tordo.net/devlog/3</link>
<description>It&#x26;#39;s really worth mentioning because there is only 2,000 of them worldwide.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;a href=&#x22;http://tordo.net/downloads/usr/mduda-g-UuYahqu8/gallery//cars/20111110312.jpg&#x22;&#x3E;&#x3C;img class=&#x22;dimg&#x22; src=&#x22;http://tordo.net/downloads/usr/mduda-g-UuYahqu8/gallery//cars/20111110312.jpg&#x22; alt=&#x22;&#x22; /&#x3E;&#x3C;/a&#x3E;&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;a href=&#x22;http://tordo.net/downloads/usr/mduda-g-UuYahqu8/gallery//cars/20111110314.jpg&#x22;&#x3E;&#x3C;img class=&#x22;dimg&#x22; src=&#x22;http://tordo.net/downloads/usr/mduda-g-UuYahqu8/gallery//cars/20111110314.jpg&#x22; alt=&#x22;&#x22; /&#x3E;&#x3C;/a&#x3E;&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;a href=&#x22;http://tordo.net/downloads/usr/mduda-g-UuYahqu8/gallery//cars/20111110313.jpg&#x22;&#x3E;&#x3C;img class=&#x22;dimg&#x22; src=&#x22;http://tordo.net/downloads/usr/mduda-g-UuYahqu8/gallery//cars/20111110313.jpg&#x22; alt=&#x22;&#x22; /&#x3E;&#x3C;/a&#x3E;</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2011-11-10 19:11</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/devlog/2">
<title>I successfully attached iPad to my wifi network</title>
<link>http://duda.tordo.net/devlog/2</link>
<description>Yes. It&#x26;#39;s not that easy, because my local wifi network has MAC filtering and long, complicated password.&#x3C;br /&#x3E;
Problems encountered:&#x3C;br /&#x3E;
&#x3C;ul&#x3E;&#x3C;li&#x3E;iPad owner doesn&#x26;#39;t know the MAC address and how to find it,&#x3C;/li&#x3E;&#x3C;li&#x3E;User interface in in Italian and I don&#x26;#39;t it that well,&#x3C;/li&#x3E;&#x3C;li&#x3E;iPads don&#x26;#39;t have usb port*&#x3C;/li&#x3E;&#x3C;/ul&#x3E;&#x3C;br /&#x3E;
I spent couple of minutes explaining what MAC is and why I need it. Another minutes lost on search MAC in iOS. Finally we found after I googled &#x26;quot;how to check MAC address in iPad&#x26;quot;. And finality entering more than 30 characters randomly generated password on &#x3C;b&#x3E;shitty on-screen keyboard&#x3C;/b&#x3E;. &#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Achievement unlocked.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
* - i keep password in encrypted text file stored on 256MB pendrive, so I don&#x26;#39;t need to type it in (also key-logger protection).</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2011-09-07 23:05</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/devlog/1">
<title>Dud project 5 released</title>
<link>http://duda.tordo.net/devlog/1</link>
<description>I like this project. It&#x26;#39;s all about me - content and technology. It&#x26;#39;s representation of my programming and system administrating skills my interests and thoughts.&#x3C;br /&#x3E;
This one practical version is special. It&#x26;#39;s the milestone of my career, because &#x3C;i&#x3E;Dud projec&#x3C;/i&#x3E;t is totally written in Perl as in previous versions, everything was in PHP. I started coding in Perl three years ago thanks to &#x3C;a href=&#x22;http://www.ctrl-alt-del.cc/&#x22; rel=&#x22;nofollow&#x22;&#x3E;tqm&#x3C;/a&#x3E;. Now it&#x26;#39;s my main and favorite programming environment.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
So let&#x26;#39;s see under the hood what do we have here.&#x3C;br /&#x3E;
&#x3C;ul&#x3E;&#x3C;li&#x3E; Perl 5 (strict),&#x3C;/li&#x3E;&#x3C;li&#x3E; &#x3C;a href=&#x22;http://www.catalystframework.org/&#x22; rel=&#x22;nofollow&#x22;&#x3E;Catalyst web framework&#x3C;/a&#x3E;,&#x3C;/li&#x3E;&#x3C;li&#x3E;Template-Toolkit,&#x3C;/li&#x3E;&#x3C;li&#x3E; hosted on lighttpd web server in FastCGI mode,&#x3C;/li&#x3E;&#x3C;/ul&#x3E;I like this environment very much. I&#x26;#39;m surprised with it&#x26;#39;s performance because I usually consider frameworks quite slow.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;New Tordo.net website&#x3C;/h2&#x3E;Apache has been totally abandoned on main Tordo and everything is now hosted on earlier mentioned lighttpd, so I decided to use this as good excuse for small refresh. Here is new front page website - &#x3C;a href=&#x22;http://tordo.net&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://tordo.net&#x3C;/a&#x3E;</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2011-08-05 22:47</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/achievements/8">
<title>SANS Security Essentials Bootcamp Style - participation</title>
<link>http://duda.tordo.net/achievements/8</link>
<description>&#x3C;h2&#x3E;Description&#x3C;/h2&#x3E;&#x3C;br /&#x3E;
&#x3C;a href=&#x22;http://www.sans.org/security-training/security-essentials-bootcamp-style-61-mid&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://www.sans.org/security-training/security-essentials-bootcamp-style-61-mid&#x3C;/a&#x3E;</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2011-05-21 00:00</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/achievements/7">
<title>Unison implementation</title>
<link>http://duda.tordo.net/achievements/7</link>
<description>&#x3C;h2&#x3E;Description&#x3C;/h2&#x3E;Dropbox is popular service, for backing up local files. I like the idea very much - having my data on separate host, which keeps backup copies even after removing them locally. I love that Dropbox responds to my actions on files almost instantly. I have been using it for more than one year and there is only one problem with Dropbox - my files are on someone else servers.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Every time I put new file into Dropbox folder, I must think what kind of data is it and would I allow it to leak. I really do not have any reason to trust someone, who offers me solid service for free. So this is big chance that my files are the price.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
Currently I&#x26;#39;m working on alternative solution using open source applications and bash scripts. This is what I came up with so far.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;Expectations&#x3C;/h2&#x3E;There are several things which must be involved to be accepted as good solution for my problem:&#x3C;br /&#x3E;
&#x3C;ul&#x3E;&#x3C;li&#x3E;Encryption of the connection between hosts,&#x3C;/li&#x3E;&#x3C;li&#x3E;Both ways synchronization,&#x3C;/li&#x3E;&#x3C;li&#x3E;Mechanism, which prevents from loosing data in conflict situations,&#x3C;/li&#x3E;&#x3C;li&#x3E;System must keep files up to date on all hosts instantly,&#x3C;/li&#x3E;&#x3C;li&#x3E;Platform independent software,&#x3C;/li&#x3E;&#x3C;li&#x3E;Without GUI&#x3C;/li&#x3E;&#x3C;/ul&#x3E;&#x3C;br /&#x3E;
My solution presented below covers all these requirements, but one of them (up to date sync) is non-functional therefore it&#x26;#39;s hard to tell if my solution is satisfiable.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;Concept&#x3C;/h2&#x3E;My implementation works in star network topology, which means that there is one central host, which is always on-line and all my desktop computers are connected to this main host. So every time the file is being changed, said change is being duplicated on main host. After that all other hosts update their files tree based on changes available on main host.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;Requirements&#x3C;/h2&#x3E;&#x3C;ul&#x3E;&#x3C;li&#x3E;Unison 2.32 (&#x3C;a href=&#x22;http://www.cis.upenn.edu/~bcpierce/unison/&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://www.cis.upenn.edu/~bcpierce/unison/&#x3C;/a&#x3E;)&#x3C;/li&#x3E;&#x3C;li&#x3E;ssh public key auth&#x3C;/li&#x3E;&#x3C;li&#x3E;crontab access&#x3C;/li&#x3E;&#x3C;/ul&#x3E;&#x3C;h2&#x3E;Installation&#x3C;/h2&#x3E;&#x3C;ul&#x3E;&#x3C;li&#x3E;Install unison on your system,&#x3C;/li&#x3E;&#x3C;li&#x3E;Put config file listed below and modify it to fit your preferences&#x3C;/li&#x3E;&#x3C;li&#x3E;Put unison_exec_script.sh listed below and let cron run it (Cron part explained below)&#x3C;/li&#x3E;&#x3C;/ul&#x3E;&#x3C;br /&#x3E;
&#x3C;h2&#x3E;Unison config file&#x3C;/h2&#x3E;Config files are stored is ~/.unison/PROFILE.prf&#x3C;br /&#x3E;
and to use this profile, unision requires it&#x26;#39;s name as first parameter in command line.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;pre&#x3E;# Unison preferences file&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
# === Main ===&#x3C;br /&#x3E;
# first &#x26;quot;root&#x26;quot; is for local storage&#x3C;br /&#x3E;
# You fill in upper case parts&#x3C;br /&#x3E;
root = /home/USERNAME&#x3C;br /&#x3E;
# remote folder&#x3C;br /&#x3E;
# this additional slash in front of folder path is not a mistake&#x3C;br /&#x3E;
root = ssh://USERNAME@REMOTE_HOST//home/USERNAME/SOME_FOLDER&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
# === Paths ===&#x3C;br /&#x3E;
path = Documents&#x3C;br /&#x3E;
# so this one is /home/USERNAME/Documents&#x3C;br /&#x3E;
path = Pictures&#x3C;br /&#x3E;
# ... as many folders as you want&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
# === Backup ===&#x3C;br /&#x3E;
# in case of conflict between local and remote file, Unity will &#x3C;br /&#x3E;
# create local backup copy of the file in folder specified in backupdir&#x3C;br /&#x3E;
backuplocation = central&#x3C;br /&#x3E;
backupdir = .pocket-backup&#x3C;br /&#x3E;
backup = Name *&#x3C;br /&#x3E;
backupprefix = $VERSION. # Do not edit this line&#x3C;br /&#x3E;
backupsuffix =&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
# === Logfile ===&#x3C;br /&#x3E;
log = true&#x3C;br /&#x3E;
logfile = ~/.unison/unison.log&#x3C;/pre&#x3E;&#x3C;br /&#x3E;
&#x3C;h2&#x3E;Scripts&#x3C;/h2&#x3E;&#x3C;br /&#x3E;
This script checks two things before running unison. Firstly it pings the server to check if it&#x26;#39;s on-line. Secondly it checks if other unison process is running. Second check must be performed, because big files might take a while to be transferred and this task might not be completed before next cron run.&#x3C;br /&#x3E;
&#x3C;pre&#x3E;#!/bin/bash&#x3C;br /&#x3E;
# unison_exec_script.sh&#x3C;br /&#x3E;
# Tordo Systems 2011 Maciej Duda&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
server=&#x26;quot;server.address.com&#x26;quot;;&#x3C;br /&#x3E;
unipid=`/bin/pidof unison`;&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
if ! ping -w 5 -c 1 $server &#x26;amp;&#x26;gt;/dev/null ;&#x3C;br /&#x3E;
then&#x3C;br /&#x3E;
	# host down&#x3C;br /&#x3E;
	datenow=`date +%F_%T`&#x3C;br /&#x3E;
	echo $datenow &#x26;quot;server down&#x26;quot; &#x26;gt; ~/.unison/unison.log&#x3C;br /&#x3E;
else&#x3C;br /&#x3E;
	# check if process is already running&#x3C;br /&#x3E;
	if kill -0 &#x26;quot;$unipid&#x26;quot; &#x26;gt;/dev/null 2&#x26;gt;&#x26;amp;1;&#x3C;br /&#x3E;
	then&#x3C;br /&#x3E;
		# debug&#x3C;br /&#x3E;
		datenow=`date +%F_%T`&#x3C;br /&#x3E;
		echo $datenow &#x26;quot;running&#x26;quot; &#x26;gt; ~/.unison/unison.log&#x3C;br /&#x3E;
	else&#x3C;br /&#x3E;
		exec /usr/bin/unison your_unison_profile_name -batch -silent&#x3C;br /&#x3E;
	fi&#x3C;br /&#x3E;
fi&#x3C;/pre&#x3E;&#x3C;br /&#x3E;
&#x3C;h2&#x3E;Crontab&#x3C;/h2&#x3E;This script requires to be added to cron. I am testing it on every-minute settings so all my data are up to date but it&#x26;#39;s not necessary if you use only one client. Then 10 minutes cycle might be enough.&#x3C;br /&#x3E;
&#x3C;pre&#x3E;* * * * * /path/to/script/unison_exec_script.sh &#x26;gt;/dev/null 2&#x26;gt;&#x26;amp;1&#x3C;/pre&#x3E;&#x3C;br /&#x3E;
&#x3C;h2&#x3E;Research&#x3C;/h2&#x3E;I was looking for many solutions. Currently there is no free open-source software, which fulfills all my needs and it&#x26;#39;s as easy to install as Dropbox. Below I put a list of other applications, which can be used for synchronizing your files.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
rsync&#x3C;br /&#x3E;
lsync - &#x3C;a href=&#x22;http://code.google.com/p/lsyncd/&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://code.google.com/p/lsyncd/&#x3C;/a&#x3E;&#x3C;br /&#x3E;
lipsync - &#x3C;a href=&#x22;https://github.com/philcryer/lipsync&#x22; rel=&#x22;nofollow&#x22;&#x3E;https://github.com/philcryer/lipsync&#x3C;/a&#x3E;&#x3C;br /&#x3E;
xsync - &#x3C;a href=&#x22;http://code.google.com/p/xsync/&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://code.google.com/p/xsync/&#x3C;/a&#x3E;&#x3C;br /&#x3E;
aerofs - &#x3C;a href=&#x22;http://www.aerofs.com/&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://www.aerofs.com/&#x3C;/a&#x3E;&#x3C;br /&#x3E;
syncany - &#x3C;a href=&#x22;http://www.syncany.org/&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://www.syncany.org/&#x3C;/a&#x3E;&#x3C;br /&#x3E;
sparkleshare - &#x3C;a href=&#x22;http://sparkleshare.org/&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://sparkleshare.org/&#x3C;/a&#x3E;</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2011-02-11 00:00</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/achievements/3">
<title>Why Apple?</title>
<link>http://duda.tordo.net/achievements/3</link>
<description>&#x3C;h2&#x3E;Introduction&#x3C;/h2&#x3E;This article says about pros and cons of MacBook pro manufactured by Apple.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;Download&#x3C;/h2&#x3E;&#x3C;a href=&#x22;http://tordo.net/downloads/publications/why-apple/Why_mac-Maciej_Duda_ver1.1.pdf&#x22; rel=&#x22;nofollow&#x22;&#x3E;pdf&#x3C;/a&#x3E;</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2010-01-02 00:00</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/achievements/2">
<title>Analysis of Slowloris - HTTP DDoS method</title>
<link>http://duda.tordo.net/achievements/2</link>
<description>&#x3C;h2&#x3E;Description&#x3C;/h2&#x3E;This paper is about unique DDoS attack on web servers.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;Download&#x3C;/h2&#x3E;&#x3C;a href=&#x22;http://tordo.net/downloads/publications/slowloris/Slowloris_http_DoS_raport.pdf&#x22; rel=&#x22;nofollow&#x22;&#x3E;Slowloris DoS attack&#x3C;/a&#x3E; po polsku&#x3C;br /&#x3E;
&#x3C;a href=&#x22;http://tordo.net/downloads/publications/slowloris/Slowloris_http_DoS_report_en.pdf&#x22; rel=&#x22;nofollow&#x22;&#x3E;Slowloris DoS attack&#x3C;/a&#x3E; in english</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2009-06-18 00:00</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/achievements/1">
<title>Mad_Encrypt - text encryption tool</title>
<link>http://duda.tordo.net/achievements/1</link>
<description>&#x3C;h2&#x3E;Introduction&#x3C;/h2&#x3E;Fast and effective tool which encrypts and decrypts text. Useful for safe exchange of data for example via e-mail.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
The algorithm used in this project is called AES (Advanced Encryption Standard). It is symmetric key algorithm, so to encrypt and decrypt information, sender and receiver must have the same key.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;Requirements&#x3C;/h2&#x3E;This application requires:&#x3C;br /&#x3E;
&#x3C;ul&#x3E;&#x3C;li&#x3E;Windows XP/7&#x3C;/li&#x3E;&#x3C;li&#x3E;.Net Framework 2&#x3C;/li&#x3E;&#x3C;/ul&#x3E;&#x3C;h2&#x3E;Screenshots&#x3C;/h2&#x3E;&#x3C;a href=&#x22;http://tordo.net/downloads/projects/mad_encrypt/screenshots/mad_encrypt_24.png&#x22;&#x3E;&#x3C;img class=&#x22;dimg&#x22; src=&#x22;http://tordo.net/downloads/projects/mad_encrypt/screenshots/mad_encrypt_24.png&#x22; alt=&#x22;&#x22; /&#x3E;&#x3C;/a&#x3E;&#x3C;h2&#x3E;Download&#x3C;/h2&#x3E;&#x3C;a href=&#x22;http://tordo.net/downloads/projects/mad_encrypt/Mad_Encrypt_24.exe&#x22; rel=&#x22;nofollow&#x22;&#x3E;version 2.4&#x3C;/a&#x3E;</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2009-03-31 00:00</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/achievements/4">
<title>GAP - lightweight php picture gallery</title>
<link>http://duda.tordo.net/achievements/4</link>
<description>&#x3C;h2&#x3E;Description&#x3C;/h2&#x3E;GAP is Internet photo gallery written in PHP, which is based on folder content scanning.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;h2&#x3E;Functions&#x3C;/h2&#x3E;&#x3C;ul&#x3E;&#x3C;li&#x3E;Very light and fast gallery system,&#x3C;/li&#x3E;&#x3C;li&#x3E;Multiple galleries,&#x3C;/li&#x3E;&#x3C;li&#x3E;Requires least actions from user to add new gallery,&#x3C;/li&#x3E;&#x3C;li&#x3E;Pictures display order is based on added time - newest photos are shown first,&#x3C;/li&#x3E;&#x3C;li&#x3E;Configurable thumbnails count,&#x3C;/li&#x3E;&#x3C;/ul&#x3E;&#x3C;h2&#x3E;Download&#x3C;/h2&#x3E;&#x3C;a href=&#x22;http://tordo.net/downloads/projects/gap/31/GAP_3.1-no_admin.tar.gz&#x22; rel=&#x22;nofollow&#x22;&#x3E;version 3.1&#x3C;/a&#x3E;</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2008-12-11 00:00</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/achievements/9">
<title>Which Linux distribution to choose [pl]</title>
<link>http://duda.tordo.net/achievements/9</link>
<description>Article was written for portal &#x3C;a href=&#x22;http://hack.pl&#x22; rel=&#x22;nofollow&#x22;&#x3E;hack.pl&#x3C;/a&#x3E; to answer most common question on the forums.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;a href=&#x22;http://hack.pl/forum/faq/4936-%5Blinux%5D-jaka-dystrybucje-linuksa-wybrac.html&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://hack.pl/forum/faq/4936-%5Blinux%5D-jaka-dystrybucje-linuksa-wybrac.html&#x3C;/a&#x3E;</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2008-10-16 00:00</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/achievements/6">
<title>CatNet  (todo)</title>
<link>http://duda.tordo.net/achievements/6</link>
<description></description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2008-05-12 00:00</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/achievements/5">
<title>Folder backup script for Linux</title>
<link>http://duda.tordo.net/achievements/5</link>
<description>&#x3C;h2&#x3E;Description&#x3C;/h2&#x3E;This script creates copy of listed folders in daily routine.&#x3C;br /&#x3E;
&#x3C;h2&#x3E;Source code&#x3C;/h2&#x3E;&#x3C;pre&#x3E;#!/bin/bash&#x3C;br /&#x3E;
# MakeBackup 1.0&#x3C;br /&#x3E;
# Author: Maciej Duda&#x3C;br /&#x3E;
# License: GNU GPL&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
# list of folders to archive&#x3C;br /&#x3E;
# each one in new line&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
DIR_SOURCE=(&#x3C;br /&#x3E;
/home/maddud/public_html_head/catnet&#x3C;br /&#x3E;
/home/maddud/00/projects&#x3C;br /&#x3E;
)&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
# name of daily achive&#x3C;br /&#x3E;
# example: 2008-03-15&#x3C;br /&#x3E;
DATE_NOW=`date +%F`&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
# full path, where you are going to store your archives&#x3C;br /&#x3E;
DIR_DEST=/media/freespace/Archive_Backup/$DATE_NOW&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
mkdir -p $DIR_DEST&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
EC=${#DIR_SOURCE[@]}&#x3C;br /&#x3E;
IN=0&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
while [ &#x26;quot;$IN&#x26;quot; -lt &#x26;quot;$EC&#x26;quot; ]&#x3C;br /&#x3E;
        do&#x3C;br /&#x3E;
        cp -R ${DIR_SOURCE[$IN]} $DIR_DEST&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
        let &#x26;quot;IN = $IN + 1&#x26;quot;&#x3C;br /&#x3E;
        done&#x3C;br /&#x3E;
DIR_DEST_SIZE=`du -hs $DIR_DEST | awk &#x26;#39;&#x26;#39;{ print $1 }&#x26;#39;&#x26;#39;`&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
mv $DIR_DEST $DIR_DEST&#x26;quot;_&#x26;quot;$DIR_DEST_SIZE&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
# eof&#x3C;br /&#x3E;
&#x3C;/pre&#x3E;To execute this script daily, add this line to cron and change path to fit your file destination.&#x3C;pre&#x3E;55 23 * * * /home/maddud/scripts/make_backup.sh&#x3C;/pre&#x3E;</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2008-03-15 00:00</dc:date>
</item>
<item rdf:about="http://duda.tordo.net/achievements/10">
<title>Encryption in practice [pl]</title>
<link>http://duda.tordo.net/achievements/10</link>
<description>Article written for &#x3C;a href=&#x22;http://hack.pl&#x22; rel=&#x22;nofollow&#x22;&#x3E;hack.pl&#x3C;/a&#x3E;.&#x3C;br /&#x3E;
&#x3C;br /&#x3E;
&#x3C;a href=&#x22;http://hack.pl/forum/faq/5059-szyfrowanie-danych-praktyczne-zastosowania.html&#x22; rel=&#x22;nofollow&#x22;&#x3E;http://hack.pl/forum/faq/5059-szyfrowanie-danych-praktyczne-zastosowania.html&#x3C;/a&#x3E;</description>
<dc:creator>Maciej Duda</dc:creator>
<dc:date>2008-02-11 00:00</dc:date>
</item>
</rdf:RDF>
