Отличные видео-уроки. Учил пайтон, чтобы автоматизировать ряд процессов на работе. Далее цели никакой не было. Теперь, благодаря урокам, нахожу неплохое применение языку. Прекрасный багаж знаний Олег. Спасибо большое!
Как то слишком сложное исполнение непонятного решения. То что вы написали это полторы строчки на шеле, но даже если взять как решение задачи исключительно на питоне, то и решение не верное. Вы ищите ip адреса не только в поле from лога, но и to,request. Как решение задачи подсчёта ip адресов в тексте - решение верное, но как решение по обнаружению атаки - нет. Если интересно подробнее напишите мне, расскажу подробнее.
можно ли строчку write_csv(count(reader('test.log'))) разбить на отдельные строки? как бы это выглядело? не могу никак добиться... reader('test.log') count('reader')
эту строку вы не разобьете на функции, но ее можно разбить на вызовы функций. log = reader('test.log') ips_quantity = count(log) write_csv(ips_quantity)
Здравствуйте! На 5:26 видео показано как происходит чтение файла. Я сделал все тоже самое, но кроме фразы: [Finished in 0.3s] больше ничего не вывелось. Почему так?
как определить по кол-ву запросов что это ddos атака - например если это банк-клиент (сервер) то там запросы могут превышать и 800 и 1000 обращений (вполне как оказалось легально соединяются)...
Здравствуйте, очень понравился урок. Единственное не могу понять, почему выводится в одну ячейку информация, через запятую и через строку, может подскажете если не затруднит? Возможно это просто отображение exсel 16? Заранее спасибо. А вообще уроки супер, всё по факту. Очень понравилось, успехов в дальнейшем))
Hi, you can find it in the attached file to the video. The link to Dropbox. If you mean how to get a server log file, so you can do it in an admin panel of your website or just ask a support team of your hosting provider. I have no code to get the log, because it was generated by apache server automagically.
Well look, i've made a connection between a server and a client by programming scripts in Python, so i need to save what the client is trying to write in a log file. (i'm trying to create a HONEYPOT to detect what a client is doing or what he's looking for) !!!!!!!!!!!!!!!Server.py #!/usr/bin/python import socket def Main () : server_name = '' server_port = 555 server_banner = """Sagem F@st 2604 ADSL router linux 7 3.49a4G_Topnet | banner: \xFF\xFD\x01\xFF\xFD!\xFF\xFB\x01\xFF\xFB\x03FAST2604 ADSL Rout |_er (Software Version:3.49a4G_Topnet)\x0D\x0ALogin: Service Info: Device: broadband router """ fakepage = """ 401 Unauthorized 401 Unauthorized Authorization required. micro_httpd """ server_socket = socket.socket() server_socket.bind((server_name, server_port)) server_socket.listen(10)
print "server ON" while True : c,addr = server_socket.accept() print "We have connection from client ip" ,addr data = c.recv(1024) # data = "GET /admin/wp-admin.php http/1.1" # Parse data and get URI= /admin/wp-admin.php print "Bad guy is looking for: " ,data # change data with parsed data print "sending fake page : " ,fakepage c.send (fakepage) c.close() if __name__== '__main__' : Main() ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- !!!!!!!!!!!!!!!!client.py #!/usr/bin/python import socket def Main (): client_socket = socket.socket() server_name = '192.168.137.170' server_port = 555 client_socket.connect ((server_name,server_port))
data = client_socket.recv(1024) print 'Server is : ' ,data client_socket.send("GET /admin/wp-admin.php http/1.1") pagedata = client_socket.recv(1024) print 'Web page : ' ,pagedata client_socket.close() if __name__== '__main__' : Main () --------------------------------------------- Please Can you Help me.
"i need to save what the client is trying to write in a log file" Your client just gets some data from the server. The client doesn't try to write the received data to a file. And if I'd want to save content of the pagedata variable, so I'd try: with open('some_filename', 'w') as file: file.write(pagedata)
ok, if you want to get a log file, so use an 'a' flag of .open() function. with open('some_filename', 'a') as file: file.write(pagedata) and the some_filename file will be appended with a content of the pagedata variable on each iteration of the while loop.
интересный урок, но делать такие вещи через python - изврат, все это делается одно-строчной командой на awk: [code] awk '{print($1)}' apache.log|sort|uniq -c [/code] все, профит! Но уже совсем другое дело, когда нужно спарсить сайт... или что ли бо еще не касающееся логов...
спасибо! Мне так понравился ваш голос от него такое спокойствие уверенность у меня ощущается. Пойду еще видосики смотреть что у вас есть.
Отличные видео-уроки. Учил пайтон, чтобы автоматизировать ряд процессов на работе. Далее цели никакой не было. Теперь, благодаря урокам, нахожу неплохое применение языку. Прекрасный багаж знаний Олег. Спасибо большое!
Спасибо
Супер, спасибо. Как раз то, что нужно! Кстати, меня всегда учили за собой файлы и подключения к базе закрывать))
Великолепно!!!
Просто супер, автору огромное спасибо, и успехов во всем, а нам по больше уроков.
Спасибо, очень познавательно!)
Хороший урок, спасибо. Будут ли ещё уроки?
Да, планировал во всяком случае.
Олег Молчанов Можете сделать серию уроков для чего вы используете Python в работе? чем больше сложных задач будет рассмотрено, тем лучше
Линк в описание на пример лога не до конца записан. Можно ли его обнвовить?
Как то слишком сложное исполнение непонятного решения. То что вы написали это полторы строчки на шеле, но даже если взять как решение задачи исключительно на питоне, то и решение не верное.
Вы ищите ip адреса не только в поле from лога, но и to,request. Как решение задачи подсчёта ip адресов в тексте - решение верное, но как решение по обнаружению атаки - нет.
Если интересно подробнее напишите мне, расскажу подробнее.
можно ли строчку
write_csv(count(reader('test.log')))
разбить на отдельные строки? как бы это выглядело? не могу никак добиться...
reader('test.log')
count('reader')
эту строку вы не разобьете на функции, но ее можно разбить на вызовы функций.
log = reader('test.log')
ips_quantity = count(log)
write_csv(ips_quantity)
Здравствуйте! На 5:26 видео показано как происходит чтение файла. Я сделал все тоже самое, но кроме фразы: [Finished in 0.3s] больше ничего не вывелось. Почему так?
что то не так в выводом, скорее всего опечатка где то, перепроверь))
Oybek Narzikulov ну я бы не стал тогда бы писать, если бы десять раз не перепроверил
Подскажите, создает файлик, но пустой. В чем ошибка?
еще хотелось бы ваших уроков по Django )
Они обязательно будут. Но не могу сказать, когда именно
будем ждать )
У меня ошибку пишет (скопировал вроде все как у вас, файл подсунул с двумя IP , csv выходной файл создает , но он пустой).
как определить по кол-ву запросов что это ddos атака - например если это банк-клиент (сервер) то там запросы могут превышать и 800 и 1000 обращений (вполне как оказалось легально соединяются)...
Зависит от конкретной ситуации.
В данной ситуации это был блог на wordpress.
Определить можно по количеству запросов в единицу времени от одного IP.
можем ли вывести в web - более читабельно?
Да, можно. Когда запилю касты по Flask или Django, то можно будет реализовать такой проект.
Здравствуйте, очень понравился урок. Единственное не могу понять, почему выводится в одну ячейку информация, через запятую и через строку, может подскажете если не затруднит? Возможно это просто отображение exсel 16? Заранее спасибо.
А вообще уроки супер, всё по факту. Очень понравилось, успехов в дальнейшем))
Спасибо.
Тут я сделал FAQ и там есть ответ на ваш вопрос (если не поможет, то вам нужно будет гуглить проблему):
p-notes.ru/
@@zaemiel ссылка не работает(
Не могу никак понятьо почему у меня записывает в эксель файл не в отдельных ячейках а все льет в кучу?
Тоже пишет все в одну ячейку.
Та же фигня(( Кидает в одну колонку всё
копать нужно в настройках экселя, там есть параметр по которому он разделяет csv файл, например по ; или по ,
Traceback (most recent call last):
File "E:\Soft\Python\parser.py", line 40, in
write_csv(count(reader()))
TypeError: reader() missing 1 required positional argument: 'filename'
[Finished in 0.1s with exit code 1]
[shell_cmd: python -u "E:\Soft\Python\parser.py"]
[dir: E:\Soft\Python]
[path: C:\Program Files\Python35\Scripts\;C:\Program Files\Python35\;C:\oraclexe\app\oracle\product\11.2.0\server\bin;;C:\ProgramData\Oracle\Java\javapath;D:\RC\Hadoop\SQL\DWH-SQL\JDBC;C:\Program Files\ImageMagick-7.0.1-Q16;C:\Windows\System32\Wbem;C:\Program Files\RSA SecurID Token Common;C:\Program Files (x86)\Skype\Phone\;C:\Windows\;C:\Program Files (x86)\Universal Extractor;C:\Program Files (x86)\Universal Extractor\bin;C:\mongodb\bin;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\GtkSharp\2.12\bin;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\EaseUS\Todo Backup\bin\x64\]
Он же вам пишет:
TypeError: reader() missing 1 required positional argument: 'filename'
Вы не передали в функцию один позиционный аргумент - filename
can you please show me the code of the server to get logs like those you got ?
Hi, you can find it in the attached file to the video. The link to Dropbox.
If you mean how to get a server log file, so you can do it in an admin panel of your website or just ask a support team of your hosting provider.
I have no code to get the log, because it was generated by apache server automagically.
Well look, i've made a connection between a server and a client by programming scripts in Python, so i need to save what the client is trying to write in a log file. (i'm trying to create a HONEYPOT to detect what a client is doing or what he's looking for)
!!!!!!!!!!!!!!!Server.py
#!/usr/bin/python
import socket
def Main () :
server_name = ''
server_port = 555
server_banner = """Sagem F@st 2604 ADSL router linux 7 3.49a4G_Topnet
| banner: \xFF\xFD\x01\xFF\xFD!\xFF\xFB\x01\xFF\xFB\x03FAST2604 ADSL Rout
|_er (Software Version:3.49a4G_Topnet)\x0D\x0ALogin:
Service Info: Device: broadband router """
fakepage = """
401 Unauthorized
401 Unauthorized
Authorization required.
micro_httpd
"""
server_socket = socket.socket()
server_socket.bind((server_name, server_port))
server_socket.listen(10)
print "server ON"
while True :
c,addr = server_socket.accept()
print "We have connection from client ip" ,addr
data = c.recv(1024)
# data = "GET /admin/wp-admin.php http/1.1"
# Parse data and get URI= /admin/wp-admin.php
print "Bad guy is looking for: " ,data
# change data with parsed data
print "sending fake page : " ,fakepage
c.send (fakepage)
c.close()
if __name__== '__main__' :
Main()
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
!!!!!!!!!!!!!!!!client.py
#!/usr/bin/python
import socket
def Main ():
client_socket = socket.socket()
server_name = '192.168.137.170'
server_port = 555
client_socket.connect ((server_name,server_port))
data = client_socket.recv(1024)
print 'Server is : ' ,data
client_socket.send("GET /admin/wp-admin.php http/1.1")
pagedata = client_socket.recv(1024)
print 'Web page : ' ,pagedata
client_socket.close()
if __name__== '__main__' :
Main ()
---------------------------------------------
Please Can you Help me.
"i need to save what the client is trying to write in a log file"
Your client just gets some data from the server. The client doesn't try to write the received data to a file.
And if I'd want to save content of the pagedata variable, so I'd try:
with open('some_filename', 'w') as file:
file.write(pagedata)
Really i'd like to have a way to get logs like those in my server and i can't find any way to this.
ok, if you want to get a log file, so use an 'a' flag of .open() function.
with open('some_filename', 'a') as file:
file.write(pagedata)
and the some_filename file will be appended with a content of the pagedata variable on each iteration of the while loop.
✔
интересный урок, но делать такие вещи через python - изврат, все это делается одно-строчной командой на awk:
[code] awk '{print($1)}' apache.log|sort|uniq -c [/code] все, профит! Но уже совсем другое дело, когда нужно спарсить сайт... или что ли бо еще не касающееся логов...
конструкцию __name__ == '__main__': - я так понимаю можно вообще не писать?
Лучше писать. Так удобнее.
Но если удобство неочевидно, то не пишите. До поры до времени.