در این جلسه از کلاس به معرفی ساختار های داده ای در زبان پایتون و معرفی رشته ها و اعداد میپردازیم
PySec101 Fall 2013 J2E1 By Mohammad Reza Kamalifard
Talk About
Python Data Structures, Strings, Numbers,...
جلسه دوم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
1. Python for ethical hackers
Mohammad reza Kamalifard
kamalifard@datasec.ir
2. Python language essentials
Module 1:
Introduction to Python and Setting up an Environment for Programing
Part 2 :
Variables and Data Types
3. Variables, Objects and References
• There are integers, floating point numbers, strings, and
many more, but things are not the same as in C or C++.
• Python variables do not have any types associate with
them
• Don’t need declaration before use
• Variable name is a reference to an Object
4. Variables
• Something which can change
• Way of referring to a memory location used by a computer
program. Variable is a symbolic name for this physical
location
• Memory location contains values, like numbers, text or
more complicated types
5. Variables, Objects and References
Identifier
>>> name = 'reza'
>>> print name
reza
>>>
>>>name = 10
>>>name
10
Object
6. Data Type
>>> name = 10
>>> type(name)
<type 'int'>
>>> name = 'Reza'
>>> type(name)
<type 'str'>
>>> name = 10.42
>>> type(name)
<type 'float'>
>>>
7. Variables vs. Identifiers
Variables and identifiers are very often mistaken as
synonyms
●
The name of a variable is an identifier, but a variable is
"more than a name".
●
An identifier is not only used for variables. An identifier can
denote various entities like variables, types, labels,
subroutines or functions, packages and so on.
●
8. Naming Identifiers of Variables
A valid identifier is a non-empty sequence of characters of
any length with:
●
the start character can be the underscore "_" or a capital or
lower case letter
●
the letters following the start character can be anything
which is permitted as a start character plus the digits.
●
Just a warning for Windows-spoilt users: Identifiers are
case-sensitive
●
Python keywords are not allowed as identifier names
and, as, assert, break, class, continue, def, del, elif, else,
except, finally, for, from, global, if, import, in, is, lambda,
nonlocal, not, or, pass, raise, return, try, while, with, yield
9. Variables vs. Identifiers
>>> name = 'reza'
>>> id(name)
3072831328L
>>> hex(id(name))
'0xb727af60L'
>>>
An other way to do that :
>>> name.__repr__
<method-wrapper '__repr__' of str object at 0xb727af60>
>>>
0xb727af60 is exact memory location where the object stored,
name is just a reference to that object.
10. Data Types Python offers
1.
2.
3.
4.
5.
6.
7.
Numbers
Strings
List
Dictionaries
Tuples
Boolean
…
11. Numbers - Integer
Normal integers
e.g. 4321
●
Octal literals (base 8)
A number prefixed by a 0 (zero) will be interpreted as an octal number
>>> a = 010
>>> print a
8
●
Hexadecimal literals (base 16)
Hexadecimal literals have to be prefixed either by "0x" or "0X".
>>> hex_number = 0xA0F
>>> print hex_number
2575
●
Long integers
these numbers are of unlimeted size
e.g.42000000000000000000L
●
Floating-point numbers
for example: 42.11, 3.1415e-10
●
13. Strings
Strings are marked by quotes:
–
single quotes (')
'This is a string with single quotes‘
– double quotes (")
"Obama's dog is called Bo""
– triple quotes, both single (''') and (""")
'''String in triple quotes can extend
over multiple lines, like this on, and can contain
'single' and "double" quotes.'''
16. Strings
>>> name = '''
... Hello Dear Students
... Welcome to PYSEC101 Course!
... Python Scripting Course for Ethical Hackers
... '''
>>> name
'nHello Dear StudentsnWelcome to PYSEC101 Course!nPython
Scripting Course for Ethical Hackersn'
>>> print name
Hello Dear Students
Welcome to PYSEC101 Course!
Python Scripting Course for Ethical Hackers
17. String Index
●
A string in Python consists of a series or sequence of
characters - letters, numbers, and special characters.
18. Unicode
Used for internationalization
●
“Wide Characters” are they are called(code all languages)
>>>name = u'Mohammad'
>>> name
u'Mohammad'
>>>
unicode to regular string conversion
>>> str(name)
'Mohammad'
>>>
regular string to unicode conversion
>>> unicode(name)
u'Mohammad'
>>>
●
19. Concatenating Strings
Strings can be glued together (concatenated) with the +
operator
>>>s1 + s2
>>> s1 = 'Hamid'
>>> s2 = 'rezaie'
>>> s1 + s2
'Hamidrezaie'
>>> s1 + ' ' + s2
'Hamid rezaie'
>>>
●
20. Repetition
String can be repeated or repeatedly concatenated with
the asterisk operator "*“
>>> buffer = 'A' * 20
>>> buffer
'AAAAAAAAAAAAAAAAAAAA'
>>>
●
21. Int to string
>>> 'a' + 42
●
Traceback (most recent call last):
●
File "<stdin>", line 1, in <module>
●
TypeError: cannot concatenate 'str' and 'int' objects
●
>>>
●
>>> str(42)
●
'42'
●
>>>>'a' + str(42)
●
22. Slicing
Substrings can be created with the slice or slicing notation,
i.e. two indices in square brackets separated by a colon:
●
"Python"[2:4] -> "th“
●
>>>string[start:end:steps]
●
24. Stirngs are immutable objects
>>>name = 'reza'
>>>name[0]
r
name [0] = 'a'
TypeError: 'str' object does not support item
assignment
You can not change String Object directly in memory
because they are immutable
>>>name = 'reza'
name = 'Mohammad'
●
'reza' object still does exists now name is referenced to
'Mohammad' object
26. >>> name = 'mohammad reza'
>>> name.find('PYSEC101')
-1
>>> name.find('mma')
4
>>>
>>> name.split()
['mohammad', 'reza']
by default split on white spaces and return list of strings.
split on 'a'
>>> name.split('a')
['moh', 'mm', 'd rez', '']
>>>
>>> name.replace('m', 'H')
'HohaHHad reza'
>>>
27. String Formatting
>>> ip = '192.168.1.252'
>>> line = 'Crack this IP :%s' % ip
>>> line
'Crack this IP :192.168.1.252'
>>>
>>> line = 'Crack this IP : %s and name %s ' % (ip,
'Reza-PC')
>>> line
'Crack this IP : 192.168.1.252 and name Reza-PC '
28. References
SPSE securitytube training by Vivek Ramachandran
SANS Python for Pentesters (SEC573)
Violent python
Security Power Tools
python-course.eu
----------------------------http://www.tutorialspoint.com/python/python_strings.htm
http://www.tutorialspoint.com/python/python_numbers.htm
http://www.python-course.eu/variables.php
http://www.python-course.eu/sequential_data_types.php
http://www.python-course.eu/sets_frozensets.php
29. This work is licensed under the Creative Commons Attribution-NoDerivs 3.0 Unported License.
To view a copy of this license, visit
http://creativecommons.org/licenses/by-nd/3.0/
Copyright 2013 Mohammad Reza Kamalifard
All rights reserved.
Go to Kamalifard.ir/pysec101 to Download Slides and Course martials .