Tsocks 1.8 with the mac osx patch. Contribute to openroc/tsocks-macosx development by creating an account on GitHub. In this guide, we will you show how to mine Monero (XMR) crypto currency using only your Mac’s CPU. At the time of this article, this is the easiest and most profitable method of mining with a basic Mac Desktop using your Mac’s CPU only. Prerequisites you need before mining: Monero Crypto Wallet – We use Coinomi. This is a universal. Socks - Mack Weldon's Men's Socks have a sharp design and are enhanced with technology. Not too heavy, not too light, it fits comfortably for.
SOCKS is an Internetprotocol that exchanges network packets between a client and server through a proxy server. SOCKS is an abbreviation of 'SOCKet Secure'.[1]SOCKS5 optionally provides authentication so only authorized users may access a server. Practically, a SOCKS server proxies TCP connections to an arbitrary IP address, and provides a means for UDP packets to be forwarded.
SOCKS performs at Layer 5 of the OSI model (the session layer, an intermediate layer between the presentation layer and the transport layer). A SOCKS server accepts incoming client connection on TCP port 1080.[2][3]
The protocol was originally developed/designed by David Koblas, a system administrator of MIPS Computer Systems. After MIPS was taken over by Silicon Graphics in 1992, Koblas presented a paper on SOCKS at that year's Usenix Security Symposium,[4] making SOCKS publicly available.[5] The protocol was extended to version 4 by Ying-Da Lee of NEC.
The SOCKS reference architecture and client are owned by Permeo Technologies,[6] a spin-off from NEC. (Blue Coat Systems bought out Permeo Technologies.)
The SOCKS5 protocol was originally a security protocol that made firewalls and other security products easier to administer.[2] It was approved by the IETF in 1996 [2] as RFC 1928 (authored by: M. Leech, M. Ganis, Y. Lee, R. Kuris, D. Koblas, and L. Jones). The protocol was developed in collaboration with Aventail Corporation, which markets the technology outside of Asia.[7]
SOCKS is a de facto standard for circuit-level gateways (level 5 gateways).[8]
The circuit/session level nature of SOCKS make it a versatile tool in forwarding any TCP (or UDP since SOCKS5) traffic, creating a good interface for all types of routing tools. It can be used as:
SOCKS operates at a lower protocol level than HTTP proxying: SOCKS uses a handshake protocol to inform the proxy software about the connection that the client is trying to make, and then acts as transparently as possible, whereas a regular proxy may interpret and rewrite headers (say, to employ another underlying protocol, such as FTP; however, an HTTP proxy simply forwards an HTTP request to the desired HTTP server). Though HTTP proxying has a different usage model in mind, the CONNECT method allows for forwarding TCP connections; however, SOCKS proxies can also forward UDP traffic and work in reverse, while HTTP proxies cannot. HTTP proxies are traditionally more aware of the HTTP protocol, performing higher-level filtering (though that usually only applies to GET and POST methods, not the CONNECT method).[citation needed]
If Bill, or any client for that matter, wishes to communicate with Chris over the internet, but a firewall between them exists on his network, where Bill is not authorized to communicate with Chris directly. So, Bill connects to the SOCKS proxy on his network, informing it about the connection he wishes to make to Chris; the SOCKS proxy opens a connection through the firewall and facilitates the communication between Bill and Chris.
For more information on the technical specifics of the SOCKS protocol, see the sections below.
Bill wishes to download a web page from Jane, who runs a web server. Bill cannot directly connect to Jane's server, as a firewall has been put in place on his network. In order to communicate with the server, Bill connects to his network's HTTP proxy. His web browser communicates with the proxy in exactly the same way that it would directly with Jane's server if that were possible; that is, it sends a standard HTTP request header. The HTTP proxy connects to Jane's server, and then transmits back to Bill any data that Jane's server returns.[12]
A typical SOCKS4 connection request looks like this:
VER | CMD | DSTPORT | DSTIP | ID | |
---|---|---|---|---|---|
Byte Count | 1 | 1 | 2 | 4 | Variable |
VN | REP | DSTPORT | DSTIP | |
---|---|---|---|---|
Byte Count | 1 | 1 | 2 | 4 |
Byte | Meaning |
---|---|
0x5A | Request granted |
0x5B | Request rejected or failed |
0x5C | Request failed because client is not running identd (or not reachable from server) |
0x5D | Request failed because client's identd could not confirm the user ID in the request |
For example, this a SOCKS4 request to connect Fred to 66.102.7.99:80, the server replies with an 'OK':
0x04 0x01 0x00 0x50 0x42 0x66 0x07 0x63 0x46 0x72 0x65 0x64 0x00
0x00 0x5A 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX
From this point onwards, any data sent from the SOCKS client to the SOCKS server is relayed to 66.102.7.99, and vice versa.
The command field may be 0x01 for 'connect' or 0x02 for 'bind'; the 'bind' command allows incoming connections for protocols such as active FTP.
SOCKS4a extends the SOCKS4 protocol to allow a client to specify a destination domain name rather than an IP address; this is useful when the client itself cannot resolve the destination host's domain name to an IP address. It was proposed by Ying-Da Lee, the author of SOCKS4.[13]
The client should set the first three bytes of DSTIP to NULL and the last byte to a non-zero value. (This corresponds to IP address 0.0.0.x, with x nonzero, an inadmissible destination address and thus should never occur if the client can resolve the domain name.) Following the NULL byte terminating USERID, the client must send the destination domain name and terminate it with another NULL byte. This is used for both 'connect' and 'bind' requests.
Client to SOCKS server:
SOCKS4_C | DOMAIN | |
---|---|---|
Byte Count | 8+variable | variable |
Server to SOCKS client: (Same as SOCKS4)
A server using protocol SOCKS4a must check the DSTIP in the request packet. If it represents address 0.0.0.x with nonzero x, the server must read in the domain name that the client sends in the packet. The server should resolve the domain name and make connection to the destination host if it can.
The SOCKS5 protocol is defined in RFC 1928. It is an incompatible extension of the SOCKS4 protocol; it offers more choices for authentication and adds support for IPv6 and UDP, the latter of which can be used for DNS lookups. The initial handshake consists of the following:
The initial greeting from the client is:
VER | NAUTH | AUTH | |
---|---|---|---|
Byte count | 1 | 1 | variable |
VER | CAUTH | |
---|---|---|
Byte count | 1 | 1 |
The subsequent authentication is method-dependent. Username and password authentication (method 0x02) is described in RFC 1929:
VER | IDLEN | ID | PWLEN | PW | |
---|---|---|---|---|---|
Byte count | 1 | 1 | (1-255) | 1 | (1-255) |
VER | STATUS | |
---|---|---|
Byte count | 1 | 1 |
After authentication the connection can proceed. We first define an address datatype as:
TYPE | ADDR | |
---|---|---|
Byte Count | 1 | variable |
VER | CMD | RSV | DSTADDR | DSTPORT | |
---|---|---|---|---|---|
Byte Count | 1 | 1 | 1 | Variable | 2 |
VER | STATUS | RSV | BNDADDR | BNDPORT | |
---|---|---|---|---|---|
Byte Count | 1 | 1 | 1 | variable | 2 |
Since clients are allowed to use either resolved addresses or domain names, a convention from cURL exists to label the domain name variant of SOCKS5 'socks5h', and the other simply 'socks5'. A similar convention exists between SOCKS4a and SOCKS4.[18]
Client software must have native SOCKS support in order to connect through SOCKS. There are programs that allow users to circumvent such limitations:
Socksifiers allow applications to access the networks to use a proxy without needing to support any proxy protocols. The most common way is to set up a virtual network adapter and appropriate routing tables to send traffic through the adapter.
So…you want to use that old or new Mac to mine some Crypto? With all the craze in crypto today, it’s everyone’s dream to let their computer do the heavy lifting, mine some random crypto, and then cash it in for money. In this guide, we will you show how to mine Monero (XMR) crypto currency using only your Mac’s CPU. At the time of this article, this is the easiest and most profitable method of mining with a basic Mac Desktop using your Mac’s CPU only.
Prerequisites you need before mining:
Monero Crypto Wallet – We use Coinomi. This is a universal Crypto wallet.
This guide was done on macOS Catalina 10.15.7. I do not know if this will work on macOS versions previous or later.
1. We will be using XMRIg to mine Monero (XMR). In order to use XMRIg on Mac, you will need to install some prerequisites.
2. Install Homebrew. In Terminal type:
/bin/bash -c '$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)'
3. Next, install XMRIg. Open Terminal and type the following commands. XMRIg will install in /Users/USER/xmrig/.
a. brew install cmake libuv openssl hwloc
b. git clone https://github.com/xmrig/xmrig.git
c. mkdir xmrig/build && cd xmrig/build
d. cmake .. -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl
e. make -j$(sysctl -n hw.logicalcpu)
4. Now, we need to create a new configuration file in order to run XMRIg. The easiest way is to do this with the XMRIg wizard here.
5. Download the config.json file and place it in /Users/USER/xmrig/build
folder.
1. Open Terminal.
2. cd /Users/USER/xmrig/build
3. ./xmrig
XMRIg will begin mining. The first screen in Terminal will show you your Mac’s system details. By default, XMRIg will mine using your Mac’s CPU most effectively, so you won’t have to worry about not using all your CPU power for it.
So what’s the all the XMRIg activity mean? See below.
miner – speed: line tells you your miner's hash rate. As far as I can tell, this shows three hash rates over three different rolling windows of 2.5 seconds, a minute, and 15 minutes. The hash rate stays fairly constant at close to 1200 H/s. Your miner hasn't been running for 15 minutes yet.
net – new job: line means the pool just sent your miner some work. Your miner will then repeatedly hash this data to find hashes below the requested target (which comes as part of that job). The last number of that line is the difficulty for that job. The higher it is, the harder it is to find a qualifying hash, but the more any solution counts towards your share of the block reward when the pool finds a block next.
cpu – accepted: line means the pool acknowledged receipt of a hash your miner found. 3/0 means this is the third accepted hash, and none were rejected (which can happen for various reasons, such as being for a previous job, below the requested difficulty, or otherwise invalid).
Check with the miner pool you joined. Your miner pool will be able to show you how much you’ve mined, your average hash rates, and your payouts. All you need to do is tell them your Wallet ID in most cases. In our case, we will only get paid once we’ve mined 0.5 XMR.
We hate to admit it, but it’s not. We’ve mined with our intel Mac Mini (3269.4 H/s) for one day and only earned 6 cents. It’s not going to make us any money long term. However, it’s possible the upcoming Mac “M” chips prove to be worth of CPU mining. We will wait and see.
Please use the comments area below to share your Crypto Mining speeds, success rates, and payouts. Please ensure to include relevant Mac system details!