Advertisement
Guest User

Untitled

a guest
May 10th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.00 KB | None | 0 0
  1. import sys
  2. from OpenGL.GL import *
  3. from OpenGL.GLE import *
  4. from OpenGL.GLUT import *
  5. from OpenGL.GLU import *
  6.  
  7. import string
  8. from exceptions import Exception
  9. from threading import Thread
  10. import threading
  11. from time import clock
  12. from math import sin
  13.  
  14. import pcapy
  15. import impacket
  16. from impacket.ImpactDecoder import EthDecoder, LinuxSLLDecoder
  17.  
  18.  
  19. from urllib import *
  20. from string import split, join
  21. import re
  22. import sgmllib
  23. from Tkinter import *
  24.  
  25. import os
  26.  
  27. class Page(Frame):
  28. """Page is the Frame that will be added/removed at will"""
  29. def __init__(self, root, id):
  30. Frame.__init__(self, root)
  31. Label(self, text="Frame %d" % id).pack()
  32.  
  33. class Stripper(sgmllib.SGMLParser):
  34. def __init__(self):
  35. sgmllib.SGMLParser.__init__(self)
  36.  
  37. def strip(self, some_html):
  38. self.theString = ""
  39. self.feed(some_html)
  40. self.close()
  41. return self.theString
  42.  
  43. def handle_data(self, data):
  44. self.theString += data
  45.  
  46.  
  47. class ThreadedNetblockResolver(threading.Thread):
  48. def __init__(self, IP):
  49. #print "resolver init"
  50. self.done = 0
  51. self.IP = IP
  52. self.values = {}
  53. threading.Thread.__init__(self)
  54.  
  55. def run(self):
  56. #print "resolver running for ", self.IP
  57. global IP_NETBLOCK_LIST
  58. try:
  59. temp = IP_NETBLOCK_LIST[self.IP]
  60. #print temp
  61. except KeyError:
  62. #value["cheat_to_prevent_rechecking"] = 1
  63. #IP_NETBLOCK_LIST[self.IP]["cheat_to_prevent_rechecking"] = 1
  64.  
  65. #print "open the url"
  66. file = urlopen('http://ws.arin.net/cgi-bin/whois.pl?queryinput=' + self.IP)
  67. text = file.read()
  68. #close(file)
  69.  
  70. output = re.compile('<pre>(.*?)</pre>', re.DOTALL | re.IGNORECASE).findall(text)
  71.  
  72. for line in split(join(output, "\n"), "\n"):
  73.  
  74. words = split(line, " ")
  75.  
  76. if len(words) > 1 and words[:1] != "#":
  77. key = join(words[:1],"")
  78. #print "Key is: ", key
  79. value = join( words[1:], " ")
  80. stripper = Stripper()
  81. value = stripper.strip(value)
  82. #print "Value is: ", value
  83.  
  84. #some fields I may be interested in later (dns servers) are dupes
  85. #if len(self.values[key]) > 0:
  86. # self.values[key + "2"] = value
  87. #else:
  88. self.values[key] = value
  89.  
  90. # try and pre-calculate the subnet geometry
  91. try:
  92. netrange = join(self.values["NetRange:"],"")
  93. netrange = string.replace(netrange, " ", "")
  94. netrange = string.replace(netrange, "-", " ")
  95. netrange = split(netrange, " ")
  96. start = netrange[0]
  97. end = netrange[1]
  98. start = split(start, ".")
  99. end = split(end, ".")
  100.  
  101.  
  102. self.values["calc_start_1"] = int(start[0])
  103. self.values["calc_start_2"] = int(start[1])
  104. self.values["calc_start_3"] = int(start[2])
  105. self.values["calc_start_4"] = int(start[3])
  106.  
  107. self.values["calc_end_1"] = int(end[0])
  108. self.values["calc_end_2"] = int(end[1])
  109. self.values["calc_end_3"] = int(end[2])
  110. self.values["calc_end_4"] = int(end[3])
  111. except:
  112. pass
  113.  
  114.  
  115.  
  116. IP_NETBLOCK_LIST[self.IP] = self.values
  117. self.done = 1
  118.  
  119.  
  120. def choose_sniffing_interface():
  121. devices = pcapy.findalldevs()
  122.  
  123.  
  124. #
  125. # For whatever reason, the return values from pcapy.findalldevs is garbled funkily. This ungarbles it.
  126. #
  127.  
  128. table = "`1234567890-=~!@#$%^&*()_+qwertyuiop[]\\asdfghjkl;zxcvbnm,./QWERTYUIOP{}|ASDFGHJKL:ZXCVBNM<>? '\""
  129.  
  130. cleandevices = []
  131. queue = ""
  132.  
  133. for dev in devices:
  134. dev = dev.encode('utf-16')
  135.  
  136. for num in range(0,len(dev)):
  137. #print num, dev[num]
  138.  
  139. if string.find(table, dev[num]) == -1:
  140. #print "INVALID ", dev[num]
  141. if len(queue) > 0:
  142. cleandevices.append(queue)
  143. queue = ""
  144.  
  145. else:
  146. queue = queue + dev[num]
  147.  
  148.  
  149.  
  150. done = 0
  151. while not done:
  152.  
  153. print ""
  154. print "Network devices found:"
  155. print "----------------------"
  156. num = 0
  157. for dev in cleandevices:
  158. num = num + 1
  159. print num,dev
  160.  
  161. print ""
  162. choice = raw_input("Please choose a network device: ")
  163. #print "your choice was: ", choice
  164. try:
  165. choice = int(choice) - 1
  166. p = pcapy.open_live( cleandevices[choice], 4096, True, 10000)
  167. p = ""
  168. done = 1
  169. except:
  170. print "That device cannot be opened."
  171.  
  172.  
  173. print ""
  174. print "Beginning Sniff... right-click on cube to change filter."
  175. print ""
  176.  
  177. return cleandevices[choice]
  178.  
  179.  
  180. def color_blue():
  181. glColor3f(0.0, 0.0, 1.0)
  182.  
  183. def color_red():
  184. glColor3f(1.0, 0.0, 0.0)
  185.  
  186. def color_green():
  187. glColor3f(0.0, 1.0, 0.0)
  188.  
  189. def color_magenta():
  190. glColor3f(1.0, 0.0, 1.0)
  191.  
  192. def color_cyan():
  193. glColor3f(0.0, 1.0, 1.0)
  194.  
  195. def color_yellow():
  196. glColor3f(1.0, 1.0, 0.0)
  197.  
  198. def color_white():
  199. glColor3f(1.0, 1.0, 1.0)
  200.  
  201. def color_black():
  202. glColor3f(0.0, 0.0, 0.0)
  203.  
  204. def set_viewpoint():
  205. glLoadIdentity()
  206. glTranslatef(0.0, 0.0, -80.0)
  207.  
  208.  
  209.  
  210. def drawCube(sideA,sideB,sideC):
  211.  
  212. if sideA == 0:
  213. sideA = 1/25.6
  214.  
  215. if sideB == 0:
  216. sideB = 1/25.6
  217.  
  218. if sideC == 0:
  219. sideC = 1/25.6
  220.  
  221. side = 1.0
  222.  
  223. #@@TODO: This needs to seperate color from shape
  224.  
  225.  
  226. glShadeModel(GL_SMOOTH)
  227.  
  228. # draw six faces of a cube
  229. glBegin(GL_QUADS);
  230. glNormal3f( 0.0, 0.0, 1.0)
  231. color_blue()
  232. glTexCoord2f(0.0, 0.0); glVertex3f(-sideA, -sideB, sideC);
  233. glTexCoord2f(side, 0.0); glVertex3f( sideA, -sideB, sideC);
  234. glTexCoord2f(side, side); glVertex3f( sideA, sideB, sideC);
  235. color_white()
  236. glTexCoord2f(0.0, side); glVertex3f(-sideA, sideB, sideC);
  237.  
  238. glNormal3f( 0.0, 0.0,-1.0);
  239. color_blue()
  240. glTexCoord2f(side, 0.0); glVertex3f(-sideA, -sideB, -sideC);
  241. glTexCoord2f(side, side); glVertex3f(-sideA, sideB, -sideC);
  242. glTexCoord2f(0.0, side); glVertex3f( sideA, sideB, -sideC);
  243. color_black()
  244. glTexCoord2f(0.0, 0.0); glVertex3f( sideA, -sideB, -sideC);
  245.  
  246. glNormal3f( 0.0, 1.0, 0.0)
  247. color_blue()
  248. glTexCoord2f(0.0, side); glVertex3f(-sideA, sideB, -sideC);
  249. color_white()
  250. glTexCoord2f(0.0, 0.0); glVertex3f(-sideA, sideB, sideC);
  251. color_blue()
  252. glTexCoord2f(side, 0.0); glVertex3f( sideA, sideB, sideC);
  253. color_blue()
  254. glTexCoord2f(side, side); glVertex3f( sideA, sideB, -sideC);
  255.  
  256. glNormal3f( 0.0,-1.0, 0.0)
  257. color_blue()
  258. glTexCoord2f(side, side); glVertex3f(-sideA, -sideB, -sideC);
  259. color_black()
  260. glTexCoord2f(0.0, side); glVertex3f( sideA, -sideB, -sideC);
  261. color_blue()
  262. glTexCoord2f(0.0, 0.0); glVertex3f( sideA, -sideB, sideC);
  263. color_blue()
  264. glTexCoord2f(side, 0.0); glVertex3f(-sideA, -sideB, sideC);
  265.  
  266. glNormal3f( 1.0 , 0.0, 0.0)
  267. color_black()
  268. glTexCoord2f(side, 0.0); glVertex3f( sideA, -sideB, -sideC);
  269. color_blue()
  270. glTexCoord2f(side, side); glVertex3f( sideA, sideB, -sideC);
  271. color_blue()
  272. glTexCoord2f(0.0, side); glVertex3f( sideA, sideB, sideC);
  273. color_blue()
  274. glTexCoord2f(0.0, 0.0); glVertex3f( sideA, -sideB, sideC);
  275.  
  276. glNormal3f(-1.0, 0.0, 0.0)
  277. color_blue()
  278. glTexCoord2f(0.0, 0.0); glVertex3f(-sideA, -sideB, -sideC);
  279. color_blue()
  280. glTexCoord2f(side, 0.0); glVertex3f(-sideA, -sideB, sideC);
  281. color_white()
  282. glTexCoord2f(side, side); glVertex3f(-sideA, sideB, sideC);
  283. color_blue()
  284. glTexCoord2f(0.0, side); glVertex3f(-sideA, sideB, -sideC);
  285. glEnd()
  286.  
  287.  
  288. def print_text(text,size):
  289. glScalef(size,size,size);
  290. for char in text:
  291. glutStrokeCharacter(GLUT_STROKE_ROMAN, ord(char))
  292.  
  293. class Packet:
  294. def __init__(self, source_ip, source_port, dest_ip, dest_port, size):
  295. self.sip = source_ip
  296. self.sp = source_port
  297. self.dip = dest_ip
  298. self.dp = dest_port
  299.  
  300.  
  301. resolver = ThreadedNetblockResolver(self.dip)
  302. resolver.run()
  303.  
  304. self.size = size
  305.  
  306. self.when = int(clock())
  307.  
  308. # original x,y,z
  309. self.ox = 0
  310. self.oy = 0
  311. self.oz = 0
  312.  
  313. # current x,y,z
  314. self.cx = 0
  315. self.cy = 0
  316. self.cz = 0
  317.  
  318. # goal x,y,z
  319. self.gx = 0
  320. self.gy = 0
  321. self.gz = 0
  322.  
  323. # movement rate x,y,z
  324. self.mx = 0
  325. self.my = 0
  326. self.mz = 0
  327.  
  328. self.firstdraw = 1
  329. self.done = 0
  330. self.movements = 0
  331.  
  332. #here to end
  333. ip = self.sip
  334. dip = self.dip
  335.  
  336. octets = ip.split(".")
  337. #print octets
  338.  
  339. o1 = int(octets[0])
  340. o2 = int(octets[1])
  341. o3 = int(octets[2])
  342.  
  343. self.cx = self.ox = ( o1 - 128 ) / 12.8
  344. self.cy = self.oy = ( o2 - 128 ) / 12.8
  345. self.cz = self.oz = ( o3 - 128 ) / 12.8
  346.  
  347. doctets = dip.split(".")
  348. do1 = int(doctets[0])
  349. do2 = int(doctets[1])
  350. do3 = int(doctets[2])
  351.  
  352. self.gx = ( do1 - 128 ) / 12.8
  353. self.gy = ( do2 - 128 ) / 12.8
  354. self.gz = ( do3 - 128 ) / 12.8
  355.  
  356.  
  357. self.mx = (self.gx - self.cx) / 30
  358. self.my = (self.gy - self.cy) / 30
  359. self.mz = (self.gz - self.cz) / 30
  360.  
  361. def __del__(self):
  362. hashkey = string.join([repr(self.sip), repr(self.sp), repr(self.dip), repr(self.dp)], "-")
  363.  
  364. global PacketCounter
  365.  
  366. num_packets = PacketCounter[hashkey]
  367. num_packets = num_packets - 1
  368. PacketCounter[hashkey] = num_packets
  369.  
  370.  
  371. def draw(self, lastx, lasty):
  372. if self.firstdraw:
  373. self.firstdraw = 0
  374.  
  375. if 0:
  376. ip = self.sip
  377. dip = self.dip
  378.  
  379. octets = ip.split(".")
  380. #print octets
  381.  
  382. o1 = int(octets[0])
  383. o2 = int(octets[1])
  384. o3 = int(octets[2])
  385.  
  386. self.cx = self.ox = ( o1 - 128 ) / 12.8
  387. self.cy = self.oy = ( o2 - 128 ) / 12.8
  388. self.cz = self.oz = ( o3 - 128 ) / 12.8
  389.  
  390. doctets = dip.split(".")
  391. do1 = int(doctets[0])
  392. do2 = int(doctets[1])
  393. do3 = int(doctets[2])
  394.  
  395. self.gx = ( do1 - 128 ) / 12.8
  396. self.gy = ( do2 - 128 ) / 12.8
  397. self.gz = ( do3 - 128 ) / 12.8
  398.  
  399.  
  400. self.mx = (self.gx - self.cx) / 30
  401. self.my = (self.gy - self.cy) / 30
  402. self.mz = (self.gz - self.cz) / 30
  403.  
  404. #print "movement:", self.mx, self.my, self.mz
  405.  
  406. #set_viewpoint()
  407.  
  408. #glRotatef(lastx, 0.0, 1.0, 0.0)
  409. #glRotatef(lasty, 1.0, 0.0, 0.0)
  410.  
  411. #glTranslatef(self.cx, self.cy, self.cz)
  412.  
  413. #glColor3f(0,0,1)
  414. #glutSolidSphere(0.2, 8, 8)
  415.  
  416. else:
  417. global FreezeScreen
  418. if FreezeScreen == 0:
  419. self.movements = self.movements + 1
  420. self.cx = self.cx + self.mx
  421. self.cy = self.cy + self.my
  422. self.cz = self.cz + self.mz
  423.  
  424. if (self.movements == 90):
  425. self.done = 1
  426.  
  427.  
  428. if self.movements <= 30:
  429. set_viewpoint()
  430.  
  431. glRotatef(lastx, 0.0, 1.0, 0.0)
  432. glRotatef(lasty, 1.0, 0.0, 0.0)
  433.  
  434.  
  435. glTranslatef(self.cx, self.cy, self.cz )
  436. #glTranslatef(self.cx + sin(self.cx), self.cy + sin(self.cy), self.cz + sin(self.cz) )
  437.  
  438. #if self.sp == 80 or self.dp == 80:
  439. # glColor(0,1,1)
  440. # text = "http"
  441. #else:
  442.  
  443.  
  444.  
  445. glColor(1,1,1)
  446.  
  447. text = str(self.sp) + "->" + str(self.dp)
  448. #text = "?"
  449.  
  450.  
  451.  
  452. #glutSolidSphere(0.2, 8, 8)
  453. glutSolidCube(0.1)
  454. #glRotatef(lasty, -1.0, 0.0, 0.0)
  455. #glRotatef(lastx, 0.0, -1.0, 0.0)
  456. #print_text(text,0.0025)
  457.  
  458. # and draw the origin and goal spots
  459.  
  460.  
  461. set_viewpoint()
  462.  
  463. glRotatef(lastx, 0.0, 1.0, 0.0)
  464. glRotatef(lasty, 1.0, 0.0, 0.0)
  465.  
  466.  
  467. glTranslatef(self.ox, self.oy, self.oz)
  468.  
  469.  
  470. glColor3f(1,0,0)
  471. glutSolidCube(0.35)
  472.  
  473. glRotatef(lasty, -1.0, 0.0, 0.0)
  474. glRotatef(lastx, 0.0, -1.0, 0.0)
  475.  
  476.  
  477. color_white()
  478. print_text(self.sip, 0.0025)
  479.  
  480.  
  481.  
  482.  
  483. class Decoder(threading.Thread):
  484. def __init__(self, packetstream):
  485. self.done = 0
  486. threading.Thread.__init__(self)
  487.  
  488. datalink = packetstream.datalink()
  489. if pcapy.DLT_EN10MB == datalink:
  490. self.decoder = EthDecoder()
  491. elif pcapy.DLT_LINUX_SLL == datalink:
  492. self.decoder = LinuxSLLDecoder()
  493. else:
  494. raise Exception("Datalink type not supported: " % datalink)
  495.  
  496. self.pcap = packetstream
  497. self.connections = {}
  498.  
  499. def run(self):
  500. self.pcap.loop(0, self.packetHandler)
  501.  
  502.  
  503. def packetHandler(self, hdr, data):
  504. """Handles an incoming pcap packet. This method only knows how
  505. to recognize TCP/IP connections.
  506. Be sure that only TCP packets are passed onto this handler (or
  507. fix the code to ignore the others).
  508.  
  509. Setting r"ip proto \tcp" as part of the pcap filter expression
  510. suffices, and there shouldn't be any problem combining that with
  511. other expressions.
  512. """
  513.  
  514.  
  515.  
  516. global FreezeScreen
  517. if FreezeScreen == 0:
  518.  
  519.  
  520.  
  521. # Use the ImpactDecoder to turn the rawpacket into a hierarchy
  522. # of ImpactPacket instances.
  523. p = self.decoder.decode(data)
  524. ip = p.child()
  525. tcp = ip.child()
  526.  
  527. # Build a distinctive key for this pair of peers.
  528.  
  529. sip = ip.get_ip_src()
  530. sport = tcp.get_th_sport()
  531.  
  532. dip = ip.get_ip_dst()
  533. dport = tcp.get_th_dport()
  534.  
  535. #print "handling packets"
  536. hashkey = string.join([repr(sip), repr(sport), repr(dip), repr(dport)], "-")
  537. #print hashkey
  538.  
  539. global PacketCounter
  540. try:
  541. num_packets = PacketCounter[hashkey]
  542. if num_packets > 15: #arbitrary constant
  543. # don't even bother drawing this one
  544. self.done = 1
  545. return
  546. except:
  547. num_packets = 0
  548.  
  549. num_packets = num_packets + 1
  550. PacketCounter[hashkey] = num_packets
  551.  
  552.  
  553. src = (sip,sport )
  554. dst = (dip,dport )
  555. size = ip.get_size()
  556.  
  557.  
  558. global RecentPackets
  559.  
  560.  
  561. global PACKET_FILTER
  562. record_packet = 0
  563. #
  564. if PACKET_FILTER == 0:
  565. record_packet = 1
  566. else:
  567. for each in PACKET_FILTER:
  568. if sport == each or dport == each:
  569. record_packet = 1
  570. #record_packet = 1
  571.  
  572.  
  573. if record_packet == 1:
  574. newpacket = Packet(sip,sport,dip,dport,size)
  575.  
  576. RecentPackets.append(newpacket)
  577.  
  578. self.done = 1
  579.  
  580.  
  581.  
  582. class ThreadedSniffer:
  583. def __init__(self):
  584. self.numThreads = 0
  585. self.threadList = []
  586.  
  587. device = choose_sniffing_interface()
  588. p = pcapy.open_live( device, 4096, True, 10000)
  589.  
  590. # At the moment the callback only accepts TCP/IP packets.
  591. p.setfilter(r'ip proto \tcp')
  592.  
  593. self.packetstream = p
  594.  
  595. #def checkInclude(self, URL):
  596. # return string.find(URL, self.include) == 0
  597.  
  598. def run(self):
  599.  
  600. while self.threadList:
  601. self.checkThreads()
  602. else:
  603. self.runDecoder()
  604.  
  605. def checkThreads(self):
  606. for ret in self.threadList[:] :
  607. if ret.done:
  608. self.threadList.remove(ret)
  609. self.numThreads = self.numThreads - 1
  610.  
  611. def runDecoder(self):
  612. ret = Decoder(self.packetstream)
  613. ret.start()
  614. self.threadList.append(ret)
  615. self.numThreads = self.numThreads + 1
  616.  
  617.  
  618. class IP_THREESPACE:
  619.  
  620. def __init__(self):
  621. # initial mouse position
  622. self.lastx = 121
  623. self.lasty = 121
  624.  
  625. self.last_button_down = 0
  626.  
  627. # set the display mode and create the window
  628. glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)
  629. glutCreateWindow("ip-threespace.py - http://www.elifulkerson.com")
  630.  
  631. # setup the callbacks
  632. glutDisplayFunc(self.on_display)
  633. glutMotionFunc(self.on_motion)
  634. glutReshapeFunc(self.on_reshape)
  635. #glutMouseFunc(self.on_mouseclick)
  636. glutIdleFunc(self.on_idle)
  637. glutKeyboardFunc(self.on_keypress)
  638.  
  639. #glutTimerFunc(100, self.decode_packets,1)
  640.  
  641. #
  642. glClearDepth(1.0)
  643. glEnable(GL_DEPTH_TEST)
  644. glClearColor(0.0, 0.0, 0.0, 0.0)
  645. glShadeModel(GL_SMOOTH)
  646.  
  647. glMatrixMode(GL_MODELVIEW)
  648. # initialize lighting */
  649. glLightfv(GL_LIGHT0, GL_POSITION, (40.0, 40, 100.0, 0.0))
  650. glLightfv(GL_LIGHT0, GL_DIFFUSE, (0.99, 0.99, 0.99, 1.0))
  651. glEnable(GL_LIGHT0)
  652. glLightfv(GL_LIGHT1, GL_POSITION, (-40.0, 40, 100.0, 0.0))
  653. glLightfv(GL_LIGHT1, GL_DIFFUSE, (0.99, 0.99, 0.99, 1.0))
  654. glEnable(GL_LIGHT1)
  655. glEnable(GL_LIGHTING)
  656. glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE)
  657. glEnable(GL_COLOR_MATERIAL)
  658.  
  659.  
  660.  
  661. def on_motion(self, x, y):
  662.  
  663. self.lastx = x
  664. self.lasty = y
  665. # redisplay
  666. glutPostRedisplay()
  667.  
  668.  
  669. def on_idle(self):
  670. glutPostRedisplay()
  671.  
  672. def on_keypress(self, key, x, y):
  673. global FreezeScreen
  674.  
  675. if FreezeScreen == 1:
  676. FreezeScreen = 0
  677. else:
  678. FreezeScreen = 1
  679.  
  680. def on_reshape(self, width, height):
  681. # setup the viewport
  682. glViewport(0, 0, width, height)
  683. # setup the projection matrix
  684. glMatrixMode(GL_PROJECTION)
  685. glLoadIdentity()
  686. # calculate left/right and top/bottom clipping planes based the smallest square viewport
  687. a = 9.0/min(width, height)
  688. clipping_planes = (a*width, a*height)
  689. # setup the projection
  690. glFrustum(-clipping_planes[0], clipping_planes[0], -clipping_planes[1], clipping_planes[1], 50.0, 150.0)
  691.  
  692. def draw_area(self,s1,e1,s2,e2,s3,e3,label):
  693.  
  694. # don't need step
  695. step = 0
  696.  
  697. # find the middle of the thing
  698.  
  699. sideA = (e1 - s1) / 25.6
  700. sideB = (e2 - s2) / 25.6
  701. sideC = (e3 - s3) / 25.6
  702.  
  703.  
  704. set_viewpoint()
  705.  
  706. at = ( s1 - 128 ) / 12.8
  707. bt = ( s2 - 128 ) / 12.8
  708. ct = ( s3 - 128 ) / 12.8
  709.  
  710. glRotatef(self.lastx, 0.0, 1.0, 0.0)
  711. glRotatef(self.lasty, 1.0, 0.0, 0.0)
  712.  
  713. glTranslatef(at + (sideA),bt + (sideB), ct + (sideC))
  714.  
  715. drawCube(sideA, sideB, sideC)
  716.  
  717.  
  718. glRotatef(self.lasty, -1.0, 0.0, 0.0)
  719. glRotatef(self.lastx, 0.0, -1.0, 0.0)
  720.  
  721. color_white()
  722. print_text(label, 0.0025)
  723.  
  724.  
  725. def set_filter(self, value):
  726. global PACKET_FILTER
  727.  
  728. if value == 1:
  729. PACKET_FILTER = 0
  730.  
  731. if value == 2:
  732. PACKET_FILTER = [25, 110]
  733.  
  734. if value == 3:
  735. PACKET_FILTER = [80, 443]
  736.  
  737. if value == 4:
  738. PACKET_FILTER = [22]
  739.  
  740. if value == 1:
  741. print "Filter changed: now sniffing all packets."
  742. else:
  743. print "Filter changed, now sniffing for: ", PACKET_FILTER
  744.  
  745. def case_menu(self, value):
  746. print value
  747.  
  748.  
  749. def on_display(self):
  750. # clear the buffer
  751. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
  752.  
  753. # Set up the model view matrix
  754. glMatrixMode(GL_MODELVIEW)
  755. set_viewpoint()
  756.  
  757. glRotatef(self.lastx, 0.0, 1.0, 0.0)
  758. glRotatef(self.lasty, 1.0, 0.0, 0.0)
  759.  
  760. glColor3f(0.8, 0.5, 0.1)
  761.  
  762. # set the join styles for GLE
  763. gleSetJoinStyle(TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP)
  764.  
  765.  
  766.  
  767.  
  768. glColor3f(1, 1, 1)
  769. glutWireCube(20)
  770.  
  771.  
  772.  
  773.  
  774. set_viewpoint()
  775.  
  776. glRotatef(self.lastx, 0.0, 1.0, 0.0)
  777. glRotatef(self.lasty, 1.0, 0.0, 0.0)
  778.  
  779.  
  780.  
  781. global IP_NETBLOCK_LIST
  782. global RecentPackets
  783. global PACKET_FILTER
  784. NewRecentPackets = []
  785.  
  786. set_viewpoint()
  787. glTranslate(-15,10,10)
  788. #os.system("cls")
  789. #print(str(len(RecentPackets)) + " packets drawn", 0.005)
  790.  
  791. for packet in RecentPackets:
  792.  
  793. packet.draw(self.lastx, self.lasty)
  794. #else:
  795. # for each in PACKET_FILTER:
  796. # if packet.sp == each or packet.dp == each:
  797. # packet.draw(self.lastx, self.lasty)
  798.  
  799. #netrange = ""
  800. #d_orgname = ""
  801. #try:
  802. # tmp = IP_NETBLOCK_LIST[packet.dip]
  803. # d_orgname = tmp["OrgName:"]
  804. # netrange = join(tmp["NetRange:"],"")
  805.  
  806. # self.draw_area(tmp["calc_start_1"], tmp["calc_end_1"], tmp["calc_start_2"], tmp["calc_end_2"], tmp["calc_start_3"], tmp["calc_end_3"], d_orgname )
  807.  
  808. #except:
  809. #no lookup yet
  810. # pass
  811.  
  812. if packet.done == 0:
  813. NewRecentPackets.append(packet)
  814.  
  815. RecentPackets = NewRecentPackets
  816.  
  817.  
  818. #print "There are ", len(IP_NETBLOCK_LIST), " looked up IPs"
  819.  
  820.  
  821.  
  822.  
  823. # swap the buffer
  824. glutSwapBuffers()
  825.  
  826.  
  827.  
  828.  
  829. if __name__ == '__main__':
  830.  
  831.  
  832. global RecentPackets
  833. RecentPackets = []
  834.  
  835. global PacketSniffer
  836. PacketSniffer = ThreadedSniffer()
  837. PacketSniffer.run()
  838.  
  839. global PacketCounter
  840. PacketCounter = {}
  841.  
  842. #global NetBlockResolver
  843. #NetBlockResolver = ThreadedNetblockResolver()
  844. #NetBlockResolver.run()
  845.  
  846. global IP_NETBLOCK_LIST
  847. IP_NETBLOCK_LIST = {}
  848.  
  849.  
  850. global FreezeScreen
  851. FreezeScreen = 0
  852.  
  853. global PACKET_FILTER
  854. PACKET_FILTER = 0
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862. # initialize GLUT
  863. glutInit(sys.argv)
  864. # create the demo window
  865. map = IP_THREESPACE()
  866.  
  867. map.set_filter(1)
  868.  
  869.  
  870. submenu2 = glutCreateMenu( map.set_filter)
  871. glutAddMenuEntry("All TCP", 1)
  872. glutAddMenuEntry("Email Traffic", 2)
  873. glutAddMenuEntry("Web Traffic", 3)
  874. glutAddMenuEntry("Ssh Traffic", 4)
  875. glutCreateMenu(map.case_menu)
  876.  
  877. glutAddSubMenu("Filters", submenu2)
  878. glutAttachMenu(GLUT_RIGHT_BUTTON)
  879.  
  880. # enter the event loop
  881. glutMainLoop ()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement