Mac OS X
Are you still playing the graphic adventure made in Redmond?
With OS X 10.2 Apple introduced a more space-efficient binary plist-format. With OS X 10.4 this new binary format became the default format. The underlaying format is a simple XML-format (introduced with OS X 10.0), which was easy to read and parse from Java.
The new format must be parsed in a special way: either by using Apple’s Property List Editor, or by using the Apache Commons Configuration (which API is supporting the Property List format). In addition there is a new project of Daniel Dreibrodt, who is maintaining a JAVA project to read the binary plist format. It is licenced under GPL3 and can be found at:
http://code.google.com/p/plist/
Update: There is a new project on sourceforge that should be able to read and write the .plist-format. Up to now I haven’t tested it, but I want to provide the link here too: Property List Library
Very often, software for OS X is provided as .pkg or .mpkg bundles (the difference is, that .mpkg bundles are more customizable than the .pkg-installers). If you want to install them without clicking through the GUI-user-dialog, you can do this by running the installer from the console in silent mode:
sudo -S installer -verbose -pkg your_installer_file.pkg -target /
The installer will run without showing something on the GUI. You will have to enter your system-administrators password, if the installer needs the rights. You can (but shouldn’t) give the password with the command line (so you can install .pkg in an automated way):
echo <password> | sudo -S installer -verbose -pkg your_installer_file.pkg -target /
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Attention: Your password will be stored among other files in the bash_history!
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
All you need to realize a SOCKS5 tunnel over SSH is an openSSH on your “SOCKS-Server” and the already used “Proxifier”, as well as PuTTY on Windows-based systems.
First of all, you need to build up the secure tunnel (type the command into your OS X console):
ssh -2 -N -D 8080 user@<ip of your SOCKS5-Host>
for example:
ssh -2 -N -D 8080 myuser@192.168.1.11
On Windows, the configuration of PuTTY is the following:
Add the Hostname (for example: 192.168.1.11 – you need to add your SSH/SOCKS-Server IP there) under Tab “Sessions”
Then go to Tab “Tunnels” and enter Source Port 8080
Select “Dynamic” from the Destination Port
Click Open to buildup the tunnel
Now start the Proxifier and add the following Setting:

I find it usefull (but it is not neccessary) to add a rule to the Proxification Rules:

That’s all: openSSH has an integrated SOCKS-Proxy. Proxifier sends all traffic through the SSH-Tunnel (which is encrypted) and the SOCKS-proxy in openSSH on the other side sends the traffic to the destination hosts and returns incomming traffic to you.
After asking google for SOCKS I found a recommended implementation of SOCKS5: Dante
There is a very nice overview of SOCKS-implementations on wikipedia: http://en.wikipedia.org/wiki/SOCKS
Installation was quite easy: On SuSE it is a rpm you simply install, on FreeBSD you find it in the ports (cd /usr/ports/net/dante/; make; make install ). More interesting got the configuration of Dante, and that is what I want to explain today (since I did not find a howto and had to read the documentation):
The config-file can be found in /etc/sockd.conf (/usr/local/etc/sockd.conf on FreeBSD). This you have to edit in the following way:
#define the logfile for dante
logoutput: /var/log/dante.log#define the IP/Port Dante should listen for connections
internal: <IP address of your dante server> port = 80#define the IP/interface Dante should use for outgoing connections
# Check the name of your interface using ifconfig
external: eth0
#Alternative: >external: <IP address that should be used>#authentication: deactivated, since I will use a static IP-adress – that is auth enough now!
method: username none#unprivileged user for Dante
user.notprivileged: nobody
Ok – that was the basic stuff – now the interesting part:
#Who can access this SOCKS Tunnel?
client pass {
from: <your ip here>/32 port 1-65535 to: 0.0.0.0/0
}#Loopback may also access the tunnel
client pass {
from: 127.0.0.0/8 port 1-65535 to: 0.0.0.0/0
}#Block all others
client block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}# Once connected, who may be connected then?
# block connections from anywhere to loopback
block {
from: 0.0.0.0/0 to: 127.0.0.0/8
log: connect error
}# Allow connections from anywhere to client
pass {
from: <your ip here>/32 to: 0.0.0.0/0
protocol: tcp udp
}pass {
from: 127.0.0.0/8 to: 0.0.0.0/0
protocol: tcp udp
}#Block the rest
block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}
Please note: this example will limit the access to one IP (/32), you can also allow more IPs. If you are not firm to subnetting, use the Subnet Cheat Sheet
After this simple configuration, your Dante-server should start without any problems, by typing:
/etc/rc.d/sockd start
(On FreeBSD first add sockd_enable=”YES” to your /etc/rc.conf, then type: /usr/local/etc/rc.d/sockd start ). Now you can watch your logfile under /var/log/dante.log to see what is going on.
Now let’s come to the complicated part: Make OSX work with the SOCKS5 tunnel we created.
The first (and unsuccessfull) idea was, to configure it in in the network setup in the System Preferences. (Go to the Network preference pane, then click on further options and go to the “Proxies” tab. Enable SOCKS Proxy and fill in the IP of your server and the correct port, save the changes and activate the setting). Unfortunatly, this setting only works only for Cocoa and WebKit-based applications (and since not all of these applications use the System Preferences, you are covered only by 95% there too).

Screenshot Systempreferences network german
Thunderbird and Firefox for example doe not use the System preferences. You can both configure them to make them use the SOCKS tunnel, but to be honest: I do not want to reconfigure my applications on every new place. So I looked for a general SOCKS-Proxy.
After some search I found Proxifier – a commercial product, that is easy to setup easy to use and does everything you need with just a few clicks. There is also a version for Windows, that I did not check out, but I’m sure it will work as good as the OS X-version does.
The SetUp is easy and does not need the really good documentation that is provided on the Proxifier-homepage. If you feel better by watching the dosumentation, here you will find it: http://www.proxifier.com/mac/documentation/ProxifierHelp.html
After starting and configuring Proxifier, I got back online to the world, bypassing the firewall of my customer over port 80.
ATTENTION: Dante and SOCKS may not be confused with VPN, even if it is the same feeling! The data is send clear-text and my be visualized with any Packet-Sniffer!
Anyone of you already know this situation: You found a really great and helpfull site on the internet, put a bookmark on it, and when you need the site and check back to it, it is discontinued and closed.
For me, this is a reason to mirror helpful and (to me) important websites locally to my computer. I usually used a tool called “WebDevil”, that had a view problems, but worked fine. Unfortunatly, this project now seems to be discontinued, since I was not able to get an actual copy of the program. So I began a search for a new application and found:
WebGrabber is published under the GPL (“OpenSource Freeware”) by Eric Peyton of epicware Inc. and has everything you need to mirror a single website, or the complete internet to your local machine and many more features:
Any thinkable option can be set: ignoreing the robots.txt, rewriting the local saved version, rewriting the links (to get independent from the website), limit the mirroring to one website or even to the same directory on the website, syncing of the actual version of the website and your saved copy, resuming stopped downloads and many more. You can set the download-depth, the sleep time between the documents, max. transfer rates and even the buffer sizes.
Additionally, you can define a set of filters what to download and what not. WebGrapper is definitely the best and compfortable mirroring-tool for the Mac I’ve seen up to now.
Download Link: http://www.epicware.com/webgrabber.html
Since the website was several times not available for me and links in the readme are not longer valid, I’ll mirror this cool project here, since it seems to be discontinued too: webgrabber07tarThe sourcecode of this project (XCode) is included.