rubyfu 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +96 -0
  3. data/Rakefile +1 -0
  4. data/_book/beginners.html +1299 -0
  5. data/_book/contribution.html +1350 -0
  6. data/_book/contributors/Ruby_Loves_Us.jpg +0 -0
  7. data/_book/contributors/index.html +1294 -0
  8. data/_book/contributors/todo.html +1293 -0
  9. data/_book/cover.jpg +0 -0
  10. data/_book/faqs/index.html +1308 -0
  11. data/_book/files/module03/dns_spoofing_dns-query.pcap +0 -0
  12. data/_book/files/module03/dns_spoofing_dns-req_res.pcap.pcapng +0 -0
  13. data/_book/files/module06/ftp.pcap +0 -0
  14. data/_book/files/module06/packets.pcap +0 -0
  15. data/_book/gitbook/app.js +25001 -0
  16. data/_book/gitbook/fonts/fontawesome/FontAwesome.otf +0 -0
  17. data/_book/gitbook/fonts/fontawesome/fontawesome-webfont.eot +0 -0
  18. data/_book/gitbook/fonts/fontawesome/fontawesome-webfont.svg +504 -0
  19. data/_book/gitbook/fonts/fontawesome/fontawesome-webfont.ttf +0 -0
  20. data/_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff +0 -0
  21. data/_book/gitbook/images/apple-touch-icon-precomposed-152.png +0 -0
  22. data/_book/gitbook/images/favicon.ico +0 -0
  23. data/_book/gitbook/plugins/gitbook-plugin-addcssjs/README.md +19 -0
  24. data/_book/gitbook/plugins/gitbook-plugin-addcssjs/index.js +57 -0
  25. data/_book/gitbook/plugins/gitbook-plugin-addcssjs/package.json +47 -0
  26. data/_book/gitbook/plugins/gitbook-plugin-anchors/plugin.css +26 -0
  27. data/_book/gitbook/plugins/gitbook-plugin-book-summary-scroll-position-saver/book-summary-scroll-position-saver.js +30 -0
  28. data/_book/gitbook/plugins/gitbook-plugin-expandable-chapters/expandable-chapters.css +28 -0
  29. data/_book/gitbook/plugins/gitbook-plugin-expandable-chapters/expandable-chapters.js +68 -0
  30. data/_book/gitbook/plugins/gitbook-plugin-fontsettings/buttons.js +151 -0
  31. data/_book/gitbook/plugins/gitbook-plugin-fontsettings/website.css +291 -0
  32. data/_book/gitbook/plugins/gitbook-plugin-highlight/ebook.css +131 -0
  33. data/_book/gitbook/plugins/gitbook-plugin-highlight/website.css +426 -0
  34. data/_book/gitbook/plugins/gitbook-plugin-search/lunr.min.js +7 -0
  35. data/_book/gitbook/plugins/gitbook-plugin-search/search.css +27 -0
  36. data/_book/gitbook/plugins/gitbook-plugin-search/search.js +135 -0
  37. data/_book/gitbook/plugins/gitbook-plugin-sharing/buttons.js +93 -0
  38. data/_book/gitbook/plugins/gitbook-plugin-splitter/splitter.css +22 -0
  39. data/_book/gitbook/plugins/gitbook-plugin-splitter/splitter.js +122 -0
  40. data/_book/gitbook/style.css +9 -0
  41. data/_book/googlec55db2d603c3da8b.html +1 -0
  42. data/_book/images/module02/Cryptography__wiringdiagram.png +0 -0
  43. data/_book/images/module02/packaging__ocra1.png +0 -0
  44. data/_book/images/module03/dns_spoofing_wireshark1.png +0 -0
  45. data/_book/images/module03/dns_spoofing_wireshark2.png +0 -0
  46. data/_book/images/module04/webfu__post_form1.png +0 -0
  47. data/_book/images/module04/webfu__proxy2.png +0 -0
  48. data/_book/images/module04/webfu__twitterAPI1.png +0 -0
  49. data/_book/images/module04/webfu__xmlrpc1.png +0 -0
  50. data/_book/images/module05/msf_template1.png +0 -0
  51. data/_book/images/module06/win-foren__winreg1.png +0 -0
  52. data/_book/images/other/Ruby_Loves_Us.jpg +0 -0
  53. data/_book/images/other/cover.jpg +0 -0
  54. data/_book/images/other/cover_small.jpg +0 -0
  55. data/_book/images/other/logo.png +0 -0
  56. data/_book/images/other/rubyfu.png +0 -0
  57. data/_book/images/other/rubyfu1.png +0 -0
  58. data/_book/images/other/rubyfu3.png +0 -0
  59. data/_book/images/other/rubyfu4.png +0 -0
  60. data/_book/images/other/rubyfu_.png +0 -0
  61. data/_book/index.html +1284 -0
  62. data/_book/module_0x1__basic_ruby_kung_fu/array.html +1297 -0
  63. data/_book/module_0x1__basic_ruby_kung_fu/conversion.html +1386 -0
  64. data/_book/module_0x1__basic_ruby_kung_fu/extraction.html +1346 -0
  65. data/_book/module_0x1__basic_ruby_kung_fu/index.html +1367 -0
  66. data/_book/module_0x1__basic_ruby_kung_fu/string.html +1451 -0
  67. data/_book/module_0x2__system_kung_fu/command_execution.html +1348 -0
  68. data/_book/module_0x2__system_kung_fu/cryptography.html +1396 -0
  69. data/_book/module_0x2__system_kung_fu/email.html +1352 -0
  70. data/_book/module_0x2__system_kung_fu/file_manipulation.html +1371 -0
  71. data/_book/module_0x2__system_kung_fu/index.html +1557 -0
  72. data/_book/module_0x2__system_kung_fu/ncatrb.html +1424 -0
  73. data/_book/module_0x2__system_kung_fu/packaging.md +1 -0
  74. data/_book/module_0x2__system_kung_fu/packaging__ocra1.png +0 -0
  75. data/_book/module_0x2__system_kung_fu/parsing_html,_xml,_json.html +1395 -0
  76. data/_book/module_0x2__system_kung_fu/rce_as_a_service.html +1336 -0
  77. data/_book/module_0x2__system_kung_fu/smtp_enumeration.html +1308 -0
  78. data/_book/module_0x2__system_kung_fu/system_shell.html +1299 -0
  79. data/_book/module_0x2__system_kung_fu/virustotal.html +1318 -0
  80. data/_book/module_0x3__network_kung_fu/Remote_shell.md +19 -0
  81. data/_book/module_0x3__network_kung_fu/arp_spoofing.html +1420 -0
  82. data/_book/module_0x3__network_kung_fu/dns.html +1315 -0
  83. data/_book/module_0x3__network_kung_fu/dns_bruteforce.md +49 -0
  84. data/_book/module_0x3__network_kung_fu/dns_enumeration.html +1371 -0
  85. data/_book/module_0x3__network_kung_fu/dns_spoofing.html +1694 -0
  86. data/_book/module_0x3__network_kung_fu/dns_spoofing_wireshark2.png +0 -0
  87. data/_book/module_0x3__network_kung_fu/ftp.html +1287 -0
  88. data/_book/module_0x3__network_kung_fu/index.html +1392 -0
  89. data/_book/module_0x3__network_kung_fu/network_scanning.html +1339 -0
  90. data/_book/module_0x3__network_kung_fu/network_traffic_analysis.html +1356 -0
  91. data/_book/module_0x3__network_kung_fu/nmap.html +1355 -0
  92. data/_book/module_0x3__network_kung_fu/oracle_tns_enum1.png +0 -0
  93. data/_book/module_0x3__network_kung_fu/packet_manipulation.html +1386 -0
  94. data/_book/module_0x3__network_kung_fu/ruby_socket.html +1553 -0
  95. data/_book/module_0x3__network_kung_fu/snmp_enumeration.html +1314 -0
  96. data/_book/module_0x3__network_kung_fu/ssh.html +1461 -0
  97. data/_book/module_0x3__network_kung_fu/ssid_finder.html +1324 -0
  98. data/_book/module_0x3__network_kung_fu/tns_enumeration.html +1505 -0
  99. data/_book/module_0x4__web_kung_fu/browser_manipulation.html +1630 -0
  100. data/_book/module_0x4__web_kung_fu/databases.html +1531 -0
  101. data/_book/module_0x4__web_kung_fu/extending_burpsuite.html +1303 -0
  102. data/_book/module_0x4__web_kung_fu/index.html +1536 -0
  103. data/_book/module_0x4__web_kung_fu/interacting_with_apis.html +1271 -0
  104. data/_book/module_0x4__web_kung_fu/ruby2javascript.html +1303 -0
  105. data/_book/module_0x4__web_kung_fu/sql_injection_scanner.html +1489 -0
  106. data/_book/module_0x4__web_kung_fu/twitter_api.html +1328 -0
  107. data/_book/module_0x4__web_kung_fu/web_servcies_and_apis.html +1291 -0
  108. data/_book/module_0x4__web_kung_fu/web_server_and_proxy.html +1370 -0
  109. data/_book/module_0x4__web_kung_fu/web_services.html +1394 -0
  110. data/_book/module_0x4__web_kung_fu/webfu__burp-ext1.png +0 -0
  111. data/_book/module_0x4__web_kung_fu/webfu__burp-ext2.png +0 -0
  112. data/_book/module_0x4__web_kung_fu/webfu__burp_setenv1.png +0 -0
  113. data/_book/module_0x4__web_kung_fu/webfu__proxy2.png +0 -0
  114. data/_book/module_0x4__web_kung_fu/webfu__twitterAPI1.png +0 -0
  115. data/_book/module_0x4__web_kung_fu/webfu__xmlrpc1.png +0 -0
  116. data/_book/module_0x4__web_kung_fu/wordpress_api.html +1543 -0
  117. data/_book/module_0x5__exploitation_kung_fu/MSF-struct.png +0 -0
  118. data/_book/module_0x5__exploitation_kung_fu/auxiliary_module.html +1870 -0
  119. data/_book/module_0x5__exploitation_kung_fu/exploit_module.html +1523 -0
  120. data/_book/module_0x5__exploitation_kung_fu/extensions.html +1466 -0
  121. data/_book/module_0x5__exploitation_kung_fu/fuzzer.html +1325 -0
  122. data/_book/module_0x5__exploitation_kung_fu/index.html +1319 -0
  123. data/_book/module_0x5__exploitation_kung_fu/metasm.html +1322 -0
  124. data/_book/module_0x5__exploitation_kung_fu/metasploit.html +1441 -0
  125. data/_book/module_0x5__exploitation_kung_fu/meterpreter.html +1327 -0
  126. data/_book/module_0x5__exploitation_kung_fu/meterpreter_scripting.html +1318 -0
  127. data/_book/module_0x5__exploitation_kung_fu/msf_meter_railgun1.png +0 -0
  128. data/_book/module_0x5__exploitation_kung_fu/msf_template1.png +0 -0
  129. data/_book/module_0x5__exploitation_kung_fu/railgun_api_extension.html +1300 -0
  130. data/_book/module_0x6__forensic/android_forensic.html +1356 -0
  131. data/_book/module_0x6__forensic/index.html +1332 -0
  132. data/_book/module_0x6__forensic/parsing_log_files.html +1375 -0
  133. data/_book/module_0x6__forensic/win-foren__winreg1.png +0 -0
  134. data/_book/module_0x6__forensic/windows_forensic.html +1289 -0
  135. data/_book/package.json +5 -0
  136. data/_book/references/index.html +1338 -0
  137. data/_book/required_gems.html +1342 -0
  138. data/_book/rubyfu_.png +0 -0
  139. data/_book/search_index.json +1 -0
  140. data/_book/styles/ebook.css +1 -0
  141. data/_book/styles/epub.css +1 -0
  142. data/_book/styles/header.js +5 -0
  143. data/_book/styles/mobi.css +1 -0
  144. data/_book/styles/pdf.css +1 -0
  145. data/_book/styles/website.css +41 -0
  146. data/bin/rubyfu +48 -0
  147. data/lib/rubyfu.rb +36 -0
  148. data/lib/rubyfu/browse.rb +35 -0
  149. data/lib/rubyfu/version.rb +3 -0
  150. data/lib/rubyfu/webserver.rb +30 -0
  151. metadata +210 -0
@@ -0,0 +1,1553 @@
1
+ <!DOCTYPE HTML>
2
+ <html lang="en" >
3
+
4
+ <head>
5
+
6
+ <meta charset="UTF-8">
7
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
8
+ <title>Ruby Socket | RubyFu</title>
9
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
10
+ <meta name="description" content="">
11
+ <meta name="generator" content="GitBook 2.6.2">
12
+
13
+
14
+ <meta name="HandheldFriendly" content="true"/>
15
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
16
+ <meta name="apple-mobile-web-app-capable" content="yes">
17
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
18
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png">
19
+ <link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">
20
+
21
+ <link rel="stylesheet" href="../gitbook/style.css">
22
+
23
+
24
+ <link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-anchors/plugin.css">
25
+
26
+
27
+
28
+ <link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-splitter/splitter.css">
29
+
30
+
31
+
32
+ <link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-expandable-chapters/expandable-chapters.css">
33
+
34
+
35
+
36
+ <link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-highlight/website.css">
37
+
38
+
39
+
40
+ <link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-search/search.css">
41
+
42
+
43
+
44
+ <link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-fontsettings/website.css">
45
+
46
+
47
+
48
+ <link rel="stylesheet" href="../styles/website.css">
49
+
50
+
51
+
52
+
53
+
54
+ <link rel="next" href="../module_0x3__network_kung_fu/ssid_finder.html" />
55
+
56
+
57
+ <link rel="prev" href="../module_0x3__network_kung_fu/index.html" />
58
+
59
+
60
+ <script type="text/javascript" src="../styles/header.js"></script>
61
+ </head>
62
+ <body>
63
+
64
+
65
+ <div class="book"
66
+ data-level="3.1"
67
+ data-chapter-title="Ruby Socket"
68
+ data-filepath="module_0x3__network_kung_fu/ruby_socket.md"
69
+ data-basepath=".."
70
+ data-revision="Wed Jan 27 2016 09:00:51 GMT+0300 (AST)"
71
+ data-innerlanguage="">
72
+
73
+
74
+ <div class="book-summary">
75
+ <nav role="navigation">
76
+ <ul class="summary">
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+ <li class="chapter " data-level="0" data-path="index.html">
87
+
88
+
89
+ <a href="../index.html">
90
+
91
+ <i class="fa fa-check"></i>
92
+
93
+ Module 0x0 | Introduction
94
+ </a>
95
+
96
+
97
+ <ul class="articles">
98
+
99
+
100
+ <li class="chapter " data-level="0.1" data-path="contribution.html">
101
+
102
+
103
+ <a href="../contribution.html">
104
+
105
+ <i class="fa fa-check"></i>
106
+
107
+ <b>0.1.</b>
108
+
109
+ Contribution
110
+ </a>
111
+
112
+
113
+ </li>
114
+
115
+ <li class="chapter " data-level="0.2" data-path="beginners.html">
116
+
117
+
118
+ <a href="../beginners.html">
119
+
120
+ <i class="fa fa-check"></i>
121
+
122
+ <b>0.2.</b>
123
+
124
+ Beginners
125
+ </a>
126
+
127
+
128
+ </li>
129
+
130
+ <li class="chapter " data-level="0.3" data-path="required_gems.html">
131
+
132
+
133
+ <a href="../required_gems.html">
134
+
135
+ <i class="fa fa-check"></i>
136
+
137
+ <b>0.3.</b>
138
+
139
+ Required Gems
140
+ </a>
141
+
142
+
143
+ </li>
144
+
145
+
146
+ </ul>
147
+
148
+ </li>
149
+
150
+ <li class="chapter " data-level="1" data-path="module_0x1__basic_ruby_kung_fu/index.html">
151
+
152
+
153
+ <a href="../module_0x1__basic_ruby_kung_fu/index.html">
154
+
155
+ <i class="fa fa-check"></i>
156
+
157
+ <b>1.</b>
158
+
159
+ Module 0x1 | Basic Ruby Kung Fu
160
+ </a>
161
+
162
+
163
+ <ul class="articles">
164
+
165
+
166
+ <li class="chapter " data-level="1.1" data-path="module_0x1__basic_ruby_kung_fu/string.html">
167
+
168
+
169
+ <a href="../module_0x1__basic_ruby_kung_fu/string.html">
170
+
171
+ <i class="fa fa-check"></i>
172
+
173
+ <b>1.1.</b>
174
+
175
+ String
176
+ </a>
177
+
178
+
179
+ <ul class="articles">
180
+
181
+
182
+ <li class="chapter " data-level="1.1.1" data-path="module_0x1__basic_ruby_kung_fu/conversion.html">
183
+
184
+
185
+ <a href="../module_0x1__basic_ruby_kung_fu/conversion.html">
186
+
187
+ <i class="fa fa-check"></i>
188
+
189
+ <b>1.1.1.</b>
190
+
191
+ Conversion
192
+ </a>
193
+
194
+
195
+ </li>
196
+
197
+ <li class="chapter " data-level="1.1.2" data-path="module_0x1__basic_ruby_kung_fu/extraction.html">
198
+
199
+
200
+ <a href="../module_0x1__basic_ruby_kung_fu/extraction.html">
201
+
202
+ <i class="fa fa-check"></i>
203
+
204
+ <b>1.1.2.</b>
205
+
206
+ Extraction
207
+ </a>
208
+
209
+
210
+ </li>
211
+
212
+
213
+ </ul>
214
+
215
+ </li>
216
+
217
+ <li class="chapter " data-level="1.2" data-path="module_0x1__basic_ruby_kung_fu/array.html">
218
+
219
+
220
+ <a href="../module_0x1__basic_ruby_kung_fu/array.html">
221
+
222
+ <i class="fa fa-check"></i>
223
+
224
+ <b>1.2.</b>
225
+
226
+ Array
227
+ </a>
228
+
229
+
230
+ </li>
231
+
232
+
233
+ </ul>
234
+
235
+ </li>
236
+
237
+ <li class="chapter " data-level="2" data-path="module_0x2__system_kung_fu/index.html">
238
+
239
+
240
+ <a href="../module_0x2__system_kung_fu/index.html">
241
+
242
+ <i class="fa fa-check"></i>
243
+
244
+ <b>2.</b>
245
+
246
+ Module 0x2 | System Kung Fu
247
+ </a>
248
+
249
+
250
+ <ul class="articles">
251
+
252
+
253
+ <li class="chapter " data-level="2.1" data-path="module_0x2__system_kung_fu/command_execution.html">
254
+
255
+
256
+ <a href="../module_0x2__system_kung_fu/command_execution.html">
257
+
258
+ <i class="fa fa-check"></i>
259
+
260
+ <b>2.1.</b>
261
+
262
+ Command Execution
263
+ </a>
264
+
265
+
266
+ </li>
267
+
268
+ <li class="chapter " data-level="2.2" data-path="module_0x2__system_kung_fu/file_manipulation.html">
269
+
270
+
271
+ <a href="../module_0x2__system_kung_fu/file_manipulation.html">
272
+
273
+ <i class="fa fa-check"></i>
274
+
275
+ <b>2.2.</b>
276
+
277
+ File manipulation
278
+ </a>
279
+
280
+
281
+ <ul class="articles">
282
+
283
+
284
+ <li class="chapter " data-level="2.2.1" data-path="module_0x2__system_kung_fu/parsing_html,_xml,_json.html">
285
+
286
+
287
+ <a href="../module_0x2__system_kung_fu/parsing_html,_xml,_json.html">
288
+
289
+ <i class="fa fa-check"></i>
290
+
291
+ <b>2.2.1.</b>
292
+
293
+ Parsing HTML, XML, JSON
294
+ </a>
295
+
296
+
297
+ </li>
298
+
299
+
300
+ </ul>
301
+
302
+ </li>
303
+
304
+ <li class="chapter " data-level="2.3" data-path="module_0x2__system_kung_fu/cryptography.html">
305
+
306
+
307
+ <a href="../module_0x2__system_kung_fu/cryptography.html">
308
+
309
+ <i class="fa fa-check"></i>
310
+
311
+ <b>2.3.</b>
312
+
313
+ Cryptography
314
+ </a>
315
+
316
+
317
+ </li>
318
+
319
+ <li class="chapter " data-level="2.4" data-path="module_0x2__system_kung_fu/system_shell.html">
320
+
321
+
322
+ <a href="../module_0x2__system_kung_fu/system_shell.html">
323
+
324
+ <i class="fa fa-check"></i>
325
+
326
+ <b>2.4.</b>
327
+
328
+ Remote Shell
329
+ </a>
330
+
331
+
332
+ <ul class="articles">
333
+
334
+
335
+ <li class="chapter " data-level="2.4.1" data-path="module_0x2__system_kung_fu/ncatrb.html">
336
+
337
+
338
+ <a href="../module_0x2__system_kung_fu/ncatrb.html">
339
+
340
+ <i class="fa fa-check"></i>
341
+
342
+ <b>2.4.1.</b>
343
+
344
+ Ncat.rb
345
+ </a>
346
+
347
+
348
+ </li>
349
+
350
+ <li class="chapter " data-level="2.4.2" data-path="module_0x2__system_kung_fu/rce_as_a_service.html">
351
+
352
+
353
+ <a href="../module_0x2__system_kung_fu/rce_as_a_service.html">
354
+
355
+ <i class="fa fa-check"></i>
356
+
357
+ <b>2.4.2.</b>
358
+
359
+ RCE as a Service
360
+ </a>
361
+
362
+
363
+ </li>
364
+
365
+
366
+ </ul>
367
+
368
+ </li>
369
+
370
+ <li class="chapter " data-level="2.5" data-path="module_0x2__system_kung_fu/virustotal.html">
371
+
372
+
373
+ <a href="../module_0x2__system_kung_fu/virustotal.html">
374
+
375
+ <i class="fa fa-check"></i>
376
+
377
+ <b>2.5.</b>
378
+
379
+ VirusTotal
380
+ </a>
381
+
382
+
383
+ </li>
384
+
385
+
386
+ </ul>
387
+
388
+ </li>
389
+
390
+ <li class="chapter " data-level="3" data-path="module_0x3__network_kung_fu/index.html">
391
+
392
+
393
+ <a href="../module_0x3__network_kung_fu/index.html">
394
+
395
+ <i class="fa fa-check"></i>
396
+
397
+ <b>3.</b>
398
+
399
+ Module 0x3 | Network Kung Fu
400
+ </a>
401
+
402
+
403
+ <ul class="articles">
404
+
405
+
406
+ <li class="chapter active" data-level="3.1" data-path="module_0x3__network_kung_fu/ruby_socket.html">
407
+
408
+
409
+ <a href="../module_0x3__network_kung_fu/ruby_socket.html">
410
+
411
+ <i class="fa fa-check"></i>
412
+
413
+ <b>3.1.</b>
414
+
415
+ Ruby Socket
416
+ </a>
417
+
418
+
419
+ </li>
420
+
421
+ <li class="chapter " data-level="3.2" data-path="module_0x3__network_kung_fu/ssid_finder.html">
422
+
423
+
424
+ <a href="../module_0x3__network_kung_fu/ssid_finder.html">
425
+
426
+ <i class="fa fa-check"></i>
427
+
428
+ <b>3.2.</b>
429
+
430
+ SSID Finder
431
+ </a>
432
+
433
+
434
+ </li>
435
+
436
+ <li class="chapter " data-level="3.3" data-path="module_0x3__network_kung_fu/ftp.html">
437
+
438
+
439
+ <a href="../module_0x3__network_kung_fu/ftp.html">
440
+
441
+ <i class="fa fa-check"></i>
442
+
443
+ <b>3.3.</b>
444
+
445
+ FTP
446
+ </a>
447
+
448
+
449
+ </li>
450
+
451
+ <li class="chapter " data-level="3.4" data-path="module_0x3__network_kung_fu/ssh.html">
452
+
453
+
454
+ <a href="../module_0x3__network_kung_fu/ssh.html">
455
+
456
+ <i class="fa fa-check"></i>
457
+
458
+ <b>3.4.</b>
459
+
460
+ SSH
461
+ </a>
462
+
463
+
464
+ </li>
465
+
466
+ <li class="chapter " data-level="3.5" data-path="module_0x2__system_kung_fu/email.html">
467
+
468
+
469
+ <a href="../module_0x2__system_kung_fu/email.html">
470
+
471
+ <i class="fa fa-check"></i>
472
+
473
+ <b>3.5.</b>
474
+
475
+ Email
476
+ </a>
477
+
478
+
479
+ <ul class="articles">
480
+
481
+
482
+ <li class="chapter " data-level="3.5.1" data-path="module_0x2__system_kung_fu/smtp_enumeration.html">
483
+
484
+
485
+ <a href="../module_0x2__system_kung_fu/smtp_enumeration.html">
486
+
487
+ <i class="fa fa-check"></i>
488
+
489
+ <b>3.5.1.</b>
490
+
491
+ SMTP Enumeration
492
+ </a>
493
+
494
+
495
+ </li>
496
+
497
+
498
+ </ul>
499
+
500
+ </li>
501
+
502
+ <li class="chapter " data-level="3.6" data-path="module_0x3__network_kung_fu/network_scanning.html">
503
+
504
+
505
+ <a href="../module_0x3__network_kung_fu/network_scanning.html">
506
+
507
+ <i class="fa fa-check"></i>
508
+
509
+ <b>3.6.</b>
510
+
511
+ Network Scanning
512
+ </a>
513
+
514
+
515
+ <ul class="articles">
516
+
517
+
518
+ <li class="chapter " data-level="3.6.1" data-path="module_0x3__network_kung_fu/nmap.html">
519
+
520
+
521
+ <a href="../module_0x3__network_kung_fu/nmap.html">
522
+
523
+ <i class="fa fa-check"></i>
524
+
525
+ <b>3.6.1.</b>
526
+
527
+ Nmap
528
+ </a>
529
+
530
+
531
+ </li>
532
+
533
+
534
+ </ul>
535
+
536
+ </li>
537
+
538
+ <li class="chapter " data-level="3.7" data-path="module_0x3__network_kung_fu/dns.html">
539
+
540
+
541
+ <a href="../module_0x3__network_kung_fu/dns.html">
542
+
543
+ <i class="fa fa-check"></i>
544
+
545
+ <b>3.7.</b>
546
+
547
+ DNS
548
+ </a>
549
+
550
+
551
+ <ul class="articles">
552
+
553
+
554
+ <li class="chapter " data-level="3.7.1" data-path="module_0x3__network_kung_fu/dns_enumeration.html">
555
+
556
+
557
+ <a href="../module_0x3__network_kung_fu/dns_enumeration.html">
558
+
559
+ <i class="fa fa-check"></i>
560
+
561
+ <b>3.7.1.</b>
562
+
563
+ DNS Enumeration
564
+ </a>
565
+
566
+
567
+ </li>
568
+
569
+
570
+ </ul>
571
+
572
+ </li>
573
+
574
+ <li class="chapter " data-level="3.8" data-path="module_0x3__network_kung_fu/snmp_enumeration.html">
575
+
576
+
577
+ <a href="../module_0x3__network_kung_fu/snmp_enumeration.html">
578
+
579
+ <i class="fa fa-check"></i>
580
+
581
+ <b>3.8.</b>
582
+
583
+ SNMP Enumeration
584
+ </a>
585
+
586
+
587
+ </li>
588
+
589
+ <li class="chapter " data-level="3.9" data-path="module_0x3__network_kung_fu/tns_enumeration.html">
590
+
591
+
592
+ <a href="../module_0x3__network_kung_fu/tns_enumeration.html">
593
+
594
+ <i class="fa fa-check"></i>
595
+
596
+ <b>3.9.</b>
597
+
598
+ Oracle TNS Enumeration
599
+ </a>
600
+
601
+
602
+ </li>
603
+
604
+ <li class="chapter " data-level="3.10" data-path="module_0x3__network_kung_fu/packet_manipulation.html">
605
+
606
+
607
+ <a href="../module_0x3__network_kung_fu/packet_manipulation.html">
608
+
609
+ <i class="fa fa-check"></i>
610
+
611
+ <b>3.10.</b>
612
+
613
+ Packet manipulation
614
+ </a>
615
+
616
+
617
+ <ul class="articles">
618
+
619
+
620
+ <li class="chapter " data-level="3.10.1" data-path="module_0x3__network_kung_fu/arp_spoofing.html">
621
+
622
+
623
+ <a href="../module_0x3__network_kung_fu/arp_spoofing.html">
624
+
625
+ <i class="fa fa-check"></i>
626
+
627
+ <b>3.10.1.</b>
628
+
629
+ ARP Spoofing
630
+ </a>
631
+
632
+
633
+ </li>
634
+
635
+ <li class="chapter " data-level="3.10.2" data-path="module_0x3__network_kung_fu/dns_spoofing.html">
636
+
637
+
638
+ <a href="../module_0x3__network_kung_fu/dns_spoofing.html">
639
+
640
+ <i class="fa fa-check"></i>
641
+
642
+ <b>3.10.2.</b>
643
+
644
+ DNS Spoofing
645
+ </a>
646
+
647
+
648
+ </li>
649
+
650
+
651
+ </ul>
652
+
653
+ </li>
654
+
655
+
656
+ </ul>
657
+
658
+ </li>
659
+
660
+ <li class="chapter " data-level="4" data-path="module_0x4__web_kung_fu/index.html">
661
+
662
+
663
+ <a href="../module_0x4__web_kung_fu/index.html">
664
+
665
+ <i class="fa fa-check"></i>
666
+
667
+ <b>4.</b>
668
+
669
+ Module 0x4 | Web Kung Fu
670
+ </a>
671
+
672
+
673
+ <ul class="articles">
674
+
675
+
676
+ <li class="chapter " data-level="4.1" data-path="module_0x4__web_kung_fu/sql_injection_scanner.html">
677
+
678
+
679
+ <a href="../module_0x4__web_kung_fu/sql_injection_scanner.html">
680
+
681
+ <i class="fa fa-check"></i>
682
+
683
+ <b>4.1.</b>
684
+
685
+ SQL Injection Scanner
686
+ </a>
687
+
688
+
689
+ </li>
690
+
691
+ <li class="chapter " data-level="4.2" data-path="module_0x4__web_kung_fu/databases.html">
692
+
693
+
694
+ <a href="../module_0x4__web_kung_fu/databases.html">
695
+
696
+ <i class="fa fa-check"></i>
697
+
698
+ <b>4.2.</b>
699
+
700
+ Databases
701
+ </a>
702
+
703
+
704
+ </li>
705
+
706
+ <li class="chapter " data-level="4.3" data-path="module_0x4__web_kung_fu/extending_burpsuite.html">
707
+
708
+
709
+ <a href="../module_0x4__web_kung_fu/extending_burpsuite.html">
710
+
711
+ <i class="fa fa-check"></i>
712
+
713
+ <b>4.3.</b>
714
+
715
+ Extending Burp Suite
716
+ </a>
717
+
718
+
719
+ </li>
720
+
721
+ <li class="chapter " data-level="4.4" data-path="module_0x4__web_kung_fu/browser_manipulation.html">
722
+
723
+
724
+ <a href="../module_0x4__web_kung_fu/browser_manipulation.html">
725
+
726
+ <i class="fa fa-check"></i>
727
+
728
+ <b>4.4.</b>
729
+
730
+ Browser Manipulation
731
+ </a>
732
+
733
+
734
+ </li>
735
+
736
+ <li class="chapter " data-level="4.5" data-path="module_0x4__web_kung_fu/web_servcies_and_apis.html">
737
+
738
+
739
+ <a href="../module_0x4__web_kung_fu/web_servcies_and_apis.html">
740
+
741
+ <i class="fa fa-check"></i>
742
+
743
+ <b>4.5.</b>
744
+
745
+ Web Services and APIs
746
+ </a>
747
+
748
+
749
+ <ul class="articles">
750
+
751
+
752
+ <li class="chapter " data-level="4.5.1" data-path="module_0x4__web_kung_fu/web_services.html">
753
+
754
+
755
+ <a href="../module_0x4__web_kung_fu/web_services.html">
756
+
757
+ <i class="fa fa-check"></i>
758
+
759
+ <b>4.5.1.</b>
760
+
761
+ Interacting with Web Services
762
+ </a>
763
+
764
+
765
+ </li>
766
+
767
+ <li class="chapter " data-level="4.5.2" data-path="module_0x4__web_kung_fu/interacting_with_apis.html">
768
+
769
+
770
+ <a href="../module_0x4__web_kung_fu/interacting_with_apis.html">
771
+
772
+ <i class="fa fa-check"></i>
773
+
774
+ <b>4.5.2.</b>
775
+
776
+ Interacting with APIs
777
+ </a>
778
+
779
+
780
+ <ul class="articles">
781
+
782
+
783
+ <li class="chapter " data-level="4.5.2.1" data-path="module_0x4__web_kung_fu/wordpress_api.html">
784
+
785
+
786
+ <a href="../module_0x4__web_kung_fu/wordpress_api.html">
787
+
788
+ <i class="fa fa-check"></i>
789
+
790
+ <b>4.5.2.1.</b>
791
+
792
+ WordPress API
793
+ </a>
794
+
795
+
796
+ </li>
797
+
798
+ <li class="chapter " data-level="4.5.2.2" data-path="module_0x4__web_kung_fu/twitter_api.html">
799
+
800
+
801
+ <a href="../module_0x4__web_kung_fu/twitter_api.html">
802
+
803
+ <i class="fa fa-check"></i>
804
+
805
+ <b>4.5.2.2.</b>
806
+
807
+ Twitter API
808
+ </a>
809
+
810
+
811
+ </li>
812
+
813
+
814
+ </ul>
815
+
816
+ </li>
817
+
818
+
819
+ </ul>
820
+
821
+ </li>
822
+
823
+ <li class="chapter " data-level="4.6" data-path="module_0x4__web_kung_fu/ruby2javascript.html">
824
+
825
+
826
+ <a href="../module_0x4__web_kung_fu/ruby2javascript.html">
827
+
828
+ <i class="fa fa-check"></i>
829
+
830
+ <b>4.6.</b>
831
+
832
+ Ruby 2 JavaScript
833
+ </a>
834
+
835
+
836
+ </li>
837
+
838
+ <li class="chapter " data-level="4.7" data-path="module_0x4__web_kung_fu/web_server_and_proxy.html">
839
+
840
+
841
+ <a href="../module_0x4__web_kung_fu/web_server_and_proxy.html">
842
+
843
+ <i class="fa fa-check"></i>
844
+
845
+ <b>4.7.</b>
846
+
847
+ Web Server and Proxy
848
+ </a>
849
+
850
+
851
+ </li>
852
+
853
+
854
+ </ul>
855
+
856
+ </li>
857
+
858
+ <li class="chapter " data-level="5" data-path="module_0x5__exploitation_kung_fu/index.html">
859
+
860
+
861
+ <a href="../module_0x5__exploitation_kung_fu/index.html">
862
+
863
+ <i class="fa fa-check"></i>
864
+
865
+ <b>5.</b>
866
+
867
+ Module 0x5 | Exploitation Kung Fu
868
+ </a>
869
+
870
+
871
+ <ul class="articles">
872
+
873
+
874
+ <li class="chapter " data-level="5.1" data-path="module_0x5__exploitation_kung_fu/fuzzer.html">
875
+
876
+
877
+ <a href="../module_0x5__exploitation_kung_fu/fuzzer.html">
878
+
879
+ <i class="fa fa-check"></i>
880
+
881
+ <b>5.1.</b>
882
+
883
+ Fuzzer
884
+ </a>
885
+
886
+
887
+ </li>
888
+
889
+ <li class="chapter " data-level="5.2" data-path="module_0x5__exploitation_kung_fu/metasploit.html">
890
+
891
+
892
+ <a href="../module_0x5__exploitation_kung_fu/metasploit.html">
893
+
894
+ <i class="fa fa-check"></i>
895
+
896
+ <b>5.2.</b>
897
+
898
+ Metasploit
899
+ </a>
900
+
901
+
902
+ <ul class="articles">
903
+
904
+
905
+ <li class="chapter " data-level="5.2.1" data-path="module_0x5__exploitation_kung_fu/auxiliary_module.html">
906
+
907
+
908
+ <a href="../module_0x5__exploitation_kung_fu/auxiliary_module.html">
909
+
910
+ <i class="fa fa-check"></i>
911
+
912
+ <b>5.2.1.</b>
913
+
914
+ Auxiliary module
915
+ </a>
916
+
917
+
918
+ </li>
919
+
920
+ <li class="chapter " data-level="5.2.2" data-path="module_0x5__exploitation_kung_fu/exploit_module.html">
921
+
922
+
923
+ <a href="../module_0x5__exploitation_kung_fu/exploit_module.html">
924
+
925
+ <i class="fa fa-check"></i>
926
+
927
+ <b>5.2.2.</b>
928
+
929
+ Exploit module
930
+ </a>
931
+
932
+
933
+ </li>
934
+
935
+ <li class="chapter " data-level="5.2.3" data-path="module_0x5__exploitation_kung_fu/meterpreter.html">
936
+
937
+
938
+ <a href="../module_0x5__exploitation_kung_fu/meterpreter.html">
939
+
940
+ <i class="fa fa-check"></i>
941
+
942
+ <b>5.2.3.</b>
943
+
944
+ Meterpreter
945
+ </a>
946
+
947
+
948
+ <ul class="articles">
949
+
950
+
951
+ <li class="chapter " data-level="5.2.3.1" data-path="module_0x5__exploitation_kung_fu/extensions.html">
952
+
953
+
954
+ <a href="../module_0x5__exploitation_kung_fu/extensions.html">
955
+
956
+ <i class="fa fa-check"></i>
957
+
958
+ <b>5.2.3.1.</b>
959
+
960
+ API and Extensions
961
+ </a>
962
+
963
+
964
+ </li>
965
+
966
+ <li class="chapter " data-level="5.2.3.2" data-path="module_0x5__exploitation_kung_fu/meterpreter_scripting.html">
967
+
968
+
969
+ <a href="../module_0x5__exploitation_kung_fu/meterpreter_scripting.html">
970
+
971
+ <i class="fa fa-check"></i>
972
+
973
+ <b>5.2.3.2.</b>
974
+
975
+ Meterpreter Scripting
976
+ </a>
977
+
978
+
979
+ </li>
980
+
981
+ <li class="chapter " data-level="5.2.3.3" data-path="module_0x5__exploitation_kung_fu/railgun_api_extension.html">
982
+
983
+
984
+ <a href="../module_0x5__exploitation_kung_fu/railgun_api_extension.html">
985
+
986
+ <i class="fa fa-check"></i>
987
+
988
+ <b>5.2.3.3.</b>
989
+
990
+ Railgun API Extension
991
+ </a>
992
+
993
+
994
+ </li>
995
+
996
+
997
+ </ul>
998
+
999
+ </li>
1000
+
1001
+
1002
+ </ul>
1003
+
1004
+ </li>
1005
+
1006
+ <li class="chapter " data-level="5.3" data-path="module_0x5__exploitation_kung_fu/metasm.html">
1007
+
1008
+
1009
+ <a href="../module_0x5__exploitation_kung_fu/metasm.html">
1010
+
1011
+ <i class="fa fa-check"></i>
1012
+
1013
+ <b>5.3.</b>
1014
+
1015
+ metasm
1016
+ </a>
1017
+
1018
+
1019
+ </li>
1020
+
1021
+
1022
+ </ul>
1023
+
1024
+ </li>
1025
+
1026
+ <li class="chapter " data-level="6" data-path="module_0x6__forensic/index.html">
1027
+
1028
+
1029
+ <a href="../module_0x6__forensic/index.html">
1030
+
1031
+ <i class="fa fa-check"></i>
1032
+
1033
+ <b>6.</b>
1034
+
1035
+ Module 0x6 | Forensic Kung Fu
1036
+ </a>
1037
+
1038
+
1039
+ <ul class="articles">
1040
+
1041
+
1042
+ <li class="chapter " data-level="6.1" data-path="module_0x6__forensic/windows_forensic.html">
1043
+
1044
+
1045
+ <a href="../module_0x6__forensic/windows_forensic.html">
1046
+
1047
+ <i class="fa fa-check"></i>
1048
+
1049
+ <b>6.1.</b>
1050
+
1051
+ Windows Forensic
1052
+ </a>
1053
+
1054
+
1055
+ </li>
1056
+
1057
+ <li class="chapter " data-level="6.2" data-path="module_0x6__forensic/android_forensic.html">
1058
+
1059
+
1060
+ <a href="../module_0x6__forensic/android_forensic.html">
1061
+
1062
+ <i class="fa fa-check"></i>
1063
+
1064
+ <b>6.2.</b>
1065
+
1066
+ Android Forensic
1067
+ </a>
1068
+
1069
+
1070
+ </li>
1071
+
1072
+ <li class="chapter " data-level="6.3" data-path="module_0x3__network_kung_fu/network_traffic_analysis.html">
1073
+
1074
+
1075
+ <a href="../module_0x3__network_kung_fu/network_traffic_analysis.html">
1076
+
1077
+ <i class="fa fa-check"></i>
1078
+
1079
+ <b>6.3.</b>
1080
+
1081
+ Network Traffic Analysis
1082
+ </a>
1083
+
1084
+
1085
+ </li>
1086
+
1087
+ <li class="chapter " data-level="6.4" data-path="module_0x6__forensic/parsing_log_files.html">
1088
+
1089
+
1090
+ <a href="../module_0x6__forensic/parsing_log_files.html">
1091
+
1092
+ <i class="fa fa-check"></i>
1093
+
1094
+ <b>6.4.</b>
1095
+
1096
+ Parsing Log Files
1097
+ </a>
1098
+
1099
+
1100
+ </li>
1101
+
1102
+
1103
+ </ul>
1104
+
1105
+ </li>
1106
+
1107
+ <li class="chapter " data-level="7" data-path="references/index.html">
1108
+
1109
+
1110
+ <a href="../references/index.html">
1111
+
1112
+ <i class="fa fa-check"></i>
1113
+
1114
+ <b>7.</b>
1115
+
1116
+ References
1117
+ </a>
1118
+
1119
+
1120
+ </li>
1121
+
1122
+ <li class="chapter " data-level="8" data-path="faqs/index.html">
1123
+
1124
+
1125
+ <a href="../faqs/index.html">
1126
+
1127
+ <i class="fa fa-check"></i>
1128
+
1129
+ <b>8.</b>
1130
+
1131
+ FAQs
1132
+ </a>
1133
+
1134
+
1135
+ </li>
1136
+
1137
+ <li class="chapter " data-level="9" data-path="contributors/index.html">
1138
+
1139
+
1140
+ <a href="../contributors/index.html">
1141
+
1142
+ <i class="fa fa-check"></i>
1143
+
1144
+ <b>9.</b>
1145
+
1146
+ Contributors
1147
+ </a>
1148
+
1149
+
1150
+ <ul class="articles">
1151
+
1152
+
1153
+ <li class="chapter " data-level="9.1" data-path="contributors/todo.html">
1154
+
1155
+
1156
+ <a href="../contributors/todo.html">
1157
+
1158
+ <i class="fa fa-check"></i>
1159
+
1160
+ <b>9.1.</b>
1161
+
1162
+ TODO
1163
+ </a>
1164
+
1165
+
1166
+ </li>
1167
+
1168
+
1169
+ </ul>
1170
+
1171
+ </li>
1172
+
1173
+
1174
+
1175
+
1176
+ <li class="divider"></li>
1177
+ <li>
1178
+ <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
1179
+ Published with GitBook
1180
+ </a>
1181
+ </li>
1182
+
1183
+ </ul>
1184
+ </nav>
1185
+ </div>
1186
+
1187
+ <div class="book-body">
1188
+ <div class="body-inner">
1189
+ <div class="book-header" role="navigation">
1190
+ <!-- Actions Left -->
1191
+
1192
+
1193
+ <!-- Title -->
1194
+ <h1>
1195
+ <i class="fa fa-circle-o-notch fa-spin"></i>
1196
+ <a href="../" >RubyFu</a>
1197
+ </h1>
1198
+ </div>
1199
+
1200
+ <div class="page-wrapper" tabindex="-1" role="main">
1201
+ <div class="page-inner">
1202
+
1203
+
1204
+ <section class="normal" id="section-">
1205
+
1206
+ <h1 id="ruby-socket"><a name="ruby-socket" class="plugin-anchor" href="#ruby-socket"><span class="fa fa-link"></span></a>Ruby Socket</h1>
1207
+ <h2 id="lightweight-introduction"><a name="lightweight-introduction" class="plugin-anchor" href="#lightweight-introduction"><span class="fa fa-link"></span></a>Lightweight Introduction</h2>
1208
+ <h3 id="ruby-socket-class-hierarchy"><a name="ruby-socket-class-hierarchy" class="plugin-anchor" href="#ruby-socket-class-hierarchy"><span class="fa fa-link"></span></a>Ruby Socket Class Hierarchy</h3>
1209
+ <p>To know the socket hierarchy in ruby here a simple tree explains it.</p>
1210
+ <pre><code>IO # The basis for all input and output in Ruby
1211
+ &#x2514;&#x2500;&#x2500; BasicSocket # Abstract base class for all socket classes
1212
+ &#x251C;&#x2500;&#x2500; IPSocket # Super class for protocols using the Internet Protocol (AF_INET)
1213
+ &#x2502; &#x251C;&#x2500;&#x2500; TCPSocket # Class for Transmission Control Protocol (TCP) sockets
1214
+ &#x2502; &#x2502; &#x251C;&#x2500;&#x2500; SOCKSSocket # Helper class for building TCP socket servers applications
1215
+ &#x2502; &#x2502; &#x2514;&#x2500;&#x2500; TCPServer # Helper class for building TCP socket servers
1216
+ &#x2502; &#x2514;&#x2500;&#x2500; UDPSocket # Class for User Datagram Protocol (UDP) sockets
1217
+ &#x251C;&#x2500;&#x2500; Socket # Base socket class that mimics that BSD Sockets API. It provides more operating system specific functionality
1218
+ &#x2514;&#x2500;&#x2500; UNIXSocket # Class providing IPC using the UNIX domain protocol (AF_UNIX)
1219
+ &#x2514;&#x2500;&#x2500; UNIXServer # Helper class for building UNIX domain protocol socket servers
1220
+ </code></pre><p>I&apos;ll verbosely mention some of <code>Socket::Constants</code> here since I didn&apos;t find an obvious reference listing it except <a href="http://media.pragprog.com/titles/ruby3/app_socket.pdf" target="_blank">Programming Ruby1.9 <em>The Pragmatic Programmers&apos; Guide</em></a>; Otherwise you&apos;ve to <code>ri Socket::Constants</code> from command line which is a good way to get the description of each constant.</p>
1221
+ <h3 id="socket-types"><a name="socket-types" class="plugin-anchor" href="#socket-types"><span class="fa fa-link"></span></a>Socket Types</h3>
1222
+ <ul>
1223
+ <li>SOCK_RAW</li>
1224
+ <li>SOCK_PACKET</li>
1225
+ <li>SOCK_STREAM</li>
1226
+ <li>SOCK_DRAM</li>
1227
+ <li>SOCK_RDM</li>
1228
+ <li>SOCK_SEQPACKET</li>
1229
+ </ul>
1230
+ <h3 id="address-familiessocket-domains"><a name="address-familiessocket-domains" class="plugin-anchor" href="#address-familiessocket-domains"><span class="fa fa-link"></span></a>Address Families(Socket Domains)</h3>
1231
+ <ul>
1232
+ <li>AF_APPLETALK</li>
1233
+ <li>AF_ATM</li>
1234
+ <li>AF_AX25</li>
1235
+ <li>AF_CCITT</li>
1236
+ <li>AF_CHAOS</li>
1237
+ <li>AF_CNT</li>
1238
+ <li>AF_COIP</li>
1239
+ <li>AF_DATAKIT</li>
1240
+ <li>AF_DEC</li>
1241
+ <li>AF_DLI</li>
1242
+ <li>AF_E164</li>
1243
+ <li>AF_ECMA</li>
1244
+ <li>AF_HYLINK</li>
1245
+ <li>AF_IMPLINK</li>
1246
+ <li>AF_INET(IPv4) </li>
1247
+ <li>AF_INET6(IPv6)</li>
1248
+ <li>AF_IPX</li>
1249
+ <li>AF_ISDN</li>
1250
+ <li>AF_ISO</li>
1251
+ <li>AF_LAT</li>
1252
+ <li>AF_LINK</li>
1253
+ <li>AF_LOCAL(UNIX)</li>
1254
+ <li>AF_MAX</li>
1255
+ <li>AF_NATM</li>
1256
+ <li>AF_NDRV</li>
1257
+ <li>AF_NETBIOS</li>
1258
+ <li>AF_NETGRAPH</li>
1259
+ <li>AF_NS</li>
1260
+ <li>AF_OSI</li>
1261
+ <li>AF_PACKET</li>
1262
+ <li>AF_PPP</li>
1263
+ <li>AF_PUP</li>
1264
+ <li>AF_ROUTE</li>
1265
+ <li>AF_SIP</li>
1266
+ <li>AF_SNA</li>
1267
+ <li>AF_SYSTEM</li>
1268
+ <li>AF_UNIX</li>
1269
+ <li>AF_UNSPEC</li>
1270
+ </ul>
1271
+ <h3 id="socket-protocol"><a name="socket-protocol" class="plugin-anchor" href="#socket-protocol"><span class="fa fa-link"></span></a>Socket Protocol</h3>
1272
+ <ul>
1273
+ <li>IPPROTO_SCTP</li>
1274
+ <li>IPPROTO_TCP</li>
1275
+ <li>IPPROTO_UDP</li>
1276
+ </ul>
1277
+ <h3 id="protocol-families"><a name="protocol-families" class="plugin-anchor" href="#protocol-families"><span class="fa fa-link"></span></a>Protocol Families</h3>
1278
+ <ul>
1279
+ <li>PF_APPLETALK</li>
1280
+ <li>PF_ATM</li>
1281
+ <li>PF_AX25</li>
1282
+ <li>PF_CCITT</li>
1283
+ <li>PF_CHAOS</li>
1284
+ <li>PF_CNT</li>
1285
+ <li>PF_COIP</li>
1286
+ <li>PF_DATAKIT</li>
1287
+ <li>PF_DEC</li>
1288
+ <li>PF_DLI</li>
1289
+ <li>PF_ECMA</li>
1290
+ <li>PF_HYLINK</li>
1291
+ <li>PF_IMPLINK</li>
1292
+ <li>PF_INET</li>
1293
+ <li>PF_INET6</li>
1294
+ <li>PF_IPX</li>
1295
+ <li>PF_ISDN</li>
1296
+ <li>PF_ISO</li>
1297
+ <li>PF_KEY</li>
1298
+ <li>PF_LAT</li>
1299
+ <li>PF_LINK</li>
1300
+ <li>PF_LOCAL</li>
1301
+ <li>PF_MAX</li>
1302
+ <li>PF_NATM</li>
1303
+ <li>PF_NDRV</li>
1304
+ <li>PF_NETBIOS</li>
1305
+ <li>PF_NETGRAPH</li>
1306
+ <li>PF_NS</li>
1307
+ <li>PF_OSI</li>
1308
+ <li>PF_PACKET</li>
1309
+ <li>PF_PIP</li>
1310
+ <li>PF_PPP</li>
1311
+ <li>PF_PUP</li>
1312
+ <li>PF_ROUTE</li>
1313
+ <li>PF_RTIP</li>
1314
+ <li>PF_SIP</li>
1315
+ <li>PF_SNA</li>
1316
+ <li>PF_SYSTEM</li>
1317
+ <li>PF_UNIX</li>
1318
+ <li>PF_UNSPEC</li>
1319
+ <li>PF_XTP</li>
1320
+ </ul>
1321
+ <h3 id="socket-options"><a name="socket-options" class="plugin-anchor" href="#socket-options"><span class="fa fa-link"></span></a>Socket options</h3>
1322
+ <ul>
1323
+ <li>SO_ACCEPTCONN</li>
1324
+ <li>SO_ACCEPTFILTER</li>
1325
+ <li>SO_ALLZONES</li>
1326
+ <li>SO_ATTACH_FILTER</li>
1327
+ <li>SO_BINDTODEVICE</li>
1328
+ <li>SO_BINTIME</li>
1329
+ <li>SO_BROADCAST</li>
1330
+ <li>SO_DEBUG</li>
1331
+ <li>SO_DETACH_FILTER</li>
1332
+ <li>SO_DONTROUTE</li>
1333
+ <li>SO_DONTTRUNC</li>
1334
+ <li>SO_ERROR</li>
1335
+ <li>SO_KEEPALIVE</li>
1336
+ <li>SO_LINGER</li>
1337
+ <li>SO_MAC_EXEMPT</li>
1338
+ <li>SO_NKE</li>
1339
+ <li>SO_NOSIGPIPE</li>
1340
+ <li>SO_NO_CHECK</li>
1341
+ <li>SO_NREAD</li>
1342
+ <li>SO_OOBINLINE</li>
1343
+ <li>SO_PASSCRED</li>
1344
+ <li>SO_PEERCRED</li>
1345
+ <li>SO_PEERNAME</li>
1346
+ <li>SO_PRIORITY</li>
1347
+ <li>SO_RCVBUF</li>
1348
+ <li>SO_RCVLOWAT</li>
1349
+ <li>SO_RCVTIMEO</li>
1350
+ <li>SO_RECVUCRED</li>
1351
+ <li>SO_REUSEADDR</li>
1352
+ <li>SO_REUSEPORT</li>
1353
+ <li>SO_SECURITY_AUTHENTICATION</li>
1354
+ <li>SO_SECURITY_ENCRYPTION_NETWORK</li>
1355
+ <li>SO_SECURITY_ENCRYPTION_TRANSPORT</li>
1356
+ <li>SO_SNDBUF</li>
1357
+ <li>SO_SNDLOWAT</li>
1358
+ <li>SO_SNDTIMEO</li>
1359
+ <li>SO_TIMESTAMP</li>
1360
+ <li>SO_TIMESTAMPNS</li>
1361
+ <li>SO_TYPE</li>
1362
+ <li>SO_USELOOPBACK</li>
1363
+ <li>SO_WANTMORE</li>
1364
+ <li>SO_WANTOOBFLAG</li>
1365
+ </ul>
1366
+ <h2 id="creating-socket-template"><a name="creating-socket-template" class="plugin-anchor" href="#creating-socket-template"><span class="fa fa-link"></span></a>Creating Socket Template</h2>
1367
+ <pre><code class="lang-ruby"><span class="hljs-constant">Socket</span>.new(domain, socktype [, protocol])
1368
+ </code></pre>
1369
+ <p><strong>domain(Address/Protocol Families):</strong> like AF_INET, PF_PACKET, etc</p>
1370
+ <p><strong>socktype:</strong> like SOCK_RAW, SOCK_STREAM</p>
1371
+ <p><strong>protocol: </strong> by default, it&apos;s <code>0</code>m it should be a protocol defined (we&apos;ll manipulate that later)</p>
1372
+ <h2 id="tcp-socket"><a name="tcp-socket" class="plugin-anchor" href="#tcp-socket"><span class="fa fa-link"></span></a>TCP Socket</h2>
1373
+ <p><strong>Server/Client life cycle </strong></p>
1374
+ <pre><code> Client Server
1375
+ | |
1376
+ socket + + socket
1377
+ | |
1378
+ connect +--------, + bind
1379
+ | | |
1380
+ write ,--&gt; +------, | + listen
1381
+ | | | | |
1382
+ read `----+ &lt;--, | `-&gt; + accept
1383
+ | | | |
1384
+ close +--, | `----&gt; + &lt;--, read &lt;--,
1385
+ | | | | |
1386
+ | `--------+----&apos; write &#x668;
1387
+ | |
1388
+ `-----&gt;------&gt;-------&gt;----`
1389
+ </code></pre><h3 id="general-socket-usage"><a name="general-socket-usage" class="plugin-anchor" href="#general-socket-usage"><span class="fa fa-link"></span></a>General Socket usage</h3>
1390
+ <h4 id="get-list-of-local-ipaddreses"><a name="get-list-of-local-ipaddreses" class="plugin-anchor" href="#get-list-of-local-ipaddreses"><span class="fa fa-link"></span></a>Get List of local IPaddreses</h4>
1391
+ <pre><code class="lang-ruby"><span class="hljs-keyword">require</span> <span class="hljs-string">&apos;socket&apos;</span>
1392
+ <span class="hljs-constant">Socket</span>.ip_address_list
1393
+ </code></pre>
1394
+ <h4 id="get-hostname"><a name="get-hostname" class="plugin-anchor" href="#get-hostname"><span class="fa fa-link"></span></a>Get Hostname</h4>
1395
+ <pre><code class="lang-ruby"><span class="hljs-constant">Socket</span>.gethostname
1396
+ </code></pre>
1397
+ <h3 id="tcp-server"><a name="tcp-server" class="plugin-anchor" href="#tcp-server"><span class="fa fa-link"></span></a>TCP Server</h3>
1398
+ <p>Here we&apos;ll represent an absolute TCP server. This server will access connect from one client and send a message to it once connected then close the client and server connection </p>
1399
+ <pre><code class="lang-ruby"><span class="hljs-keyword">require</span> <span class="hljs-string">&apos;socket&apos;</span>
1400
+
1401
+ server = <span class="hljs-constant">TCPServer</span>.new(<span class="hljs-string">&apos;0.0.0.0&apos;</span>, <span class="hljs-number">9911</span>) <span class="hljs-comment"># Server, binds/listens all interfaces on port 9911</span>
1402
+ client = server.accept <span class="hljs-comment"># Wait for client to connect</span>
1403
+ rhost = client.peeraddr.last <span class="hljs-comment"># peeraddr, returns remote [address_family, port, hostname, numeric_address(ip)]</span>
1404
+ client.puts <span class="hljs-string">&quot;Hi TCP Client! <span class="hljs-subst">#{rhost}</span>&quot;</span> <span class="hljs-comment"># Send a message to the client once it connect</span>
1405
+ client.gets.chomp <span class="hljs-comment"># Read incoming message from client</span>
1406
+ client.close <span class="hljs-comment"># Close the client&apos;s connection</span>
1407
+ server.close <span class="hljs-comment"># Close the TCP Server</span>
1408
+ </code></pre>
1409
+ <h3 id="tcp-client"><a name="tcp-client" class="plugin-anchor" href="#tcp-client"><span class="fa fa-link"></span></a>TCP Client</h3>
1410
+ <pre><code class="lang-ruby"><span class="hljs-keyword">require</span> <span class="hljs-string">&apos;socket&apos;</span>
1411
+
1412
+ client = <span class="hljs-constant">TCPSocket</span>.new(<span class="hljs-string">&apos;127.0.0.1&apos;</span>, <span class="hljs-number">9911</span>) <span class="hljs-comment"># Client, connects to server on port 9911</span>
1413
+ rhost = client.peeraddr.last <span class="hljs-comment"># Get the remote server&apos;s IP address </span>
1414
+ client.gets.chomp
1415
+ client.puts <span class="hljs-string">&quot;Hi, TCP Server <span class="hljs-subst">#{rhost}</span>&quot;</span>
1416
+ client.close
1417
+ </code></pre>
1418
+ <p>You can put timeout/time interval for current connection in-case the server&apos;s response get delayed and the socket is still open.</p>
1419
+ <pre><code class="lang-ruby">timeval = [<span class="hljs-number">3</span>, <span class="hljs-number">0</span>].pack(<span class="hljs-string">&quot;l_2&quot;</span>) <span class="hljs-comment"># Time interval 3 seconds </span>
1420
+ client.setsockopt <span class="hljs-constant">Socket::SOL_SOCKET</span>, <span class="hljs-constant">Socket::SO_RCVTIMEO</span>, timeval <span class="hljs-comment"># Set socket receiving time interval </span>
1421
+ client.setsockopt <span class="hljs-constant">Socket::SOL_SOCKET</span>, <span class="hljs-constant">Socket::SO_SNDTIMEO</span>, timeval <span class="hljs-comment"># Set socket sending time interval</span>
1422
+ client.getsockopt(<span class="hljs-constant">Socket::SOL_SOCKET</span>, <span class="hljs-constant">Socket::SO_RCVTIMEO</span>).inspect <span class="hljs-comment"># Optional, Check if socket option has been set</span>
1423
+ client.getsockopt(<span class="hljs-constant">Socket::SOL_SOCKET</span>, <span class="hljs-constant">Socket::SO_SNDTIMEO</span>).inspect <span class="hljs-comment"># Optional, Check if socket option has been set</span>
1424
+ </code></pre>
1425
+ <p>There are some alternatives for <code>puts</code> and <code>gets</code> methods.You can see the difference and its classes using method method in Pry interpreter console</p>
1426
+ <pre><code class="lang-ruby"><span class="hljs-prompt">&gt;&gt;</span> s = <span class="hljs-constant">TCPSocket</span>.new(<span class="hljs-string">&apos;0.0.0.0&apos;</span>, <span class="hljs-number">9911</span>)
1427
+ <span class="hljs-status">=&gt;</span> <span class="hljs-value">#&lt;TCPSocket:fd 11&gt;</span>
1428
+ <span class="hljs-prompt">&gt;&gt;</span> s.method <span class="hljs-symbol">:puts</span>
1429
+ <span class="hljs-status">=&gt;</span> <span class="hljs-value">#&lt;Method: TCPSocket(IO)#puts&gt;</span>
1430
+ <span class="hljs-prompt">&gt;&gt;</span> s.method <span class="hljs-symbol">:write</span>
1431
+ <span class="hljs-status">=&gt;</span> <span class="hljs-value">#&lt;Method: TCPSocket(IO)#write&gt;</span>
1432
+ <span class="hljs-prompt">&gt;&gt;</span> s.method <span class="hljs-symbol">:send</span>
1433
+ <span class="hljs-status">=&gt;</span> <span class="hljs-value">#&lt;Method: TCPSocket(BasicSocket)#send&gt;</span>
1434
+ </code></pre>
1435
+ <pre><code class="lang-ruby"><span class="hljs-prompt">&gt;&gt;</span> s = <span class="hljs-constant">TCPSocket</span>.new(<span class="hljs-string">&apos;0.0.0.0&apos;</span>, <span class="hljs-number">9911</span>)
1436
+ <span class="hljs-status">=&gt;</span> <span class="hljs-value">#&lt;TCPSocket:fd 11&gt;</span>
1437
+ <span class="hljs-prompt">&gt;&gt;</span> s.method <span class="hljs-symbol">:gets</span>
1438
+ <span class="hljs-status">=&gt;</span> <span class="hljs-value">#&lt;Method: TCPSocket(IO)#gets&gt;</span>
1439
+ <span class="hljs-prompt">&gt;&gt;</span> s.method <span class="hljs-symbol">:read</span>
1440
+ <span class="hljs-status">=&gt;</span> <span class="hljs-value">#&lt;Method: TCPSocket(IO)#read&gt;</span>
1441
+ <span class="hljs-prompt">&gt;&gt;</span> s.method <span class="hljs-symbol">:recv</span>
1442
+ <span class="hljs-status">=&gt;</span> <span class="hljs-value">#&lt;Method: TCPSocket(BasicSocket)#recv&gt;</span>
1443
+ </code></pre>
1444
+ <h2 id="udp-socket"><a name="udp-socket" class="plugin-anchor" href="#udp-socket"><span class="fa fa-link"></span></a>UDP Socket</h2>
1445
+ <h3 id="udp-server"><a name="udp-server" class="plugin-anchor" href="#udp-server"><span class="fa fa-link"></span></a>UDP Server</h3>
1446
+ <pre><code class="lang-ruby"><span class="hljs-keyword">require</span> <span class="hljs-string">&apos;socket&apos;</span>
1447
+
1448
+ server = <span class="hljs-constant">UDPSocket</span>.new <span class="hljs-comment"># Start UDP socket</span>
1449
+ server.bind(<span class="hljs-string">&apos;0.0.0.0&apos;</span>, <span class="hljs-number">9911</span>) <span class="hljs-comment"># Bind all interfaces to port 9911</span>
1450
+ mesg, addr = server.recvfrom(<span class="hljs-number">1024</span>) <span class="hljs-comment"># Receive 1024 bytes of the message and the sender IP</span>
1451
+ server puts <span class="hljs-string">&quot;Hi, UDP Client <span class="hljs-subst">#{addr}</span>&quot;</span>, addr[<span class="hljs-number">3</span>], addr[<span class="hljs-number">1</span>] <span class="hljs-comment"># Send a message to the client </span>
1452
+ server.recv(<span class="hljs-number">1024</span>) <span class="hljs-comment"># Receive 1024 bytes of the message</span>
1453
+ </code></pre>
1454
+ <h3 id="udp-client"><a name="udp-client" class="plugin-anchor" href="#udp-client"><span class="fa fa-link"></span></a>UDP Client</h3>
1455
+ <pre><code class="lang-ruby"><span class="hljs-keyword">require</span> <span class="hljs-string">&apos;socket&apos;</span>
1456
+ client = <span class="hljs-constant">UDPSocket</span>.new
1457
+ client.connect(<span class="hljs-string">&apos;localhost&apos;</span>, <span class="hljs-number">9911</span>) <span class="hljs-comment"># Connect to server on port 991</span>
1458
+ client.puts <span class="hljs-string">&quot;Hi, UDP Server!&quot;</span>, <span class="hljs-number">0</span> <span class="hljs-comment"># Send message </span>
1459
+ server.recv(<span class="hljs-number">1024</span>) <span class="hljs-comment"># Receive 1024 bytes of the server message</span>
1460
+ </code></pre>
1461
+ <p>There alternative for sending and receiving too, figure it out, <a href="http://ruby-doc.org/stdlib-2.0.0/libdoc/socket/rdoc/UDPSocket.html" target="_blank">RubyDoc</a>.</p>
1462
+ <h2 id="gserver"><a name="gserver" class="plugin-anchor" href="#gserver"><span class="fa fa-link"></span></a>GServer</h2>
1463
+ <p>GServer standard library implements a generic server, featuring thread pool management, simple logging, and multi-server management. Any kind of application-level server can be implemented using this class:</p>
1464
+ <ul>
1465
+ <li>It accepts multiple simultaneous connections from clients</li>
1466
+ <li>Several services (i.e. one service per TCP port)<ul>
1467
+ <li>can be run simultaneously, </li>
1468
+ <li>can be stopped at any time through the class method <code>GServer.stop(port)</code></li>
1469
+ </ul>
1470
+ </li>
1471
+ <li>All the threading issues are handled</li>
1472
+ <li>All events are optionally logged</li>
1473
+ </ul>
1474
+ <ul>
1475
+ <li>Very basic GServer</li>
1476
+ </ul>
1477
+ <pre><code class="lang-ruby"><span class="hljs-keyword">require</span> <span class="hljs-string">&apos;gserver&apos;</span>
1478
+
1479
+ <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">HelloServer</span> <span class="hljs-inheritance">&lt; <span class="hljs-parent">GServer</span></span> <span class="hljs-comment"># Inherit GServer class</span></span>
1480
+ <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">serve</span><span class="hljs-params">(io)</span></span>
1481
+ io.puts(<span class="hljs-string">&quot;What&apos;s your name?&quot;</span>)
1482
+ line = io.gets.chomp
1483
+ io.puts <span class="hljs-string">&quot;Hi, <span class="hljs-subst">#{line}</span>!&quot;</span>
1484
+ <span class="hljs-keyword">self</span>.stop <span class="hljs-keyword">if</span> io.gets =~ <span class="hljs-regexp">/shutdown/</span> <span class="hljs-comment"># Stop the server if you get shutdown string</span>
1485
+ <span class="hljs-keyword">end</span>
1486
+ <span class="hljs-keyword">end</span>
1487
+
1488
+ server = <span class="hljs-constant">HelloServer</span>.new(<span class="hljs-number">1234</span>, <span class="hljs-string">&apos;0.0.0.0&apos;</span>) <span class="hljs-comment"># Start the server on port 1234</span>
1489
+ server.audit = <span class="hljs-keyword">true</span> <span class="hljs-comment"># Enable logging</span>
1490
+ server.start <span class="hljs-comment"># Start the service </span>
1491
+ server.join
1492
+ </code></pre>
1493
+ <h2 id=""><a name="" class="plugin-anchor" href="#"><span class="fa fa-link"></span></a><br><br><br></h2>
1494
+
1495
+
1496
+ </section>
1497
+
1498
+
1499
+ </div>
1500
+ </div>
1501
+ </div>
1502
+
1503
+
1504
+ <a href="../module_0x3__network_kung_fu/index.html" class="navigation navigation-prev " aria-label="Previous page: Module 0x3 | Network Kung Fu"><i class="fa fa-angle-left"></i></a>
1505
+
1506
+
1507
+ <a href="../module_0x3__network_kung_fu/ssid_finder.html" class="navigation navigation-next " aria-label="Next page: SSID Finder"><i class="fa fa-angle-right"></i></a>
1508
+
1509
+ </div>
1510
+ </div>
1511
+
1512
+
1513
+ <script src="../gitbook/app.js"></script>
1514
+
1515
+
1516
+ <script src="../gitbook/plugins/gitbook-plugin-splitter/splitter.js"></script>
1517
+
1518
+
1519
+
1520
+ <script src="../gitbook/plugins/gitbook-plugin-book-summary-scroll-position-saver/book-summary-scroll-position-saver.js"></script>
1521
+
1522
+
1523
+
1524
+ <script src="../gitbook/plugins/gitbook-plugin-expandable-chapters/expandable-chapters.js"></script>
1525
+
1526
+
1527
+
1528
+ <script src="../gitbook/plugins/gitbook-plugin-search/lunr.min.js"></script>
1529
+
1530
+
1531
+
1532
+ <script src="../gitbook/plugins/gitbook-plugin-search/search.js"></script>
1533
+
1534
+
1535
+
1536
+ <script src="../gitbook/plugins/gitbook-plugin-sharing/buttons.js"></script>
1537
+
1538
+
1539
+
1540
+ <script src="../gitbook/plugins/gitbook-plugin-fontsettings/buttons.js"></script>
1541
+
1542
+
1543
+ <script>
1544
+ require(["gitbook"], function(gitbook) {
1545
+ var config = {"addcssjs":{"js":["styles/header.js"]},"anchors":{},"todo":{},"splitter":{},"book-summary-scroll-position-saver":{},"expandable-chapters":{},"highlight":{},"search":{"maxIndexSize":1000000},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2}};
1546
+ gitbook.start(config);
1547
+ });
1548
+ </script>
1549
+
1550
+
1551
+ </body>
1552
+
1553
+ </html>