# Phex

Phex is a peer-to-peer file sharing client for the gnutella network, released under the terms of the GNU General Public License, so Phex is free software. Phex is based on Java SE 5.0 or later.

## Features

Phex supports most of the recent features of the gnutella network. Additionally it enables the creation of private networks over the internet, has a powerful search result filter, shows client country flags, and can export the list of shared files into multiple formats, some of which can also be read out and downloaded directly by another Phex.
Version 3.2.0.102 also supports Tiger Tree hashes for uploads and downloads, providing full protection against poisoned downloads. Together with Swarming, segmented file transfer, and the Download Mesh this makes downloads as efficient and safe as BitTorrent downloads, yet completely decentralized by design.

## History

FURI was an early gnutella client written by William W. Wong and released under the GNU General Public License. The software was notable at the time of its release for being written entirely in Java. The software was capable of running on Java 1.1 as long as the user downloaded external Swing libraries. If these libraries were unavailable, Java 1.2 was required.
Officially, the program never left Beta status. The author eventually stopped maintaining the software, resulting in users migrating to other clients like LimeWire. The last update to the software was on May 1, 2000.
In April 2001 Konrad Haenel forked the rarely updated gnutella client FURI to form Phex. While he participated in the Phex project initially, he left in late 2001. The project member Gregor K. continued to develop Phex and is the lead developer today.
Early versions of Phex were released simply as a java jar file, limiting their ease of use on some platforms such as the Mac OS. MacPhex was an alternative version made available on the Phex website and supported by macXster. It wrapped Phex in a double click-able application and occasionally added small additional features unique to the Mac OS.

## Anonymous Phex

Since 2006, an anonymous version of Phex has been available: I2Phex, which uses the I2p network to hide the IP address of the users of this gnutella client. The future roadmap is to integrate the I2Phex code into one of the next Phex versions.
Rather than use the public IP network, I2Phex uses encrypted tunnels through the I2p privacy/encryption network.
Traffic is mixed with other network traffic (see mix network) through a garlic routing system, making it difficult for outside observers to identify originators or the recipients of a file through traffic analysis.
Anonymous networks have been remiss to host file sharing protocols due to bandwidth considerations. Often only searching (or tracking for BitTorrent) are supported. Nodes within the garlic routing system could refuse to route file sharing traffic. This makes inbound and outbound connections easier to locate. Outbound traffic is unencrypted so associating it with the inbound node will break the anonymity.
LimeWire, FrostWire, gtk-gnutella, and Phex all support the use of TLS to encrypt traffic between nodes. TLS is not anonymous like I2P, however, it does prevent ISPs from filtering gnutella content and makes it more difficult to trace traffic.

## Phex with Tor

It is possible to use Phex with SOCKS5 proxy. Using that feature it is possible to route gnutella traffic via Tor and then to Phex. This is possible by using SOCKS5 cascading proxy to Tor client.

## Academic studies

Various academic studies are based on Phex:
* Ruffo, Giancarlo (2006). "A Decentralized Recommendation System Based on Self-organizing Partnerships" (PDF). Università di Torino.
* Kampffmeyer, Holger (2006). "EPITELLA: Improving the Gnutella Search Algorithm through Epidemic Spreading Models for Complex Networks" (PDF). University College London. Archived from the original (PDF) on 2007-09-27. Retrieved 2007-08-31.
* Makosiej, Przemyslaw (2004). "Measurement Study of Shared Content and User Request Structure in Peer-to-Peer Gnutella Network". University of Rostock. Archived from the original on 2007-09-28. Retrieved 2007-08-31.
* Natalia, Stakhanova (2003). "A reputation-based trust management in peer-to-peer network systems" (PDF). Iowa State University.