Поиск по блогу

вторник, 4 марта 2014 г.

Python for Hackers - Networkers Primer (Sockets, Webserver)

В подборке "видео для хакеров". Очень хорошо ребята излагают. Надо не забыть пересмотреть все видеоролики (у них еще есть). Здесь я подготовил файлы с кодом "один в один"... Код не работает. Наверное, надо пробовать "современный" вариант из /docs.python.org ,,, и пробовать в Linux, поскольку в Windows есть какие-то ограничения. В предыдущем посте я пытался освоить API Tor, здесь - сокеты..., но ничего не получается..., дальше будем осваивать Python with Linux
Здесь я нашел примеры кода (вроде бы) для видео внизу. Есть еще второе видео (продолжение). Но лучше использовать примеры с официального сайта docs.python.org

Два видео настолько мне понравились, что я решитл их "законспектировать" ... и попробовать... естественно. Ниже первое видео. In this video Patrick Schallner & Rene Schallner two really smart guys explain how to use sockets and scapy!!! with Python, a lot to learn from these video. (Published on Dec 12, 2012)
Второй ролик (продолжение): Вилео про Сокеты для Хакеров-2 Перехватываем трафик (WireShark) и потрошим перехваченый объект.
Сокет - это (как правило) соединение клиент-сервер. Что должен "уметь" клиент? Установить соединение, послать запрос и получить ответ. Поэтому в видео сначала приводится код для "клиента" (он чуть ниже кода для "сервера").
Очевидно, что код сервера сложенее, зато он снабжен комментариями.
In [2]:
%load C:\\Users\\kiss\\Documents\\IPython Notebooks\\web\\hackers\\happyhacking\\Server.py
In [*]:
# #######!/usr/bin/python
import socket
import sys
 
# Create a TCP/IP socket to listen on
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
# Prevent from "address already in use" upon server restart
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
 
# Bind the socket to port 8081 on all interfaces
server_address = ('localhost', 8081)
print 'starting up on %s port %s' % server_address
server.bind(server_address)
 
# Listen for connections
server.listen(5)
 
# Wait for one incoming connection
connection, client_address = server.accept()
print 'connection from', connection.getpeername()
 
# Let's receive something
data = connection.recv(4096)
if data:
    print 'Received ', repr(data)
 
    # Send it back nicely formatted
    data = data.rsrtip()
    connection.send('%s\n%s\n%s\n' % ('-'*80, data.center(80), '-'*80))
    print 'Response sent!'
 
# Close the connection from our side
connection.shutdown(socket.SHUT_RD | socket.SHUT_WR)
connection.close
print 'Connection closed.'
 
# And stop listening
server.close()
In [1]:
#Mini client program
#Make sure miniserver.py is ranning
In [3]:
%load C:\\Users\\kiss\\Documents\\IPython Notebooks\\web\\hackers\\happyhacking\\Client.py
In []:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('localhost', 8081))
s.send('Happy Hacking')
data = s.recv(1024)
s.close()
print 'Received: '
print data
In [3]:
s=socket.
---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-3-ab6ccc8ff2a9> in <module>()
      1 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
----> 2 s.connect(('localhost',8081))
      3 s.send('Happy Hacking')
      4 data=s.recv(1024)
      5 s.close()

C:\Users\kiss\Anaconda\lib\socket.pyc in meth(name, self, *args)
    222 
    223 def meth(name,self,*args):
--> 224     return getattr(self._sock,name)(*args)
    225 
    226 for _m in _socketmethods:

error: [Errno 10061] Подключение не установлено,
Эти примеры нужно будет обязательно освоить. Они очень красивы - юзаем локальный прокси и перехватываем его трафик. И сначала под Linux...


Посты чуть ниже также могут вас заинтересовать

Комментариев нет:

Отправить комментарий