Advertisement
opsftw

Subnet Calculator

Aug 11th, 2013
389
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. @echo off
  2. @mode con cols=85 lines=27
  3. TITLE Batch Subnet Calculator - Green Hat aka Zacky
  4. ::::::::::::::::::::::::::::::::::::
  5. ::::A subnet calculator in batch::::
  6. ::::::::::::::::::::::::::::::::::::
  7. :::::::::Author: Green Hat::::::::::
  8. ::::::::::::::::::::::::::::::::::::
  9.  
  10.  
  11. color 02
  12. :TOP
  13. cls
  14. call :header
  15. echo              X  .  X  .  X  .  X                     255  .  X  .  X  .  X
  16. call :line
  17. echo Welcome to the sunet calculator. First you will be prompted for the octets of the IP
  18. echo then you will be prompted for the octets of the Subnet Mask. And no,it wont let you
  19. echo enter in illegal octet addresses.
  20. echo.
  21. pause > NUL
  22.  
  23. :ipo1
  24. cls
  25. call :header
  26. echo              X  .  X  .  X  .  X                     255  .  X  .  X  .  X
  27. call :line
  28. Set /P ip_1=IP octet - 1:
  29. if %ip_1% GTR 254 goto ipo1
  30. if %ip_1% LSS 0 goto ipo1
  31.  
  32. :ipo2
  33. cls
  34. call :header
  35. echo             %ip_1% .  X  .  X  .  X                     255  .  X  .  X  .  X
  36. call :line
  37. Set /P ip_2=IP octet - 2:
  38. if %ip_2% GTR 255 goto ipo2
  39. if %ip_2% LSS 0 goto ipo2
  40.  
  41. :ipo3
  42. cls
  43. call :header
  44. echo             %ip_1% . %ip_2% .  X  .  X                     255  .  X  .  X  .  X
  45. call :line
  46. Set /P ip_3=IP octet - 3:
  47. if %ip_3% GTR 255 goto ipo3
  48. if %ip_3% LSS 0 goto ipo3
  49.  
  50. :ipo4
  51. cls
  52. call :header
  53. echo             %ip_1% . %ip_2% . %ip_3% .  X                     255  .  X  .  X  .  X
  54. call :line
  55. Set /P ip_4=IP octet - 4:
  56. if %ip_4% GTR 255 goto ipo4
  57. if %ip_4% LSS 0 goto ipo4
  58.  
  59. cls
  60. call :header
  61. echo             %ip_1% . %ip_2% . %ip_3% . %ip_4%                    255  .  X  .  X  .  X
  62. call :line
  63. echo Got the ip now, all we need is the subnet Mask. Be sure ot to forget the interesting
  64. echo octet! So obviously the first octet is 255 so we will begin with the next octet...
  65. echo.
  66. pause > NUL
  67.  
  68. :smo2
  69. cls
  70. call :header
  71. echo             %ip_1% . %ip_2% . %ip_3% . %ip_4%                    255  .  X  .  X  .  X
  72. call :line
  73. Set /P sm_2=Subnet Mask - octet 2:
  74. if %sm_2% GTR 255 goto smo2
  75. if %sm_2% LSS 0 goto ipo2
  76. if %sm_2% LSS 255 goto sm2
  77. goto sm2o
  78. :sm2
  79. set /a sm_3 = 0
  80. set /a sm_4 = 0
  81. goto fuck
  82. :sm2o
  83.  
  84. :smo3
  85. cls
  86. call :header
  87. echo             %ip_1% . %ip_2% . %ip_3% . %ip_4%                   255  . %sm_2% .  X  .  X
  88. call :line
  89. Set /P sm_3=Subnet Mask - octet 3:
  90. if %sm_3% GTR 255 goto smo3
  91. if %sm_3% LSS 0 goto ipo3
  92. if %sm_3% LSS 255 goto sm3
  93. goto sm3o
  94. :sm3
  95. set /a sm_4 = 0
  96. goto fuck
  97. :sm3o
  98.  
  99. :smo4
  100. cls
  101. call :header
  102. echo             %ip_1% . %ip_2% . %ip_3% . %ip_4%                   255  . %sm_2% . %sm_3% .  X
  103. call :line
  104. Set /P sm_4=Subnet Mask - octet 4:
  105. if %sm_4% GTR 255 goto smo4
  106. if %sm_4% LSS 0 goto smo4
  107.  
  108. cls
  109.  
  110. :fuck
  111.  
  112. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  113. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  114. ::Now for the math shit [fuck me]
  115.  
  116. ::Find the class
  117. if %ip_1% LSS 255 set class=E
  118. if %ip_1% LSS 248 set class=D
  119. if %ip_1% LSS 240 set class=C
  120. if %ip_1% LSS 192 set class=B
  121. if %ip_1% LSS 128 set class=A
  122.  
  123.  
  124. ::Finding the iteresting octet
  125. if not %sm_4% == 0 set /a io = %sm_4%
  126. if not %sm_4% == 0 set /a ion = 4
  127. if not %sm_4% == 0 goto cio
  128. if not %sm_3% == 0 set /a io = %sm_3%
  129. if not %sm_3% == 0 set /a ion = 3
  130. if not %sm_3% == 0 goto cio
  131. if not %sm_2% == 0 set /a io = %sm_2%
  132. if not %sm_2% == 0 set /a ion = 2
  133. if not %sm_2% == 0 goto cio
  134. :cio
  135.  
  136. ::multiply by #
  137. if %io% == 128 set /a mb = 128
  138. if %io% == 192 set /a mb = 64
  139. if %io% == 224 set /a mb = 32
  140. if %io% == 240 set /a mb = 16
  141. if %io% == 248 set /a mb = 8
  142. if %io% == 252 set /a mb = 4
  143. if %io% == 254 set /a mb = 2
  144. if %io% == 255 set /a mb = 1
  145.  
  146. ::current subnet
  147. if %ion% == 4 set /a ipn = %ip_4%
  148. if %ion% == 3 set /a ipn = %ip_3%
  149. if %ion% == 2 set /a ipn = %ip_2%
  150.  
  151. cls
  152. ::ID
  153. set /a fid = %ipn% / %mb%
  154. set /a sid = %fid% * %mb%
  155. set /a sidp = %sid% + %mb% - 1
  156. set /a sidpo = %sid% + 1
  157.  
  158. ::max numbr of subnets
  159. set /a mns = 256 / %mb%
  160.  
  161. ::hosts per subet
  162. ::128
  163. if %io% == 128 goto hp-128-%ion%
  164. goto hp-128-out
  165. :hp-128-4
  166. set /a hps = 128
  167. goto hp-128-out
  168. :hp-128-3
  169. set /a hps = 32768
  170. goto hp-128-out
  171. :hp-128-2
  172. set /a hps = 8388608
  173. goto hp-128-out
  174. :hp-128-out
  175. ::192
  176. if %io% == 192 goto hp-192-%ion%
  177. goto hp-192-out
  178. :hp-192-4
  179. set /a hps = 64
  180. goto hp-192-outx
  181. :hp-192-3
  182. set /a hps = 16384
  183. goto hp-192-out
  184. :hp-192-2
  185. set /a hps = 4194304
  186. goto hp-192-out
  187. :hp-192-out
  188. ::224
  189. if %io% == 224 goto hp-224-%ion%
  190. goto hp-224-out
  191. :hp-224-4
  192. set /a hps = 32
  193. goto hp-224-out
  194. :hp-224-3
  195. set /a hps = 8192
  196. goto hp-224-out
  197. :hp-224-2
  198. set /a hps = 2097152
  199. goto hp-224-out
  200. :hp-224-out
  201. ::240
  202. if %io% == 240 goto hp-240-%ion%
  203. goto hp-240-out
  204. :hp-240-4
  205. set /a hps = 16
  206. goto hp-240-out
  207. :hp-240-3
  208. set /a hps = 4096
  209. goto hp-240-out
  210. :hp-240-2
  211. set /a hps = 1048576
  212. goto hp-240-out
  213. :hp-240-out
  214. ::248
  215. if %io% == 248 goto hp-248-%ion%
  216. goto hp-248-out
  217. :hp-248-4
  218. set /a hps = 8
  219. goto hp-248-out
  220. :hp-248-3
  221. set /a hps = 2048
  222. goto hp-248-out
  223. :hp-248-2
  224. set /a hps = 524288
  225. goto hp-248-out
  226. :hp-248-out
  227. ::252
  228. if %io% == 252 goto hp-252-%ion%
  229. goto hp-252-out
  230. :hp-252-4
  231. set /a hps = 4
  232. goto hp-252-out
  233. :hp-252-3
  234. set /a hps = 1024
  235. goto hp-252-out
  236. :hp-252-2
  237. set /a hps = 262144
  238. goto hp-252-out
  239. :hp-252-out
  240. ::254
  241. if %io% == 254 goto hp-254-%ion%
  242. goto hp-254-out
  243. :hp-254-4
  244. set /a hps = 2
  245. goto hp-254-out
  246. :hp-254-3
  247. set /a hps = 512
  248. goto hp-254-out
  249. :hp-254-2
  250. set /a hps = 131072
  251. goto hp-254-out
  252. :hp-254-out
  253. ::255
  254. if %io% == 255 goto hp-255-%ion%
  255. goto hp-255-out
  256. :hp-255-4
  257. set /a hps = 1
  258. goto hp-255-out
  259. :hp-255-3
  260. set /a hps = 256
  261. goto hp-255-out
  262. :hp-255-2
  263. set /a hps = 65536
  264. goto hp-255-out
  265. :hp-255-out
  266.  
  267. cls
  268. @mode con cols=85 lines=40
  269. call :header
  270. echo             %ip_1% . %ip_2% . %ip_3% . %ip_4%                   255  . %sm_2% . %sm_3% . %sm_4%
  271. call :line
  272. echo Class:                        %class%
  273. echo SN Interesting Octet:         %io%
  274. echo Hosts per subnet:             %hps%
  275. echo Number of possile subnets:    %mns%
  276. echo.
  277. echo                        SUBNET SPECIFIC TO SPECIFIED IP ADDRESS
  278. echo ____________________________________________________________________________________
  279. call :SubnetID %sid%
  280. call :BrodcastID %sid%
  281. call :FirstIP %sid%
  282. call :LastIP %sid%
  283. echo.
  284. echo                                  FIRST SUBNET IN RANGE
  285. echo ____________________________________________________________________________________
  286. call :SubnetID 0
  287. call :BrodcastID 0
  288. call :FirstIP 0
  289. call :LastIP 0
  290. pause > NUL
  291. @mode con cols=85 lines=27
  292. goto top
  293.  
  294. ::Functions
  295. :header
  296. echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
  297. echo º #####           #                                     ###                        º
  298. echo º #   #   #   #   #       #   #    ###    #            #   #           #      ###  º
  299. echo º ##      #   #   #       ##  #   #   # #####         #         ###    #     #   # º
  300. echo º   ##    #   #   #####   # # #   #####   #     ###   #        #   #   #    #      º
  301. echo º #   #   #   #   #   #   #  ##   #       #            #   #   #   #   #     #   # º
  302. echo º #####   #####   #####   #   #    ###     ##           ###     ### #   ###   ###  º
  303. echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
  304. echo.
  305. echo           ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»              ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
  306. echo           º       IP ADDRESS       º              º       Subnet Mask      º
  307. echo           ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ              ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
  308. goto eof
  309.  
  310. :line
  311. echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
  312. goto eof
  313.  
  314. :SubnetID
  315. if %ion% == 4 echo Subnet ID:                    %ip_1% . %ip_2% . %ip_3% . %~1
  316. if %ion% == 3 echo Subnet ID:                    %ip_1% . %ip_2% . %~1 . 0
  317. if %ion% == 2 echo Subnet ID:                    %ip_1% . %~1 . 0 . 0
  318. goto eof
  319.  
  320. :BrodcastID
  321. set /a sidp = %~1 + %mb% - 1
  322. if %ion% == 4 echo Brodcast ID:                  %ip_1% . %ip_2% . %ip_3% . %sidp%
  323. if %ion% == 3 echo Brodcast ID:                  %ip_1% . %ip_2% . %sidp% . 255
  324. if %ion% == 2 echo Brodcast ID:                  %ip_1% . %sidp% . 255 . 255
  325. ::%sidp% ???
  326. goto eof
  327.  
  328. :FirstIP
  329. if %ion% == 4 echo First Uesable IP:             %ip_1% . %ip_2% . %ip_3% . %~1
  330. if %ion% == 3 echo First Uesable IP:             %ip_1% . %ip_2% . %~1 . 1
  331. if %ion% == 2 echo First Uesable IP:             %ip_1% . %~1 . 0 . 1
  332. goto eof
  333.  
  334. :LastIP
  335. set /a sidp = %~1 + %mb% - 1
  336. if %ion% == 4 echo Last Useable IP:              %ip_1% . %ip_2% . %ip_3% . %sidp%
  337. if %ion% == 3 echo Last Useable IP:              %ip_1% . %ip_2% . %sidp% . 254
  338. if %ion% == 2 echo Last Useable IP:              %ip_1% . %sidp% . 255 . 254
  339. goto eof
  340.  
  341. :eof
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement