Archive for the ‘ Blog ’ Category

A Fusion of Mutt, Gmail, Offlineimap, msmtp, and PGP


Email clients suck, Mutt just sucks less (yes I did rip off their slogan).  There are tons of email clients out there, most of which really do suck badly.  I used the Gmail client for some time and it was OK, for a web client.  I could have used sane thread handling, actually showing email that got sent to myself, S/MIME or PGP support (preferably PGP), not having to fire up resource heavy firefox, etc etc.  Now let me preface this by saying that Mutt is not for everyone.  It is a terminal based client, making it great for ssh, and it has a very steep learning curve.  One mistake people commonly make is that they assume that, like most other email clients, Mutt handles receiving, sending and viewing email.  This is an incorrect assumption as mutt is solely a MUA (Mail User Agent).  The idea is that you piece together exactly how you want your email system to work.  This means that it requires a lot of work on the users end to configure the system, although it does afford the advantage of having an email setup that does exactly what you want it to do, exactly how you want it done.

With that being said, I will first explain in words what my setup is, how it works, and why it makes sense to do it this way…then I will include all relevant configuration files along the way.

So I have Mutt, and my massively customized .muttrc. It includes where my folders are located, how I want key bindings to behave, colors, PGP settings, key bindings hooks for sending from the appropriate addresses, how i want to edit and view my headers, that I want to use vim to edit email, how email threads should look, blah blah blah. Below is my muttrc in all of its glory. I have painstakingly commented all the relevant pieces so everything makes sense to the normal person (and to me when I forget what stuff does. I have excluded certain pieces to avoid getting spammed :p )

 # dirs, dirs, and more dirs. self explanatory
set mbox_type = Maildir
set mbox = "~/mail/gmail"
set folder = "~/mail/gmail"
set spoolfile = +INBOX
set postponed = +drafts
set trash = +trash                              # special folder. you will need the trash patch
folder-hook . 'set record = ^'                  # store sent mail in the same folder as sent from
set header_cache =~/.mutt/cache/headers
set tmpdir = ~/.mutt/temp
set mailcap_path = ~/.mailcap
set hostname = behemoth.al3k.net
set timeout = 3                                 # idle time before scanning
unset beep                                      # stop beeping at me
alternates (a regex that includes all of the email address you send and receive mail to/froma>)

# Header related stuff
ignore *                                        # ignore everything
unignore From: To: Cc: Date: Subject:           # only unignore stuff i want to see
unignore x-mailer: x-pgp-key: posted-to:        # only unignore stuff i want to see
unignore User-Agent:                            # only unignore stuff i want to see
hdr_order From: To: Cc: Date: Subject:          # the order I want the unignored stuff to display
my_hdr X-PGP-Key: http://opensource.osu.edu/~al3k/pubkey.asc

# composing stuff
set realname = "Alek Rollyson"                  # set my name
set edit_headers                                # include headers when editing
set fast_reply                                  # skip to composing when replying
set reply_to                                    # reply to Reply to: field
set include                                     # include messages in replies
set forward_quote                               # include messages in forwards
set attribution = "On %d, %n wrote:"            # set the attribution
unset mime_forward                              # include attachments as part of the body
set sig_dashes = yes                            # dashes in my siggy
set sig_on_top                                  # put my signature before the forwarded message
set askcc                                       # ask for CC:
set forward_format = "Fwd: %s"                  # format for subject when forwarding
set use_envelope_from                           # make sure From: and the smtp sender match up
set ispell = "aspell -e -c"                     # use aspell as ispell
set sendmail_wait = "-1"                        # Don't wait for sendmai;
set user_agent                                  # show people i'm using mutt!
set copy = yes                                  # keep sent messages

# Sorting, Markers etc.
set display_filter = mail-to-filter             # cuts off long to: lines
#set implicit_autoview                          # figure out autoview stuff automatically. stupid html mail
alternative_order text/plain text/html          # don't prefer html over plain text
unset move                                      # gmail does that
set delete                                      # don't ask to delete, just do
unset confirmappend                             # don't ask to append, just do!
set quit                                        # don't ask to quit, just do!!
unset mark_old                                  # don't mark as old, it's pointless
set tilde                                       # pretty tildes in the pager like vim
set markers=no                                  # don't put '+' at the beginning of wrapped lines
set pager_index_lines= 20                       # how large is the index window?
set pager_stop                                  # don't automatically go to the next message
set menu_scroll                                 # scroll in menus
set sort = 'threads'                            # thread style
set sort_aux = 'reverse-last-date'              # secondary sorting after threading. gmail-like
set sort_browser='reverse-date'                 # fixes the way thread sorting handles dates, makes more sense
#set nostrict_threads                           # fuzzy threading. don't always group like subjects

# Vim!
set editor= "vim +:silent+/^$"                  # use vim and skip to the first blank line

# random macros and bindings. adding vim things and bindings for external programs
bind pager gg top
bind pager G  bottom
bind pager,index K  previous-undeleted
bind pager,index J  next-undeleted
bind pager,index j  next-entry
bind pager,index k  previous-entry
bind index,pager R group-reply
bind index B bounce-message
set query_command = "abook --mutt-query '%s'"
bind editor  complete-query
bind editor ^T complete
macro index,pager Z "!offlineimap -q -o -u Curses.Blinkenlights\n" "invoke offlineimap"  << this may be useless since I now daemonize offlineimap
macro generic,index,pager \Ca "abook" "launch abook"
macro index,pager A "
abook --add-email" "add sender to abook"
macro pager,index I "!" "go to Inbox"

# macros to source profiles for different email addresses
macro   index,pager      ":source ~/.mutt/profile.gmail\n"
macro   index,pager      ":source ~/.mutt/profile.al3k\n"
macro   index,pager      ":source ~/.mutt/profile.arollyson\n"
macro   index,pager     ":source ~/.mutt/profile.matrix\n"
macro   index,pager     ":source ~/.mutt/profile.opensource\n"
macro   index,pager     ":source ~/.mutt/profile.osu\n"

# teh source!
source ~/.mutt/autoview                      # autoview stuff for mailcap
source `FILE=$HOME/.mutt/sidebar; mutt -v | grep -Fq sidebar || FILE=/dev/null; echo $FILE` # conditionally source sidebar
source ~/.mutt/profile.gmail                 # default profile to source
source `FILE=$HOME/.mutt/colors; [[ $TERM =~ 256 ]] && FILE=$HOME/.mutt/256colors; echo $FILE` #conditionally source 256 colors
source ~/.mutt/subscriptions                 # Define the list of subscribed mailing lists.
source ~/.mutt/gpg                      # gpg stuffs

# reply hooks to send from correct addresses
reply-hook "~C ()$" source ~/.mutt/profile.matrix\n
reply-hook "~C ()" source ~/.mutt/profile.osu\n
reply-hook "~C ()" source ~/.mutt/profile.arollyson\n
reply-hook "~C ()" source ~/.mutt/profile.gmail\n
reply-hook "~C (
)" source ~/.mutt/profile.al3k\n
reply-hook "~C ()" source ~/.mutt/profile.opensource\n

I use vim as my email composer and there are a few tricks to get vim to play well with mutt.  Here is a snippet from my vimrc that enables spellchecking for mutt files and a few key bindings to may my mail look pretty when I’m done slapping on my keyboard.

augroup MUTT
au BufRead ~/.mutt/temp/mutt* set spell " <-- vim 7 required
au BufRead ~/.mutt/temp/mutt* nmap  <F3>  gqap
au BufRead ~/.mutt/temp/mutt* nmap  <F4>  gqqj
au BufRead ~/.mutt/temp/mutt* nmap  <F5>  kgqj
au BufRead ~/.mutt/temp/mutt* map!  <F3>  <ESC>gqapi
au BufRead ~/.mutt/temp/mutt* map!  <F4>  <ESC>gqqji
au BufRead ~/.mutt/temp/mutt* map!  <F5>  <ESC>kgqji
augroup END

Pretty self explanatory if you’re familiar with vim.  Enables spellchecking for mutt composition and gives me F3 – F5 for nice paragraph formatting.

As far as the F key mappings and reply hooks go, this is how I send from multiple addresses in Mutt easily. Whenever I want to send as a certain address I just hit the corresponding F key from within mutt and then go on composing merrily. The reply hooks ensure that I always reply as the address the email was addressed to. Reply hooks essentially work the same as send-hooks except backwards. They are not very well documented in the Mutt manual, which is a shame because they are extremely useful in cases like this.  The F keys source profiles that I have in my .mutt folder, they all must identical (except for different values in the variables of course) since they are sourcing out the same information.  Here is a skeleton profile that I use:

 # Mutt sender profile: alek.rollyson

# Signature file
set signature='~/.mutt/signature-al3k'

#smtp settings
set sendmail='/usr/bin/msmtp -a al3k'

# Customized headers
set from="al3k@al3k.net"

# Include the profile name in the status line
set status_format="-%r-Mutt: %f [Msgs:%?M?%M/?%m%?n? New:%n?%?o? Old:%o?%?d? Del:%d?%?F? Flag:%F?%?t? Tag:%t?%?p? Post:%p?%?b? Inc:%b? %?l? %l?]---(%s/%S)-al3k-%>-(%P)---"

As you can see, each profile contains a path to the correct signature for that profile, setting the “send from” variable, passing the correct arguments to msmtp (which will be covered later), and setting the status bar to show which profile I am actually using…in this case al3k is the profile.  The default profile sourced is set in my muttrc (see above) and I can switch them out at will by hitting F7 through F12 in Mutt.

Now this is how I view and compose mail, sending and receiving is a different story; I will begin with how I receive my email. Bottom line, offlineimap is awesome. I realize Mutt has built in imap support, but it is mega slow and I would rather have a local copy anyways. From the offlineimap project github site, “You get a current copy of your messages on each computer, and changes you make one place will be visible on all other systems. For instance, you can delete a message on your home computer, and it will appear deleted on your work computer as well. OfflineIMAP is also useful if you want to use a mail reader that does not have IMAP support, has poor IMAP support, or does not provide disconnected operation.” The one downside to this is that it’s tough to find a solution to store your passwords in a secure way. For now I just store them directly in the file as I have an encrypted disk. In the future I would like to whip up a simple python keyring to store these safely, gnome-keyring and kwallet are waaaay too bloated for me to feel worth using them. Here is my .offlineimaprc

[general]
accounts = Gmail
ui = Noninteractive.Quiet
maxconnections = 3

[Account Gmail]
localrepository = mylocal
remoterepository = Gmail
autorefresh = 5
quick = 10

[Repository mylocal]
type = Maildir
localfolders = ~/mail/gmail

[Repository Gmail]
type = Gmail
remoteuser = yea...
remotepass = hah!
ssl = yes
realdelete = no
folderfilter = lambda foldername: not re.search('.*All Mail$', foldername)
nametrans = lambda folder: re.sub('.*Spam$', 'spam', re.sub('.*Drafts$', 'drafts', re.sub('.*Sent Mail$', 'sent', re.sub('.*Starred$', 'flagged', re.sub('.*Trash$', 'trash', folder)))))

Just insert your username and password where needed and chmod 0600 the file. The nametrans function just uses a regex to translate the goofy gmail virtual folders into names that actually make sense. Feel free to change the names of localrepository and whatever else, just my setup…doesn’t have to be yours.

The, I use this short script stolen from the Arch Linux wiki to quickly daemonize a program that i place in ~/build/start_daemon (offlineimap occasionally crashes and becomes a resource hog, this takes care of that problem):

#!/bin/sh
set -e -f -u

while getopts n:c:p: f; do
case $f in
n) NICE=$OPTARG;;
c) IONICE_CLASS=$OPTARG;;
p) IONICE_PRIORITY=$OPTARG;;
*) exit 2;;
esac
done
shift $((OPTIND - 1))
cmd=$*

if ! pgrep -u "$UID" -xf -- "$cmd" &gt;/dev/null 2&gt;&amp;1; then
nice_args=
ionice_args=

var2arg() {
if [ -n "$3" ]; then
eval "$1=$2\ $3\ \$$1"
fi
}

arg2cmd() {
if [ -n "$2" ] &amp;&amp; type "$1" &gt;/dev/null 2&gt;&amp;1; then
cmd="$* -- $cmd"
fi
}

var2arg nice_args   -n "$NICE"
var2arg ionice_args -c "$IONICE_CLASS"
var2arg ionice_args -n "$IONICE_PRIORITY"

arg2cmd nice   "$nice_args"
arg2cmd ionice "$ionice_args"

exec $cmd
fi

And then set up a cron job to run this every five minutes:

*/5 * * * * exec ~/build/start_daemon -n19 -c2 -p7 python /usr/bin/offlineimap

Ta da! offlineimap is syncing your local copy of your inbox with gmail every 5 minutes, all changes made at any point will be reflected everywhere, plus you have an offline copy of your inbox to work with!

For sending mail, I use the lightweigh msmtp and it works awesomely for me.  You saw above that each profile sets the sendmail command, which is smtp followed by the argument -a and the name of the profile.  This makes it extremely easy to send from different smtp servers and email addresses at will.  Here is a skeleton .msmtprc that is similar to the one I use:

# Set default values for all following accounts.
defaults
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/logs/msmtp.log

# GMAIL
account gmail
host <one of my smtp servers>
port 587
from <one of my email addresses>
domain <domain of the email address
auth on
user <username for the server>
password <password for the server>

# arollyson
account arollyson
host <one of my smtp servers>
port 587
from <a different email addresses>
domain <domain of the different email address
auth on
user <username for the other server>
password <password for the other server>

With that setup you can send from the different accounts via msmtp -a <accountname>, works pretty well for me.
As far as PGP signing/encrypting goes, it’s rather simple as well.  I borrowed a piece of configuration from another guy who was nice enough to write about his mutt setup and combined it with some gnupg configuration to get a very nice PGP + mutt combination.  As you can see above in my .muttrc I source a file called ~/.mutt/gpg which contains all of my gpg settings and looks like so…

# %p    The empty string when no passphrase is needed,
#       the string "PGPPASSFD=0" if one is needed.
#
#       This is mostly used in conditional % sequences.
#
# %f    Most PGP commands operate on a single file or a file
#       containing a message.  %f expands to this file's name.
#
# %s    When verifying signatures, there is another temporary file
#       containing the detached signature.  %s expands to this
#       file's name.
#
# %a    In "signing" contexts, this expands to the value of the
#       configuration variable $pgp_sign_as.  You probably need to
#       use this within a conditional % sequence.
#
# %r    In many contexts, mutt passes key IDs to pgp.  %r expands to
#       a list of key IDs.

# decode application/pgp
set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f"

# verify a pgp/mime signature
set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f"

# decrypt a pgp/mime attachment
set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f"

# create a pgp/mime signed attachment
set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f"

# create a application/pgp signed (old-style) message
set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f"

# create a pgp/mime encrypted attachment
set pgp_encrypt_only_command="/usr/lib/mutt/pgpewrap gpg -v --batch --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f"

# create a pgp/mime encrypted and signed attachment
set pgp_encrypt_sign_command="/usr/lib/mutt/pgpewrap gpg --passphrase-fd 0 -v --batch --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"

# import a key into the public key ring
set pgp_import_command="gpg --no-verbose --import -v %f"

# export a key from the public key ring
set pgp_export_command="gpg --no-verbose --export --armor %r"

# verify a key
set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r"

# read in the public key ring
set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r"

# read in the secret key ring
set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r"

# receive key from keyserver:
set pgp_getkeys_command="gpg --recv-keys %r &gt; /dev/null 2&gt;&amp;1"

# automatically sign outgoing mail
set pgp_autosign = yes

# half hour timeout
set pgp_timeout = 1800

# always verify sigs
set pgp_verify_sig = yes

#what to say when a good sig occurs
set pgp_good_sign = "^gpg: Good signature from"

# unset this crap, stop doing it!
unset crypt_autosmime

I know that just looks to be a bunch of jibberish but I do promise that it does work.  The setup is generic and should work for anyone, I won’t bother explaining it since I feel it is well commented but the short version is that Mutt just needs to be spoonfed the commands it needs to perform PGP actions on email.  This, in conjunction with a few settings on your .gnupg/gpg.conf, will make Mutt a secure email machine.  Here’s the relevant pieces you will want:

keyserver pgp.mit.edu
keyserver-options auto-key-retrieve
#encrypt-to-self - allow you to read messages you encrypted for others
#use 'gpg --fingerprint' to get this value - just remove the spaces
encrypt-to <insert your pgp fingerprint here>

Pretty simple, all this does it set what public keyserver you want to use, MIT is extremely popular and I’m pretty sure they all propagate to each other anyway, and will automatically retrieve public keys when you receive mail from someone who stores their key on the server(s) as well.  The last line will automatically sign all encrypted messages to yourself as well as the recipient so you don’t get encrypted out of your own sent email :p
Lastly is my coloring, but that is really just a matter of taste.  I use 256 color profiles as well so it may not be compatible with everyone’s setup.  I’ll go ahead and post my colorscheme here and a screenshot, but that pretty much makes covers everything I do in Mutt.  I have yet to work on getting a real good mailcap going so I don’t have anything worthwhile to post here, but I will check back in when I have something worth sharing.
Here’s my color setup:

# set default
color normal     white         default

# main colors
color status     brightwhite   blue
color indicator  brightyellow  red
color tree       brightmagenta default
color error      brightred     default
color message    brightyellow  default

# uncolor everything, only recolor what i want
#uncolor index *

# and recolor them appropriately
color index      color69       default ~u
color index      color240      default ~P
color index      brightyellow  default ~N
color index      brightgreen   default ~T
color index      brightred     default ~D

# set up the headers
color header     brightred     default "^from:"
color header     yellow        default "^to:"
color header     yellow        default "^cc:"
color header     color69       default "^date:"
color header     color69       default "^subject:"
color header     brightcyan    default "^user-agent|^x-*"

# message bodies
color attachment brightred     default
color search     red           brightred
color signature  cyan          default
color tilde      blue          default

# urls
color body       brightmagenta default "(^|&lt;| )mailto:[^ ]+@[^ ]( |&gt;|$)"
color body       brightmagenta default "(^|&lt;| )(http|https|ftp|file|telnet|news|finger)://[^ ]+( |&gt;|$)"

# smileys, the right way and the backward-ass euro way
color body       color172      default "(^| )+(|[&lt;&gt;|])[8;:](|[^ ])[)(/|DOPS]( |$)+"
color body       color172      default "(^| )+[)(/|DOPS](|[^ ])[8;:](|[&lt;&gt;|])( |$)+"

# *bold*, _underline_, and /italic/
color body       brightcyan    default "(^| )\\*[^ ]+\\*( |$)"
color body       brightcyan    default "(^| )_[^ ]+_( |$)"
color body       brightcyan    default "(^| )/[^ ]+/( |$)"

# quote blocks
color quoted     magenta       default
color quoted1    cyan          default

color quoted2    green         default
color quoted3    magenta       default
color quoted4    cyan          default
color quoted5    green         default
color quoted6    magenta       default
color quoted7    cyan          default

# PGP messages
color  body      brightgreen     default "^gpg: Good signature .*"
color  body      white           default "^gpg: "
color  body      brightwhite     red     "^gpg: BAD signature from.*"

And here’s a few screenshots of my Mutt in action. Excuse the crappy pictures, I was on my Mac (not by choice) at the time and I personally think the console looks cartoony as hell. I’ll get some better ones up later.

Here is how my full setup looks, in fancy gallery fashion.

Hope this helps out people looking to get a jump start on mutt, or those looking for some more advanced tweaks to make mutt more awesome than it already is.  Leave a comment if you have any questions, or really just anything to say.

Clearing My Name

So, I need to clarify some things.  My wish is that at least it gets indexed by some search engines and people stop accusing me of not knowing what I am talking about.  About a month or so ago, I was interviewed by one of Ohio State’s student newspapers, The Lantern.  The purpose of the interview was to showcase the Open Source Club, which I was completely happy to do because this was an awesome opportunity to get our name out and, being the President, one of my duties is to be the public face of the club.  While most of the interview went over rather well and I was impressed with the reporters knowledge of technology, it did end up with a quote being put into print that was taken out of context and actually completely misquoted altogether. The quote in question made me look like a total idiot when it comes to the open source world.  The quote goes as follows,

“Alek Rollyson, a third-year in information systems and the club’s president, said there is a difference between free software and open source software. Free software is like “free beer, or free as in it doesn’t cost me anything,” he said.”

This is the travesty I am referring to.  While 98% of people reading this article have no idea where the fault lies, that 2% of people are the one’s I am concerned about.  I was bashed by several blogging sites for being a poor open source representative and not knowing a thing when it comes to the open source community. I assure you, this is not the case.  Here’s how the quote should have gone..

“A lot of people see a fundamental difference between free software and open source software.  When you say “free”, most people immediately think of  free in the monetary sense or the famous quote, “free as in beer”.  When I say free software, what I actually mean is free as in liberty.  I am free to share, study and modify the program however I want.  Free software implies that the user is free.”

Since it has been a month or so since this story was printed and the interview took place, I cannot recall the exact words I used. But, I can assure you they were in the same context.  I am not sure whether the reporter just misunderstood what I said, whether I was just unclear in the interview (which I accept is entirely possible), or the reporter just locked down on that “free as in beer” quote in order to draw some more attention.  In any case, I can assure you that is not what I said or what I meant.  The whole purpose of this post was to get it out and indexed by search engines so that hopefully when people come and look me up they can see the correction and know that I am not, in fact, a moron.  I am holding no grudge against the reporter, in fact I think that he did a relatively good job, I just felt it important that I clear my name of what is just a misunderstanding.

The Era of the Successful Slacker Has Passed

So I was watching Office Space the other day and it occurred to me that movies like this are disillusioning people, mainly us college folk.  Don’ get me wrong, I love this movie and it’s probably in my top ten but I think that the premise behind Peter’s character and his philosophy on life aren’t realistic in today’s world.  We all have a friend or know someone who has the ability to do absolutely nothing, or at least very close to nothing, and still have incredible success.  He may be a math genius, got into med school, aces test, or is a computer genius but seems to put absolutely no effort into this at all, it just seems to come to him naturally.  We all want to be the next Bill Gates and sell something that we actually don’t have to IBM and then go on to make billions of dollars.  We also want to be that guy who basically gets to do whatever the hell he wants but no one questions him because he is the best at what he does.   This guy could come into work late and piss drunk but won’t get fired because he is the only one able to do what he does as well as he does it.  But yet, these people are usually exaggerated and the real ones are as common as winning the lottery.  Like  Matther Broderick in Wargames basically; he may fail classes, but he can change that by hacking into the school’s computer system and changing his grades.  We have all heard that story about how Einstein supposedly failed the third grade, or fourth grade math or something and all of us slacker hopefuls out there use these stories, or similar ones, in order to reassure ourselves that, even though they may be failing now, their slacker lifestyle will payoff handsomely in the future.  Well, unfortunately for us all, this is probably not the case anymore.  You probably won’t rise to be a CEO without your college degree, you probably aren’t going to invent the next google search engine, and you most likely aren’t going to build the next computer empire out of your garage.  The time has passed, mainly just due to the fact that you were born about 25 years too late.  I’m not saying that it won’t happen, I am just trying to say that it is very unlikely in these times.  I really wish it was the case that you could have a section on a resume that said “I succeed while doing absolutely nothing.”  If only that was the world we lived in.  Anymore, employers have this need to see the potential of a savior on paper.  They want your resume to scream, “I will turn your failing company into the next Wal-Mart.”  They essentially want your shit to smell like roses.  You can’t walk into an interview wearing jean shorts and smelling like an ashtray and them hire you based on your reputation as a supposed genius.  I hate to burst your bubble guys, just something that office space brought to my attention.

And now, for your viewing pleasure…..a scene from office space, so you can enjoy it as much as I did :)

Hackers demonstrate how to compromise Windows 7 at HITB

So I read an article on slashdot about how two hackers at the Hack in the Box convention in Dubai demonstrated how it is possible to compromise the OS due to a security flaw in the design….the flaw is that the OS trust that the boot process is safe. Now this may sound potentially groundbreaking, but I assure you it is not. The catch is that you have to have physical access to the machine. What the hell is the point in that?! If you had physical access to the machine, then the machine is compromised already anyways. Also, if you had access to the machine, no matter the OS, you could install whatever code you wanted on it…why the need for the boot code? What a waste of freakin’ time.

Nanotech Tattoos

So I read an article this morning on Slashdot about a new technology that would allow you to insert small flexible nanotubes underneath your skin, which would essentially create a display screen…..right on your body.  How awesome is that?!  You could text people right from the palm of your hand, literally.  Apprently Phillips has taken this idea to an artistic level and applied the technology into the realm of tattos, so you would be able to change a tattoo whenever you wanted or have the tattoo change based on your mood, or just have an animated tattoo.  If this stuff isn’t the coolest thing ever I don’t know what is.  It was also discussed in a similar article about how tiny wireless receivers could be implanted as well, essentially making you wireless.  Now I am fairly certain that this technology isn’t anywhere near the commercial level yet but nonetheless, I am so getting a digital tattoo whenever it does.  A display screen on my hand would be my dream come true.  I’ll post the video below so you can see just how awesome this is.  I realize the video is a year old but the article made it seem as if research companies were actually making some real headway on this, so apparently this could be reality in the next couple years.  I apologize however for Phillips need to use naked people in their ad, was that really necessary?  Its still pretty damn cool tho…enjoy.

Don’t Feed the Freakin’ Trolls!

It’s been forever since I wrote on this sucker but to be honest, I haven’t had a whole lot of time.  It has been quite an eventful week and a half or so with many things to keep me busy.  The first 3 weeks of the quarter have absolutely flown by, which I am very thankful for because the sooner the summer gets here, the sooner I get to go back to work and get un-broke.  Although these events also prove to be a hindrance to my blog writ,ing and therefore your entertainment.  Some of these exciting events include class, last minuted club presentations, class, sleeping, possible major violations of student privacy (set forth by FERPA) by Ohio State and the uproar that followed, partying, easter, and nazi zombies.  Not real nazi zombies, just me, Dennis and Will lightin’ up some virtual zombies with a variety of weapons and yelling insults at each other in the process.  B/c everyone knows you have to be lighthearted while enduring wave upon wave of flesh eating, undead nazis.  But all of this has postponed my writing until about now, so now I will continue with my nonsense.

If you have never ventured into the dark corners of the internet, I will give you a short explanation of what you may find.  These places are not for the light hearted, and definitely not for the easily offended.  These little know corners of the virtual world are inhabited by some of the most guiltless and merciless people you will ever “meet”.  These people are called trolls, and they might as well be real trolls for some of the shit they have done.  While hilarious, their acts are definitely not something anyone in their right mind would put on a resume.   One of these such web dungeons is a place called 4chan.  4chan is run by an infamous guy known as moot, and that is probably you will ever get to know about this mysterious dude.  If you ever were to venture into the mouth of 4chan, you would find yourself on a relatively un-assuming main page with some anime strewn about.  A ton of this site is devoted to this japanese cartoon style, but the place you are really looking for is the board called /b/.  Unless you are prepared for it, /b/ is not a place I would suggest anyone on this blog to go.  /b/ will, no joke, warp your f*cking mind.  I have seen some of the most messed up stuff on there, some of which I really don’t even want to repeat in writing on my blog.  No one reveals their true identity in this place, and for good reason as any one of these guys could probably be sued for things connected to them on the site had they posted any real info.  Everyone goes by the name “Anonymous” and everyone there is referred to as a “fag”.  Oldfags, newfags and every other form of the word fag you could possibly think of is used to refer to any given user on the site at any given time.  Also, if racism offends you, DO NOT travel into this place……I will guarantee you that you get extremely pissed.  The interesting thing about this board is that this is where all those internet jokes you hear about are born.  Remember “Chocolate Rain”?  Yea, that was them. Rickrolling?  Yea, that was them too.  Lolcatz?  Yep, theirs as well.  The thing about this place is that none of it makes any sense to anyone outside of 4chan at all.  The humor is so bizarre that no one gets it, and if you do get it then it is absolutely hilarious to you and only you.  Black humor is a major one as well.  Some of the jokes on this board will scar certain people for life, and if you do get scarred as a result of this posting…I’m really sorry.  I would never, ever, ever try to argue with these people either….they will win, whether you are in fact right or not.   All they want is “lulz”.  What is lulz you ask?  Lulz are basically lol’s at the expense of other people.  The get great joy out of humiliating, frustrating, and just plain demeaning others.  There are many imitators but only one 4chan; for example, others such as 4chan, 7chan, 420chan, anonboard etc etc have popped up and either have failed legitimately or failed under very suspicious conditions with hints left on 4chan boards after the demise of a competitor.   This is just a very brief glimpse into this weird, entertaining, yet very disturbing world.  I would not recommend this really to anyone not prepared, but if you do so desire to go to this place…you will either laugh your ass off or leave utterly confused and disturbed.  I myself find some of it pretty damn funny, although I times it does scare me a tad bit.  I would tell stories….but I wouldn’t want to rot your brain.

If you truely want to test your stomach…travel on over here >>  http://img.4chan.org/b/imgboard.html

Now that I have introduced you to this place I am either going to have to give a “Your Welcome!” or a “I’m so, so sorry”.  So I put them both up in case of either case happening, can’t be too prepared.  Don’t say I didn’t warn you either, so don’t get mad at me if you can’t sleep for a couple nights :p

Now, for your viewing pleasure……We go to Ollie Williams!!!

Why Bandwidth Caps Are A Very BAD Idea

Just recently I read an article detailing Time Warner Cable’s new pricing strategy and how they have begun test driving this new system in some select cities.  The brilliant idea they have devised this time is a system to charge their customers based on consumption.  The new pricing strategy will take effect as early as next year in some cities.  From what I can tell they are looking at using 4 different bandwidth tiers that include 5, 10, 20 and 40 GB a month.  Immediately you should begin to see a major problem with this.  Here’s the problem that first popped into my mind: A high definition movie streamed online from a service like Netflix can total up to 8 GB a pop.  So, by this weird logic, even with the highest bandwidth tier you could only watch about 5 movies a month and bam! No internet until next month.  While this seems extremely materialistic to say this given that HD streaming movies are by no means a necessity, I think this is really going to piss of people like Netflix and Hulu.  Let me give another example. Linux distributions can run at about half a gigabyte a piece….hmmmmm.  Now let’s even put aside large files.  I, all by myself, can probably rack up 500 gig a month of completely legal content EASILY.  Very easily as a matter of fact.  I work a lot with open source software that can sometimes be on the byte heavy side and I don’t have to worry about it given that I don’t have to be conscious of my bandwidth consumption.  I really don’t understand the need for the bandwidth caps at all to be honest.  From what I read on Businessweek and Arstechnica, their logic is completely misplaced and let me tell you why.  In the cities that they have test driven this new plan in, they have reported that not even 20% of their customers ever exceed their bandwidth limits and the average user only brings in as much as 6 GB a month.  Now let’s think about this for a second, if 86% of people never exceed their bandwidth cap, what the hell is the need for the cap!?  This came straight from TWC’s mouth, and if completely refutes the need for a limit.  I hear now and again that the overhead is expensive given the huge infrastructure of the network, but not once have I ever experienced a slowdown from excessive internet use in the area, and if I did it was the website itself’s problem and not a problem with the ISP.  I do remember back during the AOL age when it was impossible to log on from 5pm to 10pm at night but that was just the inherent nature of dial-up.  The broadband network is probably only at 50% capacity at any given time, if even that. So, if there is not problems with network congestion and most people never go over their limit, I want someone from Time Warner to explain to me how this makes any sense at all.  If you’re answer is that your new business model revolves around pissing off your customers even more than you already manage to do, you should give whoever came up with that idea a spot on your Board of Directors.  Now it may seem like this whole post is ragging on how shitty Time Warner’s customer relations are, which it sort of is I guess, what I am really trying to do is give Time Warner some advice.  Their service has a monopoly in certain areas so sometimes switching to a different ISP isn’t a valid choice, so my aim has become to throw some tough love onto these idiots.  I am just a lowly college student and I can tell you that this plan will ruin you if it comes to fruition.  The people you will anger are definitely the wrong people to mess with.  Most people will accept this new pricing strategy given their naivety, but the people who will come after you are the ones who will be affected most; the people in technology sector.  I am not threatening anything, I’m just warning you against the inevitable so I don’t have to read about you getting flamed buy your customers here in the coming years.  A valid point that I read in a comment on one of these sites is that Wifi hacking will explode, and I think this might just be true.  Wifi hacking is not hard by any means and any idiot who can type would most definitely be able to figure it out.   Think about it, what are those neighborhood kids going to do once they run their parents bandwidth limit out and there are 23 other wireless networks just waiting to be tapped into and their limit exhausted as well.  Flash games will suffer, content will be rationed, and all the richness of the web we know will disappear in the face of bandwidth limits.  While I don’t believe their is anything legal that can be done, nor is anything having to deal with net neutrality being violated, but I believe this course of action to be seriously flawed given the nature of our society today and the consequences for companies like TWC will be more than they realize.  If this ever does happen, I know exactly what I am going to do and I can explain it in one acronym.  FiOS. Beware of this Time Warner, I think you should give this some further thought before continuing with this plan.

Baskin’s Creek is a pack of liars!

Free WiFi my ass, I had to drive my ass to a Super 8 and steal their internet in order to post this. I’ll be gone for a few more days so don’t be disappointed if I don’t write until Friday or so. Blame Baskin’s Creek…..liars.

Pirate Trials and Wifi Hackery

I must apologize for the gap since my last post, I am severely disappointed in myself for letting this much time get by before I wrote on this bugger again.  The server has been moved to a bigger and better server since the last post.  We are now rockin’ a beast of an Alienware laptop that won’t slow down on the busy days this domain draws in every now and then.  Since the server also provides services besides this blog, hehehe, I needed the extra power that the original junker I set this up on did not provide.  Point being, it makes me happy whether you understand what I am talking about your not….which means you should be happy too :)   I have a few things I would like to talk about today such as the Pirate Bay trials, my Wifi hacking presentation, and  whatever else I come up with by the time I get to the fourth paragraph. Here it goes…

So in case you didn’t know,the masterminds behind one of the most infamous torrent trackers, The Pirate Bay, started their trial earlier this week.   Movies and record labels worldwide rejoiced as they thought they were about to sink a titanic player in the torrent industry, they were very wrong.  Not two days into the trial, prosecutors dropped the major charges of copyright infringement that would have nailed the Pirate Bay crew to the wall.  If at this point you don’t know what a torrent is, it basically is just another way to download things on the internet.  Think of a much more sophisticated limewire or Kazaa that is actually inteded to the dissemination of legal materials.  The defendents also have developed an ingenous “i-dunno” strategy in order to make their case in court.  According to two of the defendents, they don’t read the contracts they sign, proof the speeches they write, or have any idea what the law may say about anything illegal they may be doing.  Fredrik Neij, owner of thepiratebay.org, who claims to be dyslexic, backs his site fully saying that he was under the understanding that everything he was doing was legal.  Essentially, they guys made a mockery of the courtroom and further infuriated the media industry worldwide as they continue to evade any attempt at ending the pirate’s reign of the internet.  They also made a good point in the process, Youtube has a significantly more copyright infringing material that the pirate bay, and even many other torrent trackers that are out there.  According to s survey of 1000 torrents on the site, almost 80% of those included legally downloadable content.  All in all these guys are fighting the man half the world around.  You should follow their trial as they continue their awesome strategy of playing stupid and making judges and lawyers very, very angry.

On February 22nd at 7PM in Dreese 266 here at The Ohio State University, I will be giving a talk about how to hack most commercial Wifi networks’ encryption protocols at the Open Source Club meeting……you should come and watch this crazy shit and maybe learn a thing or two.  I will be covering WEP hacking, WPA hacking as well as going in depth on the protocols themselves in order to show their strength’s and then their weaknesses….mostly by cracking them open like a little binary walnut.  And, if there is time, I may even go into man-in-the-middle attacks and how they can be used to steal anything and everything you send over a network that has been cracked.  This, of course, is just a proof of concept talk and nothing I talk about or show you should be used except for testing purposes and fun ;)   You should come so I can make you a wizard in cracking dumb peoples networks who make their passphrase something like “wireless” or “hackmeogodpleasehackme.”  Even if you are not computer literate you should still join b/c this stuff is cool and I will do my best to make it the best computer talk your eyes will ever witness.  If not, its cool, you read my blog so you’re still on my  A list.

Back in normal people world…..I would like to take this time to say that I hate people who have this idea that they have this God given right to drive in the left lane even though they are not passing anyone.  This idea is completely ludicrous.  I actually once saw a bumper sticker on a ladies truck (who was driving 50 in a 65 in the LEFT LANE) that said, “I can drive in the left lane if I want to.”  NOOOOOOO!!!!!  If i wasn’t traveling > 60 MPH at the time I would get out of my car and pound some sense into this idiots head.  I know that in Kentucky you can actually be ticketed for driving in the left lane if you are not passing anyone…..this rule should be established worldwide to keep idiots like the bumper sticker lady in the lane that they belong.  It drives me absolutely insane when I am in a hurry, or I just can’t stand being behind someone anymore, when I cannot pass a group of cars because one of these people who think it is their divine right to be in the left lane is in front of me.  I typically set my cruise at 75+, which is a good deal faster than most cars on the highway, so I spend a lot of my time passing people……BUT, once I pass them I get right back into the right lane so that if someone is going 90 they can get around me with ease, problem freaking solved.   This drives me insane and happened like 6 times on my way back from Dayton this morning so I had to get it off my chest.  I’m out for tonight, I have actual school work that I should be putting my thoughts into :)

And now, for your viewing pleasure……a really long but hilarious review of the NES game Back to the Future.  Watch it, it’s way worth it

Facebook is stealing your face…..literally

I would like to take some time now to discuss this whole Facebook Terms of Service issue that I’m sure you have seen lingering at the top of your facebook home page.  I personally don’t find it at all suprising that facebook tried to pull this crap but it is nonetheless pretty freakin’ scary that they almost got away with it. For those of you that don’t know, Facebook attempted to silently alter their Terms of Service to basically say that they have the rights to anything and everything you decide to stick in your little facebook world.  By silently I mean that they changed it and didn’t bother to let anyone know that they now own all the stuff that you decide to post.  They CLAIM that they do not need to let anyone know that they have altered their terms of service but that is absolute crap.  They knew full well how bad this would piss people off and so they tried to sneak it in without anybody noticing it.  Lucky for all of you guys there are more people like me out there defending your internet rights from dumb (and borderline illegal) stuff like this.  The reason that facebook claims they did nothing wrong in not letting anyone know is because of this little clause in the original ToS, “revisable without notice and with or without cause.”  This is like crossing your fingers while swearing on the bible in court and claiming that you can’t be held in comtempt for going against your oath because you were crossing your fingers.  There is another page that goes along with this that advises facebook users to read the Terms of Service every time you visit your page.  Have you ever read the thing?  It’s god awfully long and full of horrible legal dribble that no one wants to read every single time they want to get on and stalk that hot girl from down the hall or post a picture of themselves and their significant other touching their tongues together. Now besides the fact that they claim they should be able to alter their ToS whenever they want and not tell anyone, there’s the issue that they tried to take ownership of all things on your facebook.  CEO Mark Zuckerburg tried to talk his way around the subject by saying that the clause was necessary to drive the social features of the site, but I seriously could have drawn up a ToS myself that could have done that without trying to take the rights to all of our stuff.  Nice try Zuckerburg, but we just aren’t that stupid.  Let me present you with a hypothetical situation.  Let’s say that you have a glorius picture of yourself posted on facebook, with complete privacy settings enacted and everything so that only the people you want can see it.  In this picture you are doing a kegstand with two dude holding you up, your skirt up to your boobs, and your pink victoria secret thong in full view that doesn’t cover up that little cliched star tattoo on your hip that you don’t want your mom to know about.  Under these new terms of service that facebook didnt bother to tell you about, it would be perfectly legal for them to use this picture in an advertising campaign of theirs.  Let’s say facebook decided to campaign in your local college newspaper, and used this picture in the ad.  Your mom comes to town for the weekend and picks up this newspaper and sees this picture of you doing this awesome kegstand.  She recognizes the thong because it has gone through the laundry at home before and she also recognizes the skirt because she bought it for you last christmas.  BUSTED, and facebook has done absolutely nothing wrong.  Now I know this is a gross exaggeration of a possible outcome but I did it to prove a point.  Freaky, huh?  The other crazy thing is that even if you were to delete your facebook, they could keep it around on their servers and use all your stuff for their gain anyways…since they do own it and all.  Even more freaky.  Now that I have alerted you to this almost successful personal information hijacking attempt that facebook made, you should vote in that poll to your right and tell me what you think about this whole situation.

On a lighter note, I think I aced my stats test this morning…which is awesome.  I am also making my way back to Gem City (hahaha, it always makes me laugh when I say that) tonight to see off a friend who is leaving for boot camp soon.  For those of you who don’t know what Gem City is, it’s Dayton….now see why I am laughing?  Anyways, I feel like I have rambled enough for today and provided you with some useful information to go kick facebook in the nuts with.

And now for your viewing pleasure, this video was suggested by William….so here you go man