0% found this document useful (0 votes)
9 views67 pages

SPSE Slides - Module1

Uploaded by

tyuusenkaa9
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views67 pages

SPSE Slides - Module1

Uploaded by

tyuusenkaa9
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 67

SecurityTube

 Python  Scrip1ng  Expert  


(SPSE)  

hAp://www.securitytube.net    
   

Vivek  Ramachandran  
Course  Instructor  
©SecurityTube.net  
Module  1:  Python  Language  Essen1als  

Part  1:  
Introduc6on  to  Python  and  Se8ng  up  an  Environment  

Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Python  –  a  short  history  

• Created  in  1989  by  Guido  Van  


Rossum  (works  for  Google)  
• Python  2.x  in  2000  
• Python  3.x  in  2008  
– Not  backward  compa1ble  
• 2.x  is  the  status  quo  
• 3.x  future  

©SecurityTube.net  
Why  Python?  

• Open  Source  

• Mul1-­‐PlaXorm  

• Rich  set  of  libraries  

• Large  number  of  open  source  tools  

• HLL  used  for  Rapid  Prototyping  

©SecurityTube.net  
Mul1ple  OS  Support  

• Unix  /  Linux  

• Mac  OS  X  

• Windows  

• Mobile  PlaXorms  –  Android,  iOS  

• Embedded  Systems  

©SecurityTube.net  
Implementa1ons  

• Cpython  –  reference  implementa1on  “Python”  

• Jython  –  Python  in  Java  


 
• IronPython    -­‐  Python  in  C#    

More:  
hAp://wiki.python.org/moin/PythonImplementa1ons?
ac1on=show&redirect=implementa1on    

©SecurityTube.net  
Why  Python  in  Infosec?  

• Rapid  prototyping  -­‐  POC  

• Extensive  library  support  

• Tons  of  tools  already  wriAen  

©SecurityTube.net  
Python  on  different  OSs  

• Linux  
– Pre-­‐Loaded  

• Windows  
– Ac1veState  Python  

• MAC  
– Pre-­‐loaded  J    

©SecurityTube.net  
Python  2.7  or  3.x?  

• Emphasis  on  2.7  

• Most  tools  /  libraries  s1ll  do  not  support  3.x  

• Eventually  everything  will  support  3.x  


– Will  take  a  couple  of  years    

©SecurityTube.net  
PlaXorm  of  Choice  

• Ubuntu  Server    11.10  64-­‐Bit  

hAp://www.ubuntu.com/download/server/download    

• Will  be  running  inside  Virtualbox  

• Connect  to  it  over  SSH  using  PuAy  or  any  other  
client  of  your  choice  

©SecurityTube.net  
Customary  “Hello  World”  

• Interac1ve  mode    

• Script  

©SecurityTube.net  
Module  1:  Exercise  1  

• Install  Python  3.x  in  Ubuntu  11.10  

• How  can  you  switch  between  different  


versions  of  Python?  
– Console  
– Script  

• Explore  Virtualenv  in  Python  

©SecurityTube.net  
SecurityTube  Python  Scrip1ng  Expert  
(SPSE)  

hAp://www.securitytube.net    
   

Vivek  Ramachandran  
Course  Instructor  
©SecurityTube.net  
Module  1:  Exercise  1  

• Install  Python  3.x  in  Ubuntu  11.10  

• How  can  you  switch  between  different  


versions  of  Python?  
– Console  
– Script  

• Explore  Virtualenv  in  Python  

©SecurityTube.net  
Install  Python  3  

• Apt-­‐get  install  python3  

©SecurityTube.net  
Install  Python  Virtualenv  

• Install  PIP:    apt-­‐get  install  python-­‐pip  

• Pip  install  virtualenv  

©SecurityTube.net  
What  is  Virtualenv?  

• Allows  crea1on  of  isolated  python  environments  

• Takes  away  the  pain  of  library  version  issues  

• Each  environment  is  isolated  


– Can  be  configured  to  not  use  globally  configured  libs  
as  well  

• hAp://www.virtualenv.org/en/latest/index.html    

©SecurityTube.net  
Crea1ng  a  Virtual-­‐Env  for  Python  3.x    

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  

Part  2:  Variables  and  Data  Types    

Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Variables,  Objects  and  References  

Reference  
name   vivek  

Variable   Object  

©SecurityTube.net  
Data  Types  

• Strings  
• Numbers  
• Lists    
• Dic1onaries  
• Tuples  
• Boolean  
• …  

©SecurityTube.net  
Strings  
• Defini1on  
– name  =  “vivek”  
– name  =  ‘vivek’  
– name  =  “vivek’s”  
– name  =  “vivek\nramachandran”  
– name  =  r’vivek\nramachandran’    
(raw  string  turns  off  escaping)  
– name  =  “””  
                                         Vivek  
                                         Ramachandran  
                             “””  
©SecurityTube.net  
Unicode  String  

• Used  for  Interna1onaliza1on  


• “wide  characters”  are  they  are  called  
• name  =  u’vivek’  
• unicode  to  regular  string  conversion  
– str(name)    
• regular  string  to  unicode  conversion  
– unicode(name)  

©SecurityTube.net  
String  Opera1ons  

• strings  are  immutable  objects  in  Python  


• Concatena1ng  strings  
– s1  +  s2  
• Repeated  sequence  in  string  
– buffer  =  “A”*20  
• Slicing  –  breaking  up  the  string  
– string[start:end:steps]  
• Int  to  String    
– str(42)  

©SecurityTube.net  
String  Methods  

• string.find(…)  

• string.replace(….)  

• string.split(….)  

• ….  

©SecurityTube.net  
String  Formavng  

• “Hack  this  IP:    %s”  %  ip  

• “Hack  %s  with  IP  %s”  (domain,  ip)  

• “Hack  %(domain)s  with  IP  %(ip)s”  %    


{  “domain”  :  ”securitytube.net”,  “ip”  :    
“192.168.1.10”  }    

©SecurityTube.net  
Numbers  

• Integers,  Floats  etc.  can  be  represented  


• Operators  
– +,-­‐,*,/  
– x**y    (x  to  the  power  y)  
– (>,=,<,>=,<=,  ==)  
– x|y,  x^y,  x&y  (bitwise  operators)  
– x  and  y,  x  or  y,  not  x  (logical  operators)  

©SecurityTube.net  
Lists  

• Collec1on  of  objects  which  can  be  


heterogeneous  
• myList  =  [1,2,3,4]  
• myList  =  [1,  ‘vivek’,  ‘SPSE’,  2.5]  
• myList  =  [1,  [3,4,  ‘hello’],  [3,4],  2,  3]  
• len(myList)  
• len(myList[1])  

©SecurityTube.net  
List  Opera1ons  
• Concatenate      [1,2]  +  [3,4]  =  [1,2,3,4]  

• Append    -­‐-­‐  list.append()  

• Extend  -­‐-­‐-­‐  list.extend([])  

• Reverse  -­‐-­‐  list.reverse()  

• Pop  -­‐-­‐  list.pop()  

• Insert    -­‐-­‐  list.insert(index,  item)    

• Delete    -­‐-­‐    del  list[index]  

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  

End  of  Part  2:  Variables  and  Data  Types    

Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  
Part  3:  Data  Types:  Tuple,  Sets,  Dic6onaries  

hAp://www.securitytube.net    
   
Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Tuple  

• Tuples  are  similar  to  lists  but  immutable  


• Can  covert  from  list  to  tuple  and  vice  versa  
– tuple(list)  
– list(tuple)  
• video  =  (“Hello  World”,  5,  10,  0)  
• sequence  unpacking  
– videoName,  1me,  upvotes,  downvotes  =  video  

©SecurityTube.net  
Sets  

• Unordered  collec1on  of  unique  objects  


• List  to  set  :        b  =  set(a)  
• Set  to  list:          a  =  list(b)  
• Set  Opera1ons  
– Union:      a|b  
– Intersec1on:    a&b  
– Difference:    a-­‐b  
– …  

©SecurityTube.net  
Dic1onaries  

• Unordered  key-­‐value  pairs  


• Keys  are  unique  and  immutable  objects  
• Value  can  change  
• dict  =  {}  ,  dict[‘name’]  =  ‘vivek’  
• dict(name=‘vivek’,  age=‘31’)  
• dict  =  {  ‘name’  :  ‘vivek’,  ‘age’  :  31  }  
• Check  if  a  given  key  is  present  
– dict.has_key(key)  
– key  in  dict  

©SecurityTube.net  
Dic1onary  Opera1ons  

• Get  tuple  of  items:    dict.items()  


• Get  list  of  keys:      dict.keys()  
• Get  list  of  values:  dict.values()  
• Get  a  par1cular  item:      dict.get(key)  
• Item  dele1on  
– All  items:  dict.clear()  
– One  item:      del  dict[key]  

©SecurityTube.net  
Gevng  Help  on  Methods  etc.  

• dir()  –  lists  all  aAributes  

• help(string.replace)    -­‐  list  method  help  

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  
End  of  Part  3:  Data  Types:  Tuple,  Sets,  Dic6onaries  

hAp://www.securitytube.net    
   
Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  
Part  4:  Condi6onal  Statements  

hAp://www.securitytube.net    
   
Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
If  Statement  
if        test_condi1on1:  
               do  stuff  
                                       do  stuff  
elif    test_condi1on2:  
                                       do  stuff  
                                       do  stuff  
elif    test_condi1on3:  
                                       do  stuff  
                                       do  stuff    
else  :  
                                       do  stuff  

©SecurityTube.net  
While  Loops  

while          statement_is_true:  
                               do  stuff  
                                 do  stuff  
 
-­‐  break:    get  out  of  innermost  loop  
-­‐  con1nue:    start  the  next  pass  of  the  innermost  
loop  
-­‐  pass:    do  nothing,  placeholder  

©SecurityTube.net  
Exercise  

• While  loops  can  also  have  a  “else”  in  Python  

• explore  this  func1onality  and  write  a  simple  


program  to  illustrate  

©SecurityTube.net  
For  loops  

for  item  in  object:  


                   do  stuff  
                   do  stuff  
 
for  item  in  [1,2,3]  
for  item  in  [‘a’,  2,  ‘3’]  
for  (x,y)  in  [(“vivek”,  31),  (“john”,  25)]  
 
©SecurityTube.net  
Exercise  

• For  loops  can  have  a  “else”  statement  as  well  

• write  a  simple  program  to  illustrate  this  


func1onality  

©SecurityTube.net  
Emula1ng  C  style  FOR  loops  

C  style  loops:        for  (i=1;  i<10;  i++)  


 
Use  range  in  python:  
 
range(lower,  upper,  step)  creates  a  list  for  use  
range(n)  –  [0,  ……,  n-­‐1]  
 

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  
End  of  Part  4:  Condi6onal  Statements  

hAp://www.securitytube.net    
   
Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  
Part  5:  Func6ons  

hAp://www.securitytube.net    
   
Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Func1ons  

• Func1ons  allow  sec1ons  of  code  to  be  


grouped  beAer  as  per  func1onality    

• def  func1on(arg1,  arg2=default,  ..)  :  


– …  
– …  
– return  value  

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  
End  of  Part  5:  Func6ons  

hAp://www.securitytube.net    
   
Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  
Part  6:  Classes  and  Objects  

hAp://www.securitytube.net    
   
Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Class  
Class  Calculator:  
 
 def  __init__(self,  inp1,  inp2):  
   self.a  =  inp1  
   self.b  =  inp2  
 
 def  sum(self):  
   return  self.a+self.b  
 
 def  product(self):  
   return  self.a*self.b  

©SecurityTube.net  
Inheritence  

Class  Scien1ficCalculator  (Calculator):  


 
 def  power(self):  
   return  pow(self.a,  self.b)  
   

©SecurityTube.net  
Exercise  

• What  are  Global,  Class  and  Instance  variables?  

• How  can  we  override  a  method  in  parent  


class?  

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  
End  of  Part  6:  Classes  and  Objects  

hAp://www.securitytube.net    
   
Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  
Part  7:  Crea6ng  Modules  

hAp://www.securitytube.net    
   
Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Modules  

• BeAer  way  of  organizing  code  

• can  define  classes,  func1ons  and  variable  

• import  MODULE_NAME  

• from  MODULE_NAME  import  ….  

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  
Part  7:  Crea6ng  Modules  

hAp://www.securitytube.net    
   
Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  
Part  8:  Crea6ng  Packages  

hAp://www.securitytube.net    
   
Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Packages    

• hierarchical  file  directory  structure  to  organize  


code  

• consists  of  modules  and  sub-­‐packages  

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  
Part  9:  Excep6on  Handling  

hAp://www.securitytube.net    
   
Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Excep1ons  

• Simply  put  excep1ons  are  error  condi1ons  


which  disrupt  the  normal  flow  of  the  program  

• Python  allows  for  a  simple  and  elegant  way  to  


handle  excep1ons  

©SecurityTube.net  
Exercise  

• Python  allows  for  user  defined  excep1ons  

• Code  up  a  demo  which  has  a  user  defined  


excep1on  and  an  example  use  case  

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  
End  of  Part  9:  Excep6on  Handling  

hAp://www.securitytube.net    
   
Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  
 Part  10:  Python  on  other  Devices  

hAp://www.securitytube.net    
   
Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  
Python  on  the  iPhone  (iOS)  

• On  a  Jailbroken  iPhone  using  Cydia  


– install  Python  scrip1ng  support  

• Original  Blog  post  by  Saurik:  


hAp://www.saurik.com/id/5    

• Can  do  a  ton  of  stuff!  Lets  read  the  SMS  DB  

• With  restric1ons  –  Python  for  iOS  


hAp://itunes.apple.com/us/app/python-­‐for-­‐ios/
id485729872?mt=8&ign-­‐mpt=uo%3D4    

©SecurityTube.net  
Python  on  Android  

• Scrip1ng  Layer  for  Android    


hAp://code.google.com/p/android-­‐scrip1ng/    
 
Exercise:  Install  the  scrip1ng  layer  on  your  
Android  Phone  and  try  the  previous  demo  

©SecurityTube.net  
Python  in  your  Wi-­‐Fi  Router  

• Open  Source  firmwares  such  as  DD-­‐WRT  


support  running  Python  on  them  
hAp://www.dd-­‐wrt.com/site/index  
 
Exercise:  Purchase  a  DD-­‐WRT  compatable  router  
(DLINK  DIR-­‐615  E4)  and  run  python  on  it  

©SecurityTube.net  
Module  1:  Python  Language  Essen1als  
 End  of  Part  10:  Python  on  other  Devices  

hAp://www.securitytube.net    
   
Vivek  Ramachandran  
Course  Instructor  

©SecurityTube.net  

You might also like