220 likes | 326 Vues
Explore Python's versatility in information security with examples, essential functions, strings handling, lists, dicts, file operations, and more. Learn to install and use 3rd party modules for advanced capabilities. Elevate your knowledge with this comprehensive guide.
E N D
Python motivation • Python is to a Hacker what Matlab is to an engineer • Lots of built-in modules • Lots of 3rd party modules • IDA-Python! • Very popular language, very well supported • Has implementation in every OS. • Human readible • Its free
Python Diff • In this quick overview of python: • We will note the major differences between python and other familiar languages. • And talk of some useful tools
White spaces if you can read this: it must be python! • Python hierarchy is defined by whitespaces • Indentation has to be the same (3 spaces != 1 tab) for every nest within the chain.
Hello, World Example #1: #!/usr/bin/python print “Hello, World!” Example #2: #!/usr/bin/python def main(): print “Hello, World!” if __name__ == ‘__main__’: main()
Datatype behavior Datatypes behave differently in python: A = 5 A = 6 Now A is a different variable! Therefore if use: A = A + 5 Now A is a new variable containing the result!
Basic functions • Using the interpreter allows us to view two basic things: dir(object) – shows us the structure of the object help(object) – shows help created by the developer of the object
Strings • Many builtin string machnisms. • A = “” • Len(“123”) == 3 • A[0] = “a” – not possible, strings are immutable. • A.find(“asd”) returns the location of asd in A • A.split()/A.join() • A.lower() • Replace() – returns a new string with data • Uses regular indexing.
Lists and Tuples • A = (1, 2, 3) • A is of fixed length and is immutable. • A = [ 1, 2, 3] • A is mutable, and the length can be changed by using append: • A.append(4) • print A results in: • [1, 2, 3, 4] • A is not a new variable.
Spans • Spans makes things very comfortable: A = “asd” A[0:] == “asd” A[1:] == “sd” A[0:-1] == “as” A[0:1] == “a” A[0:-2] == “a” A[:2] == “as” A[1:2] == “s” • Works on tuples, and lists!!
dict()s >>> b = dict() >>> b["hello"] = "world" >>> b {'hello': 'world'} • [Demo dicts]
Mutable vs Immutable • Mutable A = [1,2,3,4] B = A A.append(5) print B [1,2,3,4,5] • Immutable A = “foo” B = A A = A + “bar” print B “foo”
Format conversion • print “%d %s 0x%08X” % (0xdeadbeef, “ == “ 0xdeadbeef) • 5 / 3 == 1 • 5 / 3.0 == 1.666666… • int(5/3.0) == 1 • str(1) == “1” • ord(“0”) == 0x30 • chr(0x30) == “c”
File handling • Reading from a file: f = file(“c:\\filename”) # file(“/tmp/filename”) for linux buf = f.read() # buf now contains entire file. lines = buf.split(“\r\n”) # lines contains a list with all lines excluding the “\r\n” f.close() • Writing to a file: file(“filename”, “wb”).write(data) # using returning # object to write the data # if reference is lost file is automatically closed.
Functions • Functions can return arbitrary objects such as: • strings • Tuples! (very common) • int • Etc. global_var = 6 deffuncname(arg1, arg2): local_var = 5 return (var1, var2) • Updating global variables needs special handling: globvar = 0 defset_globvar_to_one(): global globvar # Needed to modify globvar globvar= 1
if,else if 1: print “always here” else: print “never here” • switch case alternative: if key = “x”: exit() elif key = “z”: suspend() else: print “default”
for, while • for (i=1; i < 10; i++) alternative: for i in range(1,10): # help(range) for more options print A[i] while 1: cmd = get_next_cmd() if cmd == “stop”: break elifcmd == “dothis”: dothis() continue print “always here ?!?”
Import,reload • import sys – a way to import libraries • Access to variables is now through the namespace • sys.argv[1] • Alternatively: • from sys import * - • Now we can access: • argv[1] # direct access. • If library was modified after import we can use reload
Useful functions • Complex binary operations: • import struct • struct.pack(“L”, 0xdeadbeef) – result contains DEADBEEF in little endian (EFBEADDE) (0xdeadbeef is treated as unsigned long) • (port) = struct.unpack(“>H”) - read unsigned short from a string represented as bigendian • OS operations: • import os • os.rename(old_name, new_name) • os.system(“run command”)
3rd party modules • You can install many modules by using pypi • On UNIX installing modules is very easy: • sudo pip install [modulename] • Also available easy_install • Useful imports: • scapy (packet manipulation lib works with libpcap), numpy/scipy, pylab, pylib, hashlib, socket, sqllite, gzip, zip, bz2, html, json, wave/audioop (audio operations), PIL (image processing), wave, pygame • Google: [something I need] python
ipython • Extended interpreter capabilities • Acts almost like a shell • Adds history • Adds file completion by tab. • + Many more features.