Python: Difference between revisions
		
		
		
		Jump to navigation
		Jump to search
		
No edit summary  | 
				No edit summary  | 
				||
| Line 33: | Line 33: | ||
  root.after(10, drawframe)  |   root.after(10, drawframe)  | ||
  mainloop()  |   mainloop()  | ||
== One function proper hexdump ==  | |||
The following function will convert a byte array to a format like this:  | |||
 00000000 69 6d 70 6f 72 74 20 73  74 72 69 6e 67 0d 0a 0d  |import.string... |  | |||
 00000010 0a 64 65 66 20 68 65 78  64 75 6d 70 28 63 76 65  |.def.hexdump(cve |  | |||
 00000020 63 74 6f 72 2c 20 70 72  65 66 69 78 20 3d 20 22  |ctor,.prefix.=." |  | |||
 00000030 22 29 3a 0d 0a 09 69 20  3d 20 30 0d 0a 09 73 20  |"):...i.=.0...s. |  | |||
 00000040 3d 20 22 22 0d 0a 09 61  63 20 3d 20 5b 5d 0d 0a  |=.""...ac.=.[].. |  | |||
 00000050 09 66 6f 72 20 63 20 69  6e 20 63 76 65 63 74 6f  |.for.c.in.cvecto |  | |||
 00000060 72 3a 0d 0a 09 09 69 66  20 6e 6f 74 20 69 20 25  |r:....if.not.i.% |  | |||
The function is not designed to be memory efficient, fast or good looking, just simple to drop in and get some hex output.  | |||
 import string  | |||
 def hexdump(cvector, prefix = ""):  | |||
 	i = 0  | |||
 	s = ""  | |||
 	ac = []  | |||
 	for c in cvector:  | |||
 		if not i % 16:  | |||
 			if i != 0:  | |||
 				s += " |"  | |||
 				for cs in ac:  | |||
 					css = chr(cs)  | |||
 					s += css if css in string.printable and not css in string.whitespace else "."  | |||
 				s += " |"  | |||
 				ac = []  | |||
 			s += "\n%s%s " % (prefix, "%08x" % i)  | |||
 		elif not i % 8:  | |||
 			s += " "  | |||
 		s += "%02x " % c  | |||
 		ac.append(c)  | |||
 		i += 1  | |||
 	if len(ac) > 0:  | |||
 		left = 16 - len(ac)  | |||
 		for k in range(left):  | |||
 			s += "   "  | |||
 		if left > 8:  | |||
 			s += " "  | |||
 		s += " |"  | |||
 		for cs in ac:  | |||
 			css = chr(cs)  | |||
 			s += css if css in string.printable and not css in string.whitespace else "."  | |||
 		for k in range(left):  | |||
 			s += " "  | |||
 		s += " |"  | |||
 		return s  | |||
 with open("hexdump.py", "rb") as f:  | |||
 	data = f.read()  | |||
 	print(hexdump(data))  | |||
Revision as of 15:12, 15 June 2018
Threading
http://www.tutorialspoint.com/python/python_multithreading.htm
Tkinter and simple GUI programming
#!/usr/bin/env python
from Tkinter import *
def drawframe():
	c.delete("all")
	c.create_rectangle(0, 0, 150, 75 + c.steffe_i, fill="blue")
	c.steffe_i += 1
	root.after(10, drawframe)
def mouseclick(event):
	print "Mouse click at", event.x, event.y
def keyclick(event):
	print "Key click", event.keysym
root = Tk()
c = Canvas(root, width=640, height=480)
c.pack()
root.bind("<Key>", keyclick)
root.bind("<Button-1>", mouseclick)
c.config(borderwidth = 10)
c.config(background = "grey15")
c.steffe_i = 0
root.after(10, drawframe)
mainloop()
One function proper hexdump
The following function will convert a byte array to a format like this:
00000000 69 6d 70 6f 72 74 20 73 74 72 69 6e 67 0d 0a 0d |import.string... | 00000010 0a 64 65 66 20 68 65 78 64 75 6d 70 28 63 76 65 |.def.hexdump(cve | 00000020 63 74 6f 72 2c 20 70 72 65 66 69 78 20 3d 20 22 |ctor,.prefix.=." | 00000030 22 29 3a 0d 0a 09 69 20 3d 20 30 0d 0a 09 73 20 |"):...i.=.0...s. | 00000040 3d 20 22 22 0d 0a 09 61 63 20 3d 20 5b 5d 0d 0a |=.""...ac.=.[].. | 00000050 09 66 6f 72 20 63 20 69 6e 20 63 76 65 63 74 6f |.for.c.in.cvecto | 00000060 72 3a 0d 0a 09 09 69 66 20 6e 6f 74 20 69 20 25 |r:....if.not.i.% |
The function is not designed to be memory efficient, fast or good looking, just simple to drop in and get some hex output.
import string
def hexdump(cvector, prefix = ""):
	i = 0
	s = ""
	ac = []
	for c in cvector:
		if not i % 16:
			if i != 0:
				s += " |"
				for cs in ac:
					css = chr(cs)
					s += css if css in string.printable and not css in string.whitespace else "."
				s += " |"
				ac = []
			s += "\n%s%s " % (prefix, "%08x" % i)
		elif not i % 8:
			s += " "
		s += "%02x " % c
		ac.append(c)
		i += 1
	if len(ac) > 0:
		left = 16 - len(ac)
		for k in range(left):
			s += "   "
		if left > 8:
			s += " "
		s += " |"
		for cs in ac:
			css = chr(cs)
			s += css if css in string.printable and not css in string.whitespace else "."
		for k in range(left):
			s += " "
		s += " |"
		return s
with open("hexdump.py", "rb") as f:
	data = f.read()
	print(hexdump(data))