PageRenderTime 55ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/test/unit/core/filter/tc_base.rb

http://beef.googlecode.com/
Ruby | 340 lines | 272 code | 47 blank | 21 comment | 0 complexity | 5a9ec535bd6a656c932f746475a83368 MD5 | raw file
  1. #
  2. # Copyright 2011 Wade Alcorn wade@bindshell.net
  3. #
  4. # Licensed under the Apache License, Version 2.0 (the "License");
  5. # you may not use this file except in compliance with the License.
  6. # You may obtain a copy of the License at
  7. #
  8. # http://www.apache.org/licenses/LICENSE-2.0
  9. #
  10. # Unless required by applicable law or agreed to in writing, software
  11. # distributed under the License is distributed on an "AS IS" BASIS,
  12. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. # See the License for the specific language governing permissions and
  14. # limitations under the License.
  15. #
  16. require 'test/unit'
  17. require 'webrick'
  18. require '../../core/filters/base'
  19. class TC_Filter < Test::Unit::TestCase
  20. def test_is_non_empty_string
  21. assert((not BeEF::Filters::is_non_empty_string?(nil)), 'Nil string')
  22. assert((not BeEF::Filters::is_non_empty_string?(1)), 'Is integer')
  23. assert((not BeEF::Filters::is_non_empty_string?("")), 'Empty string')
  24. assert((BeEF::Filters::is_non_empty_string?("\x00")), 'Single null')
  25. assert((BeEF::Filters::is_non_empty_string?("0")), 'First char is a num')
  26. assert((BeEF::Filters::is_non_empty_string?("A")), 'First char is a alpha')
  27. assert(BeEF::Filters::is_non_empty_string?("3333"), '4 num chars')
  28. assert((BeEF::Filters::is_non_empty_string?("A3333")), '4 num chars begining with an aplha')
  29. assert((BeEF::Filters::is_non_empty_string?("\x003333")), '4 num chars begining with a null')
  30. end
  31. def test_only
  32. assert((BeEF::Filters::only?('A', 'A')), 'A - A -> success')
  33. assert((not BeEF::Filters::only?('A', 'B')), 'A - B -> fail')
  34. end
  35. def test_exists
  36. assert((BeEF::Filters::exists?('A', 'A')), 'A - A -> success')
  37. assert((not BeEF::Filters::exists?('A', 'B')), 'A - B -> fail')
  38. end
  39. def test_has_null
  40. assert((not BeEF::Filters::has_null?(nil)), 'Nil')
  41. assert((not BeEF::Filters::has_null?("")), 'Empty string')
  42. assert((not BeEF::Filters::has_null?("\x01")), '0x01 string')
  43. assert((not BeEF::Filters::has_null?("\xFF")), '0xFF string')
  44. assert((not BeEF::Filters::has_null?("A")), 'Single char')
  45. assert((not BeEF::Filters::has_null?("A3333")), '4 num chars begining with an aplha')
  46. assert((not BeEF::Filters::has_null?("0")), '0 string')
  47. assert((not BeEF::Filters::has_null?("}")), '} char')
  48. assert((not BeEF::Filters::has_null?(".")), '. char')
  49. assert((not BeEF::Filters::has_null?("+")), '+ char')
  50. assert((not BeEF::Filters::has_null?("-")), '- char')
  51. assert((not BeEF::Filters::has_null?("-1")), '-1 string')
  52. assert((not BeEF::Filters::has_null?("0.A")), '0.A string')
  53. assert((not BeEF::Filters::has_null?("3333")), '33 33 string')
  54. assert((not BeEF::Filters::has_null?("33 33")), '33 33 string')
  55. assert((not BeEF::Filters::has_null?(" AAAAAAAA")), 'white space at start of string')
  56. assert((not BeEF::Filters::has_null?("AAAAAAAA ")), 'white space at end of string')
  57. (1..255).each {|c|
  58. str = ''
  59. str.concat(c)
  60. assert(!(BeEF::Filters::has_null?(str)), 'loop of around every char')
  61. }
  62. assert((BeEF::Filters::has_null?("\x00")), 'Single null')
  63. assert((BeEF::Filters::has_null?("A\x00")), 'Char and null')
  64. assert((BeEF::Filters::has_null?("AAAAAAAA\x00")), 'Char and null')
  65. assert((BeEF::Filters::has_null?("\x00A")), 'Null and char')
  66. assert((BeEF::Filters::has_null?("\x00AAAAAAAAA")), 'Null and chars')
  67. assert((BeEF::Filters::has_null?("A\x00A")), 'Null surrounded by chars')
  68. assert((BeEF::Filters::has_null?("AAAAAAAAA\x00AAAAAAAAA")), 'Null surrounded by chars')
  69. assert((BeEF::Filters::has_null?("A\n\r\x00")), 'new line and carriage return at start of string')
  70. assert((BeEF::Filters::has_null?("\x00\n\rA")), 'new line and carriage return at end of string')
  71. assert((BeEF::Filters::has_null?("A\n\r\x00\n\rA")), 'new line and carriage return at start and end of string')
  72. assert((BeEF::Filters::has_null?("\tA\x00A")), 'tab at start of string')
  73. (1..255).each {|c|
  74. str = ''
  75. str.concat(c)
  76. str += "\x00"
  77. assert((BeEF::Filters::has_null?(str)), 'loop of behind every char')
  78. }
  79. (1..255).each {|c|
  80. str = ''
  81. str += "\x00"
  82. str.concat(c)
  83. assert((BeEF::Filters::has_null?(str)), 'loop of infront every char')
  84. }
  85. (1..255).each {|c|
  86. str = ''
  87. str.concat(c)
  88. str += "\x00"
  89. str.concat(c)
  90. assert((BeEF::Filters::has_null?(str)), 'loop of around every char')
  91. }
  92. end
  93. def test_has_non_printable_char
  94. assert((not BeEF::Filters::has_non_printable_char?(nil)), 'Nil')
  95. assert((not BeEF::Filters::has_non_printable_char?("")), 'Empty string')
  96. assert((not BeEF::Filters::has_non_printable_char?("A")), 'Single char')
  97. assert((not BeEF::Filters::has_non_printable_char?("A3333")), '4 num chars begining with an aplha')
  98. assert((not BeEF::Filters::has_non_printable_char?("0")), '0 string')
  99. assert((not BeEF::Filters::has_non_printable_char?("}")), '} char')
  100. assert((not BeEF::Filters::has_non_printable_char?(".")), '. char')
  101. assert((not BeEF::Filters::has_non_printable_char?("+")), '+ char')
  102. assert((not BeEF::Filters::has_non_printable_char?("-")), '- char')
  103. assert((not BeEF::Filters::has_non_printable_char?("-1")), '-1 string')
  104. assert((not BeEF::Filters::has_non_printable_char?("0.A")), '0.A string')
  105. assert((not BeEF::Filters::has_non_printable_char?("3333")), '4 num chars')
  106. assert((not BeEF::Filters::has_non_printable_char?(" 0AAAAAAAA")), 'white space at start of string')
  107. assert((not BeEF::Filters::has_non_printable_char?(" 0AAAAAAAA ")), 'white space at end of string')
  108. # check lowercase chars
  109. ('a'..'z').each {|c|
  110. assert((not BeEF::Filters::has_non_printable_char?(c)), 'lowercase chars')
  111. }
  112. # check uppercase chars
  113. ('A'..'Z').each {|c|
  114. assert((not BeEF::Filters::has_non_printable_char?(c)), 'uppercase chars')
  115. }
  116. # check numbers chars
  117. ('0'..'9').each {|c|
  118. assert((not BeEF::Filters::has_non_printable_char?(c)), 'number chars')
  119. }
  120. assert((BeEF::Filters::has_non_printable_char?("\x00")), '0x00 string')
  121. assert((BeEF::Filters::has_non_printable_char?("\x01")), '0x01 string')
  122. assert((BeEF::Filters::has_non_printable_char?("\x02")), '0x02 string')
  123. assert((BeEF::Filters::has_non_printable_char?("\xF0")), '0xFE string')
  124. assert((BeEF::Filters::has_non_printable_char?("\xFE")), '0xFE string')
  125. assert((BeEF::Filters::has_non_printable_char?("\xFF")), '0xFF string')
  126. assert((BeEF::Filters::has_non_printable_char?("A\x03")), 'Single char and non printable char')
  127. assert((BeEF::Filters::has_non_printable_char?("\x04A")), 'Single char and non printable char')
  128. assert((BeEF::Filters::has_non_printable_char?("\x003333")), '4 num chars begining with a null')
  129. assert((BeEF::Filters::has_non_printable_char?("\x00AAAAAAAA")), 'null at start of string')
  130. assert((BeEF::Filters::has_non_printable_char?(" AAAAAAAA\x00")), 'null at end of string')
  131. assert((BeEF::Filters::has_non_printable_char?("\t\x00AAAAAAAA")), 'tab at start of string')
  132. assert((BeEF::Filters::has_non_printable_char?("\n\x00AAAAAAAA")), 'new line at start of string')
  133. assert((BeEF::Filters::has_non_printable_char?("\n\r\x00AAAAAAAA")), 'new line and carriage return at start of string')
  134. assert((BeEF::Filters::has_non_printable_char?("AAAAAAAAA\x00AAAAA")), 'Chars and null')
  135. assert((BeEF::Filters::has_non_printable_char?("\n\x00")), 'newline and null')
  136. (0..255).each {|c|
  137. str = ''
  138. str.concat(c)
  139. str += "\x00"
  140. str.concat(c)
  141. assert((BeEF::Filters::has_non_printable_char?(str)), 'loop of around every char')
  142. }
  143. end
  144. def test_is_nums_only
  145. assert((not BeEF::Filters::nums_only?(nil)), 'Nil string')
  146. assert((not BeEF::Filters::nums_only?(1)), 'Is integer')
  147. assert((not BeEF::Filters::nums_only?("")), 'Empty string')
  148. assert((not BeEF::Filters::nums_only?("A")), 'First char is a alpha')
  149. assert((not BeEF::Filters::nums_only?("A3333")), '4 num chars begining with an aplha')
  150. assert((not BeEF::Filters::nums_only?("\x003333")), '4 num chars begining with a null')
  151. assert((not BeEF::Filters::nums_only?("}")), '} char')
  152. assert((not BeEF::Filters::nums_only?(".")), '. char')
  153. assert((not BeEF::Filters::nums_only?("+")), '+ char')
  154. assert((not BeEF::Filters::nums_only?("-")), '- char')
  155. assert((not BeEF::Filters::nums_only?("-1")), '-1 string')
  156. assert((BeEF::Filters::nums_only?("0")), 'First char is a num')
  157. assert((BeEF::Filters::nums_only?("3333")), '4 num chars')
  158. end
  159. def test_is_valid_float
  160. assert((not BeEF::Filters::is_valid_float?(nil)), 'Nil string')
  161. assert((not BeEF::Filters::is_valid_float?(1)), 'Is integer')
  162. assert((not BeEF::Filters::is_valid_float?("")), 'Empty string')
  163. assert((not BeEF::Filters::is_valid_float?("A")), 'First char is a alpha')
  164. assert((not BeEF::Filters::is_valid_float?("A3333")), '4 num chars begining with an aplha')
  165. assert((not BeEF::Filters::is_valid_float?("\x003333")), '4 num chars begining with a null')
  166. assert((not BeEF::Filters::is_valid_float?("}")), '} char')
  167. assert((not BeEF::Filters::is_valid_float?(".")), '. char')
  168. assert((not BeEF::Filters::is_valid_float?("+")), '+ char')
  169. assert((not BeEF::Filters::is_valid_float?("-")), '- char')
  170. assert((not BeEF::Filters::is_valid_float?("-1")), '-1 string')
  171. assert((not BeEF::Filters::is_valid_float?("0")), 'First char is a num')
  172. assert((not BeEF::Filters::is_valid_float?("3333")), '4 num chars')
  173. assert((not BeEF::Filters::is_valid_float?("0.A")), '0.A string')
  174. assert((BeEF::Filters::is_valid_float?("33.33")), '4 num chars')
  175. assert((BeEF::Filters::is_valid_float?("0.0")), '0.0 string')
  176. assert((BeEF::Filters::is_valid_float?("1.0")), '1.0 string')
  177. assert((BeEF::Filters::is_valid_float?("0.1")), '0.1 string')
  178. assert((BeEF::Filters::is_valid_float?("33.33")), '33.33 string')
  179. end
  180. def test_hexs_only
  181. assert((not BeEF::Filters::hexs_only?(nil)), 'Nil string')
  182. assert((not BeEF::Filters::hexs_only?(1)), 'Is integer')
  183. assert((not BeEF::Filters::hexs_only?("")), 'Empty string')
  184. assert((not BeEF::Filters::hexs_only?("\x003333")), '4 num chars begining with a null')
  185. assert((not BeEF::Filters::hexs_only?("}")), '} char')
  186. assert((not BeEF::Filters::hexs_only?(".")), '. char')
  187. assert((not BeEF::Filters::hexs_only?("+")), '+ char')
  188. assert((not BeEF::Filters::hexs_only?("-")), '- char')
  189. assert((not BeEF::Filters::hexs_only?("-1")), '-1 string')
  190. assert((not BeEF::Filters::hexs_only?("0.A")), '0.A string')
  191. assert((not BeEF::Filters::hexs_only?("33.33")), '4 num chars')
  192. assert((not BeEF::Filters::hexs_only?("0.0")), '0.0 string')
  193. assert((not BeEF::Filters::hexs_only?("1.0")), '1.0 string')
  194. assert((not BeEF::Filters::hexs_only?("0.1")), '0.1 string')
  195. assert((not BeEF::Filters::hexs_only?("33.33")), '33.33 string')
  196. assert((BeEF::Filters::hexs_only?("0123456789ABCDEFabcdef")), '0123456789ABCDEFabcdef string')
  197. assert((BeEF::Filters::hexs_only?("0")), 'First char is a num')
  198. assert((BeEF::Filters::hexs_only?("3333")), '4 num chars')
  199. assert((BeEF::Filters::hexs_only?("A3333")), '4 num chars begining with an aplha')
  200. assert((BeEF::Filters::hexs_only?("A")), 'First char is a alpha')
  201. end
  202. def test_first_char_is_num
  203. assert((not BeEF::Filters::first_char_is_num?("")), 'Empty string')
  204. assert((not BeEF::Filters::first_char_is_num?("A")), 'First char is a alpha')
  205. assert((not BeEF::Filters::first_char_is_num?("A3333")), '4 num chars begining with an aplha')
  206. assert((not BeEF::Filters::first_char_is_num?("\x003333")), '4 num chars begining with a null')
  207. assert((BeEF::Filters::first_char_is_num?("3333")), '4 num chars')
  208. assert((BeEF::Filters::first_char_is_num?("0AAAAAAAA")), '0AAAAAAAA string')
  209. assert((BeEF::Filters::first_char_is_num?("0")), 'First char is a num')
  210. end
  211. def test_has_whitespace_char
  212. assert((not BeEF::Filters::has_whitespace_char?("")), 'Empty string')
  213. assert((not BeEF::Filters::has_whitespace_char?("A")), 'First char is a alpha')
  214. assert((not BeEF::Filters::has_whitespace_char?("A3333")), '4 num chars begining with an aplha')
  215. assert((not BeEF::Filters::has_whitespace_char?("\x003333")), '4 num chars begining with a null')
  216. assert((not BeEF::Filters::has_whitespace_char?("0")), 'First char is a num')
  217. assert((not BeEF::Filters::has_whitespace_char?("}")), '} char')
  218. assert((not BeEF::Filters::has_whitespace_char?(".")), '. char')
  219. assert((not BeEF::Filters::has_whitespace_char?("+")), '+ char')
  220. assert((not BeEF::Filters::has_whitespace_char?("-")), '- char')
  221. assert((not BeEF::Filters::has_whitespace_char?("-1")), '-1 string')
  222. assert((not BeEF::Filters::has_whitespace_char?("0.A")), '0.A string')
  223. assert((BeEF::Filters::has_whitespace_char?("33 33")), '4 num chars')
  224. assert((BeEF::Filters::has_whitespace_char?(" ")), 'white space char only')
  225. assert((BeEF::Filters::has_whitespace_char?(" ")), 'white space chars only')
  226. assert((BeEF::Filters::has_whitespace_char?(" 0AAAAAAAA")), 'white space at start of string')
  227. assert((BeEF::Filters::has_whitespace_char?(" 0AAAAAAAA ")), 'white space at start and end of string')
  228. assert((BeEF::Filters::has_whitespace_char?("\t0AAAAAAAA")), 'white space at start of string')
  229. assert((BeEF::Filters::has_whitespace_char?("\n0AAAAAAAA")), 'white space at start of string')
  230. end
  231. def test_alphanums_only
  232. assert((BeEF::Filters::alphanums_only?("A")), 'Single char')
  233. assert((BeEF::Filters::alphanums_only?("A3333")), '4 num chars begining with an aplha')
  234. assert((BeEF::Filters::alphanums_only?("0")), '0 string')
  235. assert((not BeEF::Filters::alphanums_only?(nil)), 'Nil')
  236. assert((not BeEF::Filters::alphanums_only?("")), 'Empty string')
  237. assert((not BeEF::Filters::alphanums_only?("\n")), '\\n string')
  238. assert((not BeEF::Filters::alphanums_only?("\r")), '\\r string')
  239. assert((not BeEF::Filters::alphanums_only?("\x01")), '0x01 string')
  240. assert((not BeEF::Filters::alphanums_only?("\xFF")), '0xFF string')
  241. assert((not BeEF::Filters::alphanums_only?("}")), '} char')
  242. assert((not BeEF::Filters::alphanums_only?(".")), '. char')
  243. assert((not BeEF::Filters::alphanums_only?("+")), '+ char')
  244. assert((not BeEF::Filters::alphanums_only?("-")), '- char')
  245. assert((not BeEF::Filters::alphanums_only?("-1")), '-1 string')
  246. assert((not BeEF::Filters::alphanums_only?("ee-!@$%^&*}=0.A")), '0.A string')
  247. assert((not BeEF::Filters::alphanums_only?("33 33")), '33 33 string')
  248. assert((not BeEF::Filters::alphanums_only?(" AAAAAAAA")), 'white space at start of string')
  249. assert((not BeEF::Filters::alphanums_only?("AAAAAAAA ")), 'white space at end of string')
  250. # check lowercase chars
  251. ('a'..'z').each {|c|
  252. assert((BeEF::Filters::alphanums_only?(c)), 'lowercase chars')
  253. }
  254. # check uppercase chars
  255. ('A'..'Z').each {|c|
  256. assert((BeEF::Filters::alphanums_only?(c)), 'uppercase chars')
  257. }
  258. # check numbers chars
  259. ('0'..'9').each {|c|
  260. assert((BeEF::Filters::alphanums_only?(c)), 'number chars')
  261. }
  262. assert((not BeEF::Filters::alphanums_only?("\x00")), 'Single null')
  263. assert((not BeEF::Filters::alphanums_only?("A\x00")), 'Char and null')
  264. assert((not BeEF::Filters::alphanums_only?("AAAAAAAA\x00")), 'Char and null')
  265. assert((not BeEF::Filters::alphanums_only?("\x00A")), 'Null and char')
  266. assert((not BeEF::Filters::alphanums_only?("\x00AAAAAAAAA")), 'Null and chars')
  267. assert((not BeEF::Filters::alphanums_only?("A\x00A")), 'Null surrounded by chars')
  268. assert((not BeEF::Filters::alphanums_only?("AAAAAAAAA\x00AAAAAAAAA")), 'Null surrounded by chars')
  269. assert((not BeEF::Filters::alphanums_only?("A\n\r\x00")), 'new line and carriage return at start of string')
  270. assert((not BeEF::Filters::alphanums_only?("\x00\n\rA")), 'new line and carriage return at end of string')
  271. assert((not BeEF::Filters::alphanums_only?("A\n\r\x00\n\rA")), 'new line and carriage return at start and end of string')
  272. assert((not BeEF::Filters::alphanums_only?("\tA\x00A")), 'tab at start of string')
  273. (0..255).each {|c|
  274. str = ''
  275. str.concat(c)
  276. str += "\x00"
  277. assert((not BeEF::Filters::alphanums_only?(str)), 'loop of behind every char')
  278. }
  279. (0..255).each {|c|
  280. str = "\x00"
  281. str.concat(c)
  282. assert((not BeEF::Filters::alphanums_only?(str)), 'loop of behind every char')
  283. }
  284. (0..255).each {|c|
  285. str = ''
  286. str.concat(c)
  287. str += "\x00"
  288. str.concat(c)
  289. assert((not BeEF::Filters::alphanums_only?(str)), 'loop of behind every char')
  290. }
  291. assert((BeEF::Filters::alphanums_only?("3333")), '33 33 string')
  292. end
  293. end