---
created_at: '2017-08-12T11:41:47.000Z'
title: URL obfuscation (2002)
url: http://www.pc-help.org/obscure.htm
author: freebyte
points: 117
story_text: 
comment_text: 
num_comments: 25
story_id: 
story_title: 
story_url: 
parent_id: 
created_at_i: 1502538107
_tags:
- story
- author_freebyte
- story_14997512
objectID: '14997512'

---
[Source](http://www.pc-help.org/obscure.htm "Permalink to How to Obscure Any URL")

# How to Obscure Any URL

How to Obscure Any URL  
**How Spammers And Scammers Hide and Confuse  
**_Last Updated Sunday, 13 January 2002_   
  
_**NOTICE:** the IP address of this site has changed of late, and I've been unable to set aside time for the rather **large** task of revising this page. Its numerous links to the old IP address won't work. It'll be updated soon!_
* * *

_Since this page was first written in 1999, Internet Explorer and Netscape have both begun dealing with URLs differently, particularly in versions 6 and above. Some of the examples here will no longer work with those browser versions._

* * *

The URL (Universal Resource Locator) of the page you are now viewing is <http://www.pc-help.org/obscure.htm>. 

It is also [http://3468664375@3468664375/o%62s%63ur%65%2e%68t%6D][1]. Go ahead and click on that link. It'll take you right back to this very page. 

The weird-looking address above takes advantage of several things many people don't know about the structure of a valid URL. 

There's a little more to Internet addressing than commonly meets the eye; there are conventions which allow for some interesting variations in how an Internet address is expressed. 

These tricks are known to the spammers and scammers, and they're used freely in unsolicited mails. You'll also see them in ad-related URLs and occasionally on web pages where the writer hopes to avoid recognition of a linked address for whatever reason. Now, I'm making these tricks known to _you_. Read on, and you'll soon be very hard to fool. 

_(Note: Depending on your browser type and its version, some of the oddly-formatted URLs on this page may not work. Also if you're on a LAN and using a proxy [gateway] for Internet access, many of them are unlikely to work. Also, fear not; this page does _not_ exploit the ["Dotless IP Address" vulnerability][2] of some IE versions.)_

 

How It's Done

Here it is again: [http://3468664375@3468664375/o%62s%63ur%65%2e%68t%6D][1]

First take note of the "@" symbol that appears amid all those numbers. In actual fact, everything between "**http://**" and "**@**" is completely irrelevant! Just about **anything** can go in there and it makes no difference whatsoever to the final result. Here are two examples: 

[http://doesn'tmatter@www.pc-help.org/obscure.htm][3]

[http://!$^&*()_+`-={}|[]:;@www.pc-help.org/obscure.htm][4]

Go ahead and use the links. If they work at all with your browser, you'll be back to this page again. 

This feature is actually used for authentication. If a login name and/or password is required to access a web page, it can be included here and login will be automatic. 

Example: **http://username:password@www.whatever.com/secret/eyesonly.htm**

But if the page requires no authentication, the authentication text is in effect ignored by both browser and server. 

This presents interesting possibilities for confusing the unsuspecting user. How about this one: 

[http://www.playboy.com@3468664375/obscure.htm][5]

If you didn't know better, you might think this page were at playboy.com! 

By the way, the @ symbol can be represented by its hex code %40 to further confuse things; this works for the IE browser, but not for Netscape. _(Thanks to [The Webskulker][6] for this.)_

All right, so what about that long number after the "@"? How does **3468664375** get you to **www.pc-help.org**? 

In actual fact, the two are **equivalent to one another**. This takes a little explaining so follow me carefully here. 

The first thing you need to know (most Net users know this), is that Internet names translate to numbers called IP addresses. An IP address is normally seen in "dotted decimal" format. **www.pc-help.org** translates to **206.191.158.55**. So of course, this page's address can be expressed as: <http://206.191.158.55/obscure.htm>. 

Numeric IP addresses are generally unrecognizable to people, and not easily rememberd. That's why we use names for network locations in the first place. 

Merely using an IP address, in its usual dotted-decimal format, in place of the name is commonly done and can be quite effective at leaving the human reader in the dark about which website he's visiting. 

But there are _other ways_ to express _that same number_. The alternate formats are: 

* "[dword][7]" \- meaning **double word** because it consists essentially of two binary "words" of 16 bits; but it is expressed in decimal (base 10);
* "[octal][8]", meaning it's expressed in base 8; and
* "[hexadecimal][9]" hexa=6 + deci=10 (base 16).

The dword equivalent of **206.191.158.55** is **3468664375**. Its octal and hexadecimal equivalents are also illustrated below. 

Why obscure names in the first place? Most often it's because by publicly-available registration records, _the owners of domain names can often be identified_. Even if the owner isn't traceable by that record, his service provider _is_. The last thing any scammer or spammer wants is to be found by his victims, or to have his service provider alerted to his abuses. Although the use of obscured URLs is far from their only means of avoiding retribution, it's been a favorite. 

Below, I explain how you can [get an IP address][10] for any name, how to [convert a dotted-decimal IP address][7] to the dword format, and how the [octal][8] and [hex][9] formats work. If you know how it's _done_, you will also know how it's _undone_. 

Okay, so what about the rest of the URL? Let's look yet again at that weird address I first showed you: 

[http://3468664375@3468664375/o%62s%63ur%65%2e%68t%6D][1]

It's beginning to make _**some**_ sense, isn't it? But what's all that gibberish on the right? Here's how that works: 

Individual characters of a URL's path and filename can be represented by their **numbers** in **hexadecimal** form. Each hex number is preceded by a "%" symbol to identify the following two numbers/letters as a hexadecimal representation of the character. The practical use for this is to make it possible to include spaces and unusual characters in a URL. But it works for **all** characters and can render perfectly readable text into a complete hash. 

In my example, I have interspersed hex representations with the real letters of the URL. It simply spells out "/obscure.htm" in the final analysis: 
    
    
    ** / o %62 s %63 ur %65 %2e %68 t %6D
     / o  b  s  c  ur  e   .   h  t  m**

The letters used in the hex numbers can be either upper or lower case. The "slashes" in the address cannot be represented in hex; nor can the IP address be rendered this particular way. But everything else can be. 

 

Hexadecimal Character Codes

Hex character codes are simply the hexadecimal (base 16) numbers for the ASCII character set; that is, the number-to-letter representations which comprise virtually all computer text. 

To find the numeric value for an ASCII character, I often use a little batchfile I wrote for the purpose years ago; and then if I want the hex equivalent I usually do the math in my head. It just requires familiarity with the multiples of 16 up to 256. 

For most people, the conversion is probably best done with a chart. The best ASCII-to-hex chart I have ever seen is on the website of Jim Price: <http://www.jimprice.com/jim-asc.htm>. Jim explains the ASCII character set wonderfully well, and provides a wealth of handy charts. 

I can't improve on Jim's excellent work! Print out Jim's ASCII-to-hex chart and you're in business. If Jim's site ever disappears, let me know and I'll do a chart of my own. 

 

IP Addresses

IP addresses are most commonly written in the dotted-decimal format. A dotted-decimal IP number normally has 4 numeric segments, each separated by a period. The numbers must range from 0 to 255. 

Translation of a network name to its IP address is usually done in the background by your network software, invisible to the user. Given a name, your browser queries a **name server**, a machine somewhere on the Net which performs this basic network addressing function; it thereby obtains the numeric IP address and then uses that address to direct its requests to the right computer, somewhere out there on the Net. 

There is a standard utility which allows the user to perform these name server lookups directly and see the results. It's called **NSLOOKUP**. 

A wide variety of nslookup utilites is available on the Net, often for free download. Some provide a graphical interface under Windows, but the original and most basic nslookup is run from a textual command line. One such command-line utility is included in my free [Network Tracer][11]. Please download it if you're interested. 

Place **NSLOOKUP.EXE** in your Windows directory and you can use it from a DOS window. A simple nslookup query is structured as follows: 

**nslookup [name or IP address] [name server]**

A name server has to be specified if you're using Windows 9x/ME, either by name or IP address. Find out the address of your ISP's Primary DNS Server -- it can usually be found in your Dial-Up Networking setup or in the documents provided for setup of your Internet connection. 

If you're using XP or NT, the name server need not be specified. 

A valid query for my ISP's web server address would be: 

**nslookup www.nwi.net [name server]**

Here's what that command puts out in response, with my comments: 
    
    
    nslookup www.nwi.net 198.41.0.196 <-- Here's the command you typed in
      
    Server:  ns.netsol.com            <-- The name server you utilized
      
    Address:  198.41.0.196            <-- The responding name server's IP address
      
    
      
    Non-authoritative answer:         <-- Some other name server is the source of the data
      
    Name:    sundance.nwinternet.com  <-- The "real" name of www.nwi.net
      
    Address:  206.159.40.2            <-- What you came here for: the IP address of www.nwi.net
      
    Aliases:  www.nwi.net             <-- www.nwi.net is an alias -- not the
      
                                          primary name given to that address, but a valid one.
    

It's a powerful utility; it can find names for known addresses, addresses for known names, and a variety of other information relevant to an Internet address. But doing some of the fancier things with **NSLOOKUP** is difficult if you're not already technically savvy. For the technically inclined, there is [a manual][12]; and several examples of its use can be found in TRACE.BAT, the primary component of my [Network Tracer][11]. 

If you're determined to avoid the DOS command line, and want a tool that will do most of the thinking for you, I recommend [NetScanTools][13], a reasonably-priced network utility toolbox. It's available as a 30-day shareware demo and a bargain at just $25. NetScanTools is not merely an address-lookup utility; it can do a great many things. For a Windows user trying to comprehend the nuts and bolts of the Net, it's a whole world of discovery. 

You can also do your name server lookups with a web browser. There are nslookup "gateways" scattered around on the Web. One such gateway is at: <http://www.lasaltech.com/cgi-bin/nslookup> Another is: <http://www.interlog.com/~patrick/cgi/nslookup.cgi>

 

A Variation on Dotted-Decimal IPs

If you're using Internet Explorer, this address should work (It doesn't work with at least some versions of Netscape): [http://462.447.414.311/obscure.htm][14]

Normally, the four IP numbers in a standard dotted-decimal address will all be between 0 and 255. In fact they must translate to an 8-bit binary number (ones and zeroes), which can represent a quantity no higher than 255. 

But the way this number is handled by some software often allows for a value higher than 255. The program uses only the 8 right-hand digits of the binary number, and will drop the rest if the number is too large. 

This means you can add multiples of 256 to any or all of the 4 segments of an IP address, and it will often still work. In my tests, it was limited to 3 digits per number; values over 999 didn't work. 

 

Converting An IP Address to Dword Format

I could create a math lesson about this, and tell you all about bits and bytes and base 16. But it's not really necessary. Anyone with a Windows system has a handy calculator that makes it simple to convert decimal numbers to hex, and to find the dword equivalent of any dotted-decimal IP number. You should find it by selecting Start ... Programs ... Accessories ... Calculator. It will look like this: 

![][15]  
or, in Scientific mode, it looks like this:  
![][16]

I suggest Scientific mode for this purpose. 

Start with an IP address. In this example we'll use 206.191.158.55. Enter the following keystrokes into the calculator exactly as shown: 
    
    
    _206_ * 256 + _191_ = * 256 + _158_ = * 256 + _55_ =

The dword equivalent of the IP address will be the result. In this case, 3468664375. 

Now, there is a further step that can make this address even _more_ obscure. You can add to this dword number, **any multiple of the quantity 4294967296** (2564) -- and it will still work. This is because when the sum is converted to its basic digital form, the _last 8 hexadecimal digits will remain the same_. Everything to the left of those 8 hex digits is discarded by the IP software and therefore irrelevant. 

Thus, the following URLs will also lead to this page: 

<http://7763631671/obscure.htm>   
<http://16353566263/obscure.htm>   
<http://235396898359/obscure.htm>

There now exist a handful of utilities that will do dword (and other) conversions of IP addresses and URLs. When time permits, I'll be sure to list them on this page. Meanwhile, there's a handy script on Matthias Fichtner's website which will quickly convert any IP address to its dword value and vice-versa: <http://www.fichtner.net/tools/ip2dword/>. 

 

PING

The PING utility that's in every Windows system can decipher dword IPs. In fact, it deals with **every method of expressing an IP address** that's described on this page. _(My thanks to Steven, who pointed this out on the NTBugTraq list.)_

Just open a DOS window and type: 

**ping [IPAddress]**

PING will then do its usual job, in which it contacts the remote system (if any) at that address and gauges its response times. In the process, it displays the ordinary dotted-decimal equivalent of the IP address you entered. 

 

Octal IP Addresses

As if all this weren't enough, an IP address can also be represented in **octal** form -- base 8. 

The URL for this page with its IP address in octal form looks like this: [http://0316.0277.0236.067/obscure.htm][17]   
Go ahead, try it. You'll be right back here once again.. 

Note the leading zeroes. They're necessary to convey to your browser the fact that this is an octal number. 

Any number of leading zeroes can be added to any or all of the numbers in the address. For example: [http://00000000316.000277.00000236.00000000067/obscure.htm][18]

Naturally, arbitrary authentication text can also be added to an octal address. Example: [http://www.sleazy-ad.com@00000000316.000277.00000236.00000000067/obscure.htm][19]

Octal numbers are easily derived with the Windows calculator in Scientific mode. Enter a decimal number, then select the "Oct" button at upper left. The octal number will appear. The reverse operation translates octal to decimal. 

_(Those who find all this unwieldy can always use the handy [URLomatic][20] at [www.samspade.org][21]. It will reveal the dotted-decimal IP address of a dword- or octal-formatted URL, as well as to decode [hex character codes][22]. [ This link][23] to the URLomatic will completely decipher my original example address. Many thanks to [Dan Renner][24] of [R&B; Computerhelp][25])._

 

Hexadecimal IP Addresses

You thought that was all? Well, so did I, until one Daniel Doekal informed me otherwise. There is yet _another_ obscure way to express an IP address. 

Starting with the method outlined above, you can readily calculate the _hexadecimal_ number for 206.191.158. 55. In Scientific mode, calculate the dword value. Then select the Hex button. The resulting hexadecimal number (CEBF9E37) can be expressed as an IP address in this manner: 0xCE.0xBF.0x9E.0x37

The "0x" designates each number as a hex quantity. 

The dots can be omitted, and the entire hex number preceded by 0x: 0xCEBF9E37

And, additional arbitrary hex digits can be added to the left of the "real" number: 0x9A3F0800CEBF9E37

Some browsers (Netscape 3.x and 4.x for instance) won't work with hex IPs; but for IE users (prior to version 6), this page's URL can be:   
[http://0xCE.0xBF.0x9E.0x37/obscure.htm][26]   
or:   
[http://0xCeBF9e37/obscure.htm][27]   
or:   
[http://0x9A3F0800CEBF9E37/obscure.htm][28]

 

It's Not Over Yet

Ah, you thought you had it all nailed down? Well, it's mix-and-match time! 

Believe it or not, the following URL, which uses hex, decimal _and_ octal numbers in the IP address, actually _works_: [http://0xCE.191.0236.0x37/obscure.htm][29]

This mixed-format address also works with bogus authentication text: [http://spam-world.net@0xCE.191.0236.0x37/obscure.htm][30]

For Netscape users, omitting the hex is necessary; but decimal and octal can be mixed: [http://spam-world.net@0316.191.0236.067/obscure.htm][31]

Thankfully, the wonderful [URLomatic][32] at [samspade.org][21] deals with these mixed-up IPs just fine. 

Also, don't forget [PING][33]. It will also decode these mixed-format addresses. 

 

Not Dotless, But Less Dots

A variation on the dword IP address is one where a _portion_ of the IP address is similarly converted. This only works with the rightmost two or three numbers, not the leftmost. 

Let's start again with 206.191.158.55. Leaving the "206" as it is, we do the same calculation with the last three numbers: 
    
    
    _191_ * 256 + _158_ = * 256 + _55_ = 12557879

Now we have: [http://206.12557879/obscure.htm][34]
    
    
    _158_ * 256 + _55_ = 40503

Which results in: [http://206.191.40503/obscure.htm][35]

Now extend this same concept to hex and octal numbers: 

[http://0xCE.0xBF9E37/obscure.htm][36]   
[http://0xCE.0xBF.0x9E37/obscure.htm][37]   
[http://0316.057717067/obscure.htm][38]   
[http://0316.0277.0117067/obscure.htm][39]

Why not mix and match? 

[http://0316.0xBF9E37/obscure.htm][40]   
[http://206.0277.0x9E37/obscure.htm][41]

 

Furthermore...

Internet Explorer (versions prior to 6) will allow the characters of the IP address itself, in any format, to be expressed as hex-coded characters. 

Example: [http://%334%368%366%34%33%375/obscure.htm][42]

The same can be done with the domain name: <http://%70%43%2d%68%45%6c%50%2e%6f%52%67/obscure.htm>

 

In Sum

URLs can be obscured at least three ways: 

1. Meaningless or deceptive text can be added after "**http://**" and before an "**@**" symbol.
2. The domain name can be expressed as an IP address, in [dotted-decimal][10], [dword][7], [octal][8] _or_ [hexadecimal][9] format; and all of these formats have variants.
3. Characters in the URL can expressed as [hexadecimal][22] (base 16) numbers.

 

An Increasingly Common Exception

As IP address space becomes more valuable, web hosting services increasingly use systems that place _many_ websites at _one_ IP address. The server differentiates between sites by means of the domain name portion of the URL. Sites on such a server cannot be addressed using the IP address alone. 

 

Some Notes on Compatibility

I've been getting a lot of feedback about this page from people who are running various browsers and proxies. So far, reports and my own rather limited tests seem to indicate that: 

> * hex-coded IPs and values over 255 in dotted-decimal IPs don't work with Netscape; 
> * most, perhaps all of the dword-coded IPs don't work with some versions of IE; this could be an effect of the MS [patch][2] for the "dotless IP" exploit. 
> * Later IE versions seem to reject any hex-coded IP that's not broken up by dots as in my first example above; 
> * Opera 3.60 doesn't allow non-dotted hexadecimal IPs. 
> * Netscape won't allow the following characters in the authentication text: /?
> * IE won't allow the following characters in the authentication text: /#   
and it exhibits problems or inconsistencies with: %'"<>
> * MS-Proxy reportedly rejects almost any IP address that's not in dotted-decimal IP format, as may some other proxies. Reports indicate that most proxies handle them all just fine. 

If you notice anything more you think I should know about URL formats or the behavior of some particular software, feel free to [drop me a note][43]. 

* * *

[Home][44]

[1]: http://7763631671@3468664375/o%62s%63ur%65%2e%68t%6D
[2]: http://www.microsoft.com/technet/security/bulletin/ms98-016.asp
[3]: http://doesn'tmatter@www.pc-help.org/obscure.htm#how
[4]: http://www.pc-help.org/obscure.htm#how
[5]: http://www.playboy.com@3468664375/obscure.htm#auth
[6]: http://www.webskulker.com/
[7]: http://www.pc-help.org/obscure.htm#dword
[8]: http://www.pc-help.org/obscure.htm#octal
[9]: http://www.pc-help.org/obscure.htm#hexip
[10]: http://www.pc-help.org/obscure.htm#ip
[11]: http://www.pc-help.org/trace.htm
[12]: http://www.pc-help.org/nslookup.txt
[13]: http://www.netscantools.com/
[14]: http://462.447.414.311/obscure.htm#more
[15]: http://www.pc-help.org/images/calc1.gif
[16]: http://www.pc-help.org/images/calc2.gif
[17]: http://0316.0277.0236.067/obscure.htm#octal
[18]: http://00000000316.000277.00000236.00000000067/obscure.htm#octal
[19]: http://www.sleazy-ad.com@00000000316.000277.00000236.00000000067/obscure.htm#octal
[20]: http://www.samspade.org/t/url
[21]: http://www.samspade.org
[22]: http://www.pc-help.org/obscure.htm#hex
[23]: http://www.samspade.org/t/url?u=http://3468664375@3468664375/o%62s%63ur%65%2e%68t%6D
[24]: mailto:dan%40rbcomputerhelp.com
[25]: http://www.rbcomputerhelp.com/
[26]: http://0xCE.0xBF.0x9E.0x37/obscure.htm#hexip
[27]: http://0xCeBF9e37/obscure.htm#hexip
[28]: http://0x9A3F0800CEBF9E37/obscure.htm#hexip
[29]: http://0xCE.191.0236.0x37/obscure.htm#mix
[30]: http://spam-world.net@0xCE.191.0236.0x37/obscure.htm#mix
[31]: http://spam-world.net@0316.191.0236.067/obscure.htm#mix
[32]: http://www.samspade.org/t/url.cgi
[33]: http://www.pc-help.org/obscure.htm#ping
[34]: http://206.12557879/obscure.htm#dotty
[35]: http://206.191.40503/obscure.htm#dotty
[36]: http://0xCE.0xBF9E37/obscure.htm#dotty
[37]: http://0xCE.0xBF.0x9E37/obscure.htm#dotty
[38]: http://0316.057717067/obscure.htm#dotty
[39]: http://0316.0277.0117067/obscure.htm#dotty
[40]: http://0316.0xBF9E37/obscure.htm#dotty
[41]: http://206.0277.0x9E37/obscure.htm#dotty
[42]: http://%334%368%366%34%33%375/obscure.htm#further
[43]: mailto:pchelp@pc-help.org?subject=URLs
[44]: http://www.pc-help.org/index.html

