The Apache web server can maintain a log of "referrers" if you ask it to. When a client loads a page, Apache recorded the request in the file /var/www/logs/access_log and, if this is enabled, the referring page is recorded in /var/www/logs/referer_log (that's just how Apache wants to spell it).
Let's say a remote user using a client machine at IP address 1.2.3.4 was reading someone else's page http://somehost.com/. They see a hyperlink pointing to one of your page, http://yourhost.com/somepage.html. Two things are logged on your server when the user clicks on that link:
/var/www/logs/access_log gets a new line, looking something like this:
1.2.3.4 - - [08/Feb/12:01:02:56 -0500] "GET /somepage.html HTTP/1.1" 200 7340
/var/www/logs/referer_log gets a new line, looking something like this:
1.2.3.4 -- http://somehost.com/blah/blah.html -> /somepage.html
Now that's kind of interesting, it shows you the pages on the Internet with static links pointing to your pages. What many people find more interesting is the list of search strings people have entered at Google and other search engines to reach your pages.
We can do this, the referring URL includes the search engine hostname and path to its search page, as well as the search string itself! However, that takes a little massaging before it's easy to read. Here is an example. This is really one line of 241 characters, I have broken it at 80 columns so it fits in your browser:
81.184.32.18 -- http://www.google.es/search?hl=es&client=firefox-a&rls=org.mozil la:es-ES:official&hs=GMa&ei=1KlwSomeMIysjAf8l4SZBQ&sa=X&oi=spell&resnum=0&ct=res ult&cd=1&q=packet+sniffing+tools+for+windows&spell=1 -> /security/monitoring.htm l
Look at that a piece at a time. The client is at IP address 81.184.32.18, which resolves back to a hostname of 81.184.32.18.dyn.user.ono.com. That IP address belongs to an Internet service provider in Aravaca, Spain, according to the whois output:
inetnum: 81.184.0.0 - 81.184.88.255 netname: MENTA-CABLEMODEMS descr: AUNA - CTC descr: Internet de Banda Ampla descr: CableModem country: ES [....] role: Techauna AUNA address: C/ Basauri, 7-9 La Florida, Aravaca address: Aravaca (28023) address: Spain phone: +34911809300
The client did a search from the page http://www.google.es/search, Google's Spanish language search interface. The rest of the referring URL is a collection of variable=value pairs strung together with the ampersand character, &. They specify things like the client's browser, preferred languages, whether Google should do spell checking and the type and number of results desired, and so on. The query itself is specified by q=..., can you find it?
There it is, almost at the end. They asked the Spanish Google page an English query:
packet sniffing tools for windows
Google has made that list of strings into a single string with + characters between the original components. Here it is, highlighted:
81.184.32.18 -- http://www.google.es/search?hl=es&client=firefox-a&rls=org.mozil la:es-ES:official&hs=GMa&ei=1KlwSomeMIysjAf8l4SZBQ&sa=X&oi=spell&resnum=0&ct=res ult&cd=1&q=packet+sniffing+tools+for+windows&spell=1 -> /security/monitoring.htm l
From the list of search results, they clicked on the link to my page about protocol analysis, network monitoring, and packet sniffing. Really, that enormously long Google URL is the search result page itself. The user clicked on something on that dynamically generated search result page that led to my page.
This doesn't look too bad, but there are three things to look out for.
First, not all search engines use q=. Yahoo uses p=. Mywebsearch.com uses searchfor=, which I'm going to remap to q= in an early step.
Second, some searches contain similar variables like aq=... or oq=... when we're expecting q=... on Google. So, we have to be careful about simply saying "Everything after the q= or p= will be the search query." The variable=value pairs don't appear in any predictable order, so we can't look for the first or last instance of q= or p=.
The trick is to notice that the list of variable=value pairs starts after a question mark, ?, and is separated by ampsersands, &. So, the criteria is really: "Everything after either ?q= or &q= or ?p= or &p= will be the search query."
Well, no, not everything after either of those two strings — just everything up to either another ampersand (starting the next variable=value pair) or a blank space (the query happened to be the last one).
Third, the search engine and the client's browser may replace some characters with their ASCII codes. Instead of a literal space character, there will be %20 because the ASCII code for the space character is hexadecimal 0x20. Here's an example with a punctuation mark. The user typed TCP/IP Class handouts and the slash character / was replaced with the ASCII code %2F. That could appear as either %2F or %2f, we have to account for both upper and lower case ASCII codes.
209.136.52.205 -- http://www.google.com/search?hl=en&q=TCP%2FIP+Class+handouts&aq=f&oq=&aqi= -> /tcpip/
What we want to do to each line is:
This is just one big sed command! Instead of a bunch of sed commands piped together, I can just run one with multiple edit strings. I have put it in a file, a one-line shell script:
#!/bin/sh
# Clean up search strings from /var/www/logs/referer_log
sed -e 's/%[01]./ /g' \
-e 's/%20/ /g' \
-e 's/%21/!/g' \
-e 's/%22/"/g' \
-e 's/%23/#/g' \
-e 's/%24/$/g' \
-e 's/%26/\&/g' \
-e "s/%27/'/g" \
-e 's/%28/(/g' \
-e 's/%29/)/g' \
-e 's/%2[Aa]/*/g' \
-e 's/%2[Bb]/+/g' \
-e 's/%2[Cc]/,/g' \
-e 's/%2[Ee]/./g' \
-e 's/%2[Dd]/-/g' \
-e 's@%2[Ff]@/@g' \
-e 's/%30/0/g' \
-e 's/%31/1/g' \
-e 's/%32/2/g' \
-e 's/%33/3/g' \
-e 's/%34/4/g' \
-e 's/%35/5/g' \
-e 's/%36/6/g' \
-e 's/%37/7/g' \
-e 's/%38/8/g' \
-e 's/%39/9/g' \
-e 's/%3[Aa]/:/g' \
-e 's/%3[Bb]/;/g' \
-e 's/%3[Cc]/</g' \
-e 's/%3[Dd]/=/g' \
-e 's/%3[Ee]/>/g' \
-e 's/%3[Ff]/?/g' \
-e 's/%40/@/g' \
-e 's/%5[Bb]/\[/g' \
-e 's/%5[Cc]/\\/g' \
-e 's/%5[Dd]/\]/g' \
-e 's/%5[Ee]/^]/g' \
-e 's/%5[Ff]/_]/g' \
-e 's/%60/`/g' \
-e 's/%7[Bb]/{]/g' \
-e 's/%7[Cc]/|]/g' \
-e 's/%7[Dd]/}]/g' \
-e 's/%7[Ee]/~]/g' \
-e 's/%25/%/g' \
-e 's/?searchfor=/?q=/' \
-e 's/.*[?&][pq]=//' \
-e 's/&.*=.* ->/ ->/' \
-e 's/+/ /g' \
-e 's/ */ /g' \
-e 's/^ //'
I have that shell script in a directory in my command search path, ~/bin/script/log-clean as I've organized things. Notice that it ignores any command-line parameters, it simple reads from standard input and writes to standard output. That's because I want to be able to easily use it in various ways:
What are all the searches? Generally speaking, searches contain "=". Google image searches contain "imgurl=" and they aren't as useful for this analysis. % grep "=" /var/www/logs/referer_log | grep -v "imgurl=" | log-clean What about just Google non-image searches? % grep "google" /var/www/logs/referer_log | grep -v images.google | log-clean What about Google vs Yahoo? % grep "google" /var/www/logs/referer_log | grep -v "imgurl=" | log-clean % grep "yahoo" /var/www/logs/referer_log | log-clean
Those work, but they aren't very useful because they simply print the cleaned versions in the order in which they occurred. Here is a much more interesting question that we can now easily answer:
What is the complete list of searches used to find my pages, sorted in order of popularity? I would like to know the search string itself, how many times that was used, and its rank. Oh, and since people are erratic about capitalization, and some people think that Google pays more attention if you SHOUT IN ALL CAPS, I should force the queries to all lower case before doing the analysis. Oh, and I don't want to know about strange things that only happened once or a few times, let's limit this to searches done 10 times or more. Does this sound like a complicated request? This is easy in Unix!
% grep "=" /var/www/logs/referer_log | grep -v "imgurl=" | \
log-clean | \
tr 'A-Z' 'a-z' | sort | uniq -c | sort -nr | awk '$1 > 9' | cat -n
KEY:
log-clean We already know what this does...
tr Replaces upper case with lower case.
sort Reorder the lines into lexicographic order,
grouping identical lines together.
uniq -c Counts sequences of identical lines, replacing
each block with the count and the line content.
sort -nr Reorder the lines into reverse numerical order, numerical
because of the -n and reverse order because of the -r.
awk '$1 > 9' Only output those lines where field #1
is numerically greater than 9.
cat -n Insert line numbers before each line.
Here are the results for a log covering about six weeks. The Internet is a very strange place....
1 983 turkish grammar -> /turkish/
2 396 build linux kernel -> /unix/linux-kernel.html
3 327 toilets of the world -> /toilet/
4 252 build kernel -> /unix/linux-kernel.html
5 237 parkerizing -> /garand/parkerizing/
6 176 confederation of the lusitanian union -> /security/netusers/Index/pt
7 158 how to build linux kernel -> /unix/linux-kernel.html
8 140 toilets -> /toilet/
9 139 linux kernel build -> /unix/linux-kernel.html
10 139 how to parkerize -> /garand/parkerizing/
11 134 latex cyrillic -> /russian/latex.html
12 123 turkish verbs -> /turkish/verbs.html
13 120 building linux kernel -> /unix/linux-kernel.html
14 99 adsense xhtml -> /technical/google-adsense-and-xhtml.html
15 95 parkerize -> /garand/parkerizing/
16 93 net.ipv4.tcp_max_syn_backlog -> /security/security-stack-hardening.html
17 89 sniffing tools -> /security/monitoring.html
18 85 how to build kernel -> /unix/linux-kernel.html
19 84 make kernel -> /unix/linux-kernel.html
20 84 histogram equalization -> /3d/histogram/
21 81 network sniffing tools -> /security/monitoring.html
22 80 linux build kernel -> /unix/linux-kernel.html
23 78 net.ipv4.conf.all.rp_filter -> /security/security-stack-hardening.html
24 78 kernel build -> /unix/linux-kernel.html
25 78 confederation lusitanian union -> /security/netusers/Index/pt
26 74 cr0 net code network -> /security/monitoring.html
27 72 toilets around the world -> /toilet/
28 69 oscilloscope probes -> /radio/probes.html
29 67 oscilloscope probe -> /radio/probes.html
30 66 cyrillic latex -> /russian/latex.html
31 64 european toilets -> /toilet/see.html
32 62 stainless steel toilet -> /toilet/stainless.html
33 62 pictures of toilets -> /toilet/
34 59 unix ipconfig -> /tcpip/commands.html
35 59 toilet -> /toilet/
36 57 computer network security -> /security/
37 56 turkish grammar -> /turkish/background.html
38 56 how to build a linux kernel -> /unix/linux-kernel.html
39 56 confutatis maledictis -> /fun/latin.html
40 55 linux ip config -> /tcpip/commands.html
41 54 network sniffing -> /security/monitoring.html
42 53 movie concepts -> /fun/brilliant-movie-ideas/
43 53 lan monitoring -> /security/monitoring.html
44 51 what is ipsec -> /tcpip/what-is-ipsec.html
45 51 ardennes forest -> /travel/belgium/bastogne-ardennes/
46 50 how linux boots -> /unix/linux-boot.html
47 49 how to build a kernel -> /unix/linux-kernel.html
48 48 compile linux kernel -> /unix/linux-kernel.html
49 47 sniffing tool -> /security/monitoring.html
50 46 roman toilets -> /toilet/imperialroman.html
51 46 parkerizing solution -> /garand/parkerizing/
52 46 human toilets -> /toilet/nonhuman.html
53 44 tcp_strong_iss -> /security/security-stack-hardening.html
54 43 how to parkerize a gun -> /garand/parkerizing/
55 43 how to make a kernel -> /unix/linux-kernel.html
56 43 how to compile linux kernel -> /unix/linux-kernel.html
57 42 steampunk projects -> /steampunk/
58 41 ipconfig commands -> /tcpip/commands.html
59 40 kernel make -> /unix/linux-kernel.html
60 40 guitar gun case -> /garand/m1-garand-assembly/case.html
61 40 ghostbusters headquarters -> /travel/usa/ghostbusters/
62 40 cncgroup hebei province network -> /security/security-attack-study.html
63 39 verify digital signature -> /security/verify-digital-signature.html
64 39 bluing steel -> /garand/debluing/
65 38 contrast enhancement -> /3d/histogram/
66 38 ardennes forest map -> /travel/belgium/bastogne-ardennes/
67 37 unix ip config -> /tcpip/commands.html
68 37 turkish grammar online -> /turkish/background.html
69 35 how to use ftp in linux -> /unix/ftp-howto.html
70 34 turkish suffixes -> /turkish/turkish-suffixes.html
71 34 sendmail ssl -> /unix/sendmail-ssl.html
72 34 protocol header -> /tcpip/protocols.html
73 34 learn turkish grammar -> /turkish/
74 34 ipconfig linux -> /tcpip/commands.html
75 33 wireless sniffing windows -> /security/monitoring.html
76 33 unix ip commands -> /tcpip/commands.html
77 33 cisco catalyst 2900 -> /tcpip/switch-programming.html
78 32 www.alqaida.com -> /security/netusers/Index/aq
79 32 wan link -> /tcpip/wan-specs.html
80 32 oscilloscope probe circuit -> /radio/probes.html
81 31 turkish pronouns -> /turkish/nouns.html
82 31 linux ip config command -> /tcpip/commands.html
83 31 computer system security -> /security/
84 31 build kernel linux -> /unix/linux-kernel.html
85 30 world toilets -> /toilet/
86 30 turkish grammar -> /turkish/nouns.html
87 30 stainless steel toilets -> /toilet/stainless.html
88 30 how to remove bluing -> /garand/debluing/
89 30 build linux -> /unix/linux-kernel.html
90 30 7 deadly sins spear street google secret service -> /security/cyberwar.html
91 29 linux kernel compile -> /unix/linux-kernel.html
92 29 how routing works -> /tcpip/routing.html
93 28 jim morrison paris -> /travel/france/jim-morrison-paris.html
94 28 http://www.cr0.net:8040/code/network/ -> /security/monitoring.html
95 28 dover tunnels -> /travel/uk/dover/
96 28 building kernel -> /unix/linux-kernel.html
97 27 wan links -> /tcpip/wan-specs.html
98 27 turkish grammar -> /turkish/verbs.html
99 27 ipconfig unix -> /tcpip/commands.html
100 27 ghostbusters headquarters building -> /travel/usa/ghostbusters/
101 27 ghostbusters -> /travel/usa/ghostbusters/
102 26 unix commands ip -> /tcpip/commands.html
103 26 linux ip configuration command -> /tcpip/commands.html
104 26 jim morrison in paris -> /travel/france/jim-morrison-paris.html
105 26 how to make a gun case -> /garand/m1-garand-assembly/case.html
106 26 how to build the linux kernel -> /unix/linux-kernel.html
107 26 free computer forensic tools -> /security/security-forensics.html
108 26 chimera turkey -> /travel/turkey/olimpos/
109 26 bastogne battle of the bulge -> /travel/belgium/bastogne-ardennes/
110 26 adaptive histogram equalization -> /3d/histogram/
111 25 train toilets -> /toilet/train.html
112 25 tektronix 2445a -> /radio/tek2445a.html
113 25 lan monitoring tool -> /security/monitoring.html
114 25 intrusion detection tools -> /security/security-intrusion.html
115 25 eastern toilets -> /toilet/
116 25 confutatis maledictis flammis acribus addictis -> /fun/latin.html
117 25 asian toilets -> /toilet/
118 24 turkish basics -> /turkish/
119 24 jim morrison -> /toilet/france.html
120 24 highest peak in scotland -> /travel/uk/ben-nevis/
121 23 m1 garand parts -> /garand/m1-garand-assembly/
122 23 lan monitoring tools -> /security/monitoring.html
123 23 garand parts -> /garand/m1-garand-assembly/
124 23 basic turkish grammar -> /turkish/
125 23 ancient toilets -> /toilet/
126 22 network sniffing tool -> /security/monitoring.html
127 22 building a linux kernel -> /unix/linux-kernel.html
128 22 british toilets -> /toilet/britain.html
129 21 verifying digital signature -> /security/verify-digital-signature.html
130 21 turkish grammar rules -> /turkish/
131 21 toilets of the world -> /toilet/middle-east.html
132 21 small hf antenna -> /radio/hf-short-dipoles.html
133 21 oliver cromwell -> /oliver/
134 21 net.inet.ip.redirect -> /security/security-stack-hardening.html
135 21 linux ip configuration -> /tcpip/commands.html
136 21 ip config linux -> /tcpip/commands.html
137 21 image contrast enhancement -> /3d/histogram/
138 20 turkish language grammar -> /turkish/background.html
139 20 ssh access control -> /unix/ssh.html
140 20 ipconfig in unix -> /tcpip/commands.html
141 20 how nat works -> /tcpip/nat.html
142 20 eastern toilets -> /toilet/see.html
143 20 build a linux kernel -> /unix/linux-kernel.html
144 19 make linux kernel -> /unix/linux-kernel.html
145 19 linux tcp ip commands -> /tcpip/commands.html
146 19 how to make kernel -> /unix/linux-kernel.html
147 19 hieropolis -> /travel/turkey/pamukkale/
148 18 unix display ip address -> /tcpip/commands.html
149 18 remove bluing -> /garand/debluing/
150 18 rc.sysinit in linux -> /unix/linux-boot.html
151 18 jenny mccarthy -> /fun/brilliant-movie-ideas/news.html
152 18 hotel de medicis paris -> /travel/france/jim-morrison-paris.html
153 18 futuristic toilets -> /toilet/hightech.html
154 18 avebury uk -> /travel/uk/avebury/
155 18 asian toilets -> /toilet/middle-east.html
156 17 unix show ip address -> /tcpip/commands.html
157 17 unix ip command -> /tcpip/commands.html
158 17 turkish vowel harmony -> /turkish/orthography.html
159 17 toilet squatting platform -> /toilet/install.html
160 17 stainless toilets -> /toilet/stainless.html
161 17 springfield armory m1 garand serial numbers -> /garand/m1-garand-assembly/vintage.html
162 17 packet sniffing tools -> /security/monitoring.html
163 17 m1 garand drawing numbers -> /garand/spreadsheet.html
164 17 linux kernel build howto -> /unix/linux-kernel.html
165 17 ipconfig in linux -> /tcpip/commands.html
166 17 ipconfig for linux -> /tcpip/commands.html
167 17 ip config unix -> /tcpip/commands.html
168 17 grammar turkish -> /turkish/
169 17 build oscilloscope probe -> /radio/probes.html
170 16 network monitoring tools -> /security/monitoring.html
171 16 french toilets -> /toilet/links.html
172 16 deaths on ben nevis -> /travel/uk/ben-nevis/
173 16 cyrillic in latex -> /russian/latex.html
174 16 cisco 3550 -> /tcpip/switch-programming.html
175 16 bluing remover -> /garand/debluing/
176 16 ben nevis deaths -> /travel/uk/ben-nevis/
177 16 arlington hall -> /travel/usa/us-wash-ah.html
178 15 wlan sniffing -> /security/monitoring.html
179 15 toilet of the world -> /toilet/
180 15 strait gallipoli peninsula -> /travel/turkey/gallipoli/
181 15 make oscilloscope probe -> /radio/probes.html
182 15 linux network sniffing tools -> /security/monitoring.html
183 15 linux build -> /unix/linux-kernel.html
184 15 how to verify digital signature -> /security/verify-digital-signature.html
185 15 how to compile kernel -> /unix/linux-kernel.html
186 15 hardening openbsd -> /security/linux-hardening.html
187 15 hardening linux -> /security/linux-hardening.html
188 15 guangxi filterui:photo-photo -> /toilet/revolutionPRC.html
189 15 ghostbusters locations -> /travel/usa/ghostbusters/
190 15 free computer forensics tools -> /security/security-forensics.html
191 15 chinese toilets -> /toilet/
192 15 build a kernel -> /unix/linux-kernel.html
193 14 toilet world -> /toilet/
194 14 tektronix 2445 -> /radio/tek2445a.html
195 14 qemu linux usb -> /unix/qemu-unix.html
196 14 puppy linux qemu -> /unix/qemu-unix.html
197 14 programming cisco switches -> /tcpip/switch-programming.html
198 14 program cisco switch -> /tcpip/switch-programming.html
199 14 network security -> /security/
200 14 linux kernel make -> /unix/linux-kernel.html
201 14 linux kernel building -> /unix/linux-kernel.html
202 14 linux ip information -> /tcpip/commands.html
203 14 linux hardening -> /security/linux-hardening.html
204 14 international toilets -> /toilet/
205 14 how to build linux -> /unix/linux-kernel.html
206 14 greyhound bus toilet -> /toilet/bus.html
207 14 catalyst 2900 -> /tcpip/switch-programming.html
208 14 building linux -> /unix/linux-kernel.html
209 14 ben nevis trail -> /travel/uk/ben-nevis/
210 13 zepp antenna -> /radio/j-poles.html
211 13 unix tcp ip commands -> /tcpip/commands.html
212 13 unix ip configuration -> /tcpip/commands.html
213 13 tektronix oscilloscope -> /radio/tek2445a.html
214 13 qemu puppy -> /unix/qemu-unix.html
215 13 parkerizing process -> /garand/parkerizing/
216 13 network security system -> /security/
217 13 learn turkish grammar -> /turkish/background.html
218 13 kernel build howto -> /unix/linux-kernel.html
219 13 kata ton daimona eautou -> /travel/france/jim-morrison-paris.html
220 13 ip unix -> /tcpip/commands.html
221 13 interesting toilets -> /toilet/
222 13 how to program a cisco switch -> /tcpip/switch-programming.html
223 13 egyptian toilets -> /toilet/
224 13 custom gun cases -> /garand/m1-garand-assembly/case.html
225 13 building a kernel -> /unix/linux-kernel.html
226 13 brecourt manor -> /travel/france/normandy/brecourt-manor.html
227 12 would you like to enable as a cluster command switch -> /tcpip/switch-programming.html
228 12 unix firewall -> /security/security-firewall.html
229 12 unix command ipconfig -> /tcpip/commands.html
230 12 toilets of the world -> /toilet/hightech.html
231 12 toilets in the world -> /toilet/
232 12 sniff tool -> /security/monitoring.html
233 12 rose valley turkey -> /travel/turkey/goreme/
234 12 openbsd hardening -> /security/linux-hardening.html
235 12 net.ipv4.conf.all.rp_filter=0 -> /security/security-stack-hardening.html
236 12 making a kernel -> /unix/linux-kernel.html
237 12 m1 garand parts -> /garand/m1-garand-assembly/vintage.html
238 12 list of suffixes -> /turkish/turkish-suffixes.html
239 12 linux ipconfig -> /tcpip/commands.html
240 12 linux ip info -> /tcpip/commands.html
241 12 kata ton jim morrison -> /travel/france/jim-morrison-paris.html
242 12 ip configuration in linux -> /tcpip/commands.html
243 12 ip config in linux -> /tcpip/commands.html
244 12 howto build linux kernel -> /unix/linux-kernel.html
245 12 how to calculate subnet number -> /tcpip/tcpip-subnetting.txt
246 12 how to build a gun case -> /garand/m1-garand-assembly/case.html
247 12 firewall tools -> /security/security-firewall.html
248 12 confutatis maledictis, flammis acribus addictis -> /fun/latin.html
249 12 calculate normal -> /3d/normals.html
250 12 bluing -> /garand/debluing/
251 12 255.254.0.0 -> /tcpip/
252 11 windows wireless sniffing -> /security/monitoring.html
253 11 turkish language basics -> /turkish/background.html
254 11 toilet signage -> /toilet/signage.html
255 11 tcp/ip commands -> /tcpip/commands.html
256 11 tcp ip unix -> /tcpip/commands.html
257 11 sit vis tecum -> /fun/latin.html
258 11 russian grammar table -> /russian/grammar.html
259 11 rtsp internet radio -> /radio/internet-radio.html
260 11 network security audit tools -> /security/security-netaudit.html
261 11 monitoring lan -> /security/monitoring.html
262 11 m1 garand ammunition -> /garand/m1-garand-assembly/ammunition.html
263 11 m1 garand -> /garand/m1-garand-assembly/
264 11 ip configuration linux -> /tcpip/commands.html
265 11 history of information security -> /security/history/
266 11 hiking hadrian's wall -> /travel/uk/hadrians-wall/
267 11 french toilet -> /toilet/france.html
268 11 foreign toilets -> /toilet/
269 11 dover tunnels -> /travel/uk/dover/
270 11 convert pal to ntsc dvd -> /technical/pal-to-ntsc.html
271 11 computer forensic tools free -> /security/security-forensics.html
272 11 cisco catalyst 2900 xl -> /tcpip/switch-programming.html
273 11 cisco 2900 -> /tcpip/switch-programming.html
274 11 build kernel from source -> /unix/linux-kernel.html
275 11 brecourt manor normandy -> /travel/france/normandy/brecourt-manor.html
276 11 bob cromwell -> /
277 11 authentication tools -> /security/security-authentication.html
278 11 african toilets -> /toilet/north-africa.html
279 11 55 central park west ghostbusters -> /travel/usa/ghostbusters/
280 10 zepp antenna calculator -> /radio/j-poles.html
281 10 unix display ip -> /tcpip/commands.html
282 10 turkish verb conjugation -> /turkish/verbs.html
283 10 trains in turkey -> /travel/turkey/trains/
284 10 tcp/ip -> /tcpip/
285 10 tcp ip commands -> /tcpip/commands.html
286 10 stupid signs -> /fun/strange-signs.html
287 10 squatting toilet platform -> /toilet/install.html
288 10 sniff wireless lan -> /security/monitoring.html
289 10 removing bluing -> /garand/debluing/
290 10 remove blueing -> /garand/debluing/
291 10 pki tools -> /security/security-pki.html
292 10 pearl's place tobago -> /travel/trinidad/
293 10 m1 garand manual pdf -> /garand/m1-garand-assembly/manuals.html
294 10 lan sniffing -> /security/monitoring.html
295 10 italian toilets -> /toilet/italy.html
296 10 ip information linux -> /tcpip/commands.html
297 10 ic229h -> /radio/ic229.html
298 10 ic-229h -> /radio/ic229.html
299 10 how to parkerize metal -> /garand/parkerizing/
300 10 how to brew mead -> /brewing/
301 10 hotel medicis paris -> /travel/france/jim-morrison-paris.html
302 10 ghostbusters columbia university -> /travel/usa/ghostbusters/
303 10 configure catalyst 2900 xl -> /tcpip/switch-programming.html
304 10 config ip linux -> /tcpip/commands.html
305 10 bluing removal -> /garand/debluing/
306 10 bidet -> /toilet/bidet.html
307 10 255.255.255.254 -> /tcpip/
Unix is powerful, the Internet is strange.
|
|
|
|||||||||
|
|||||||||
|
| © Bob Cromwell Feb 2012. Created with /bin/vi and ImageMagick, hosted on OpenBSD with Apache. Root password available here, privacy policy here. |