AntiGuide: WolAutoPython



PagePrincipale :: DerniersChangements :: ParametresUtilisateur :: Vous êtes 216.73.216.115 :: Signaler un abus :: le: 20250618 17:41:20

lu: http://www.netgear-forum.com/forum/index.php?showtopic=62514

import sys, socket, datetime, urllib, time, struct, subprocess
# find rarp & ping imports
# check wake on http://wolpobox.logsm.net  (UDP:2222)

# some forged paramters
sandbox="./" # used to change working folder 
ip=""  # not using rarp/ip
start_timeout=10 # seconds to wait before ping

sock =  socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('',7))
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1)

print " watch  http://wolpobox.logsm.net and wol 7 (frapper ^C pour abandonner)\n"

while 1:
   time.sleep(10)
   urllib.urlretrieve("http://wolpobox.logsm.net/index.php?action=get&id=zorglub",sandbox+"ici.txt");
   with open("ici.txt") as f:
     answer=f.readline()
   f.close
  
   print answer;
   # find IP, allows ping
   start=answer.find("ip:")+3
   end=0
   #ip
   ip=""
   if (start >=3)  :
    end=answer.find(";",start)
    ip=answer[start:end]

   token=""
   start=answer.find("token:")+6
   if (start >=6)  :
    end=answer.find(";",start)
    token=answer[start:end]
 
   # Check macaddress format and try to compensate.
   macadress=""
   start=answer.find("mac:",end)+4
   if (start >=4 ) :
    end=answer.find(";",start)
    macaddress=answer[start:end-1]
    # Pad the synchronization stream.
    # magic packet contains 20 times mac address
    data = ''.join(['FFFFFFFFFFFF', macaddress * 20])
    send_data = ''

    # Split up the hex values and pack.
    for i in range(0, len(data), 2):
       send_data = ''.join([send_data,
                            struct.pack('B', int(data[i: i + 2], 16))])

    # Broadcast it to the LAN.
    next="http://wolpobox.logsm.net/index.php?action=del&id=zorglub&mac="+macaddress+"&token="+token
    print datetime.datetime.now() , "awake mac=" , macaddress , " ip=" , ip
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    # 7 legacy awake port
    sock.sendto(send_data, ('<broadcast>', 7))
    if (len(ip)>0):
     # wait starting
     time.sleep(start_timeout)
     ping_response=subprocess.Popen(["/bin/ping","-c1","-w100",ip],stdout=subprocess.PIPE).stdout.read()
     print ping_response
     # got 1 response packet ?
     if (ping_response.find("1 received")>=0) :
       urllib.urlretrieve("http://wolpobox.logsm.net/index.php?action=log&id=zorglub&mac="+macaddress+"&token="+token,sandbox+"log.txt")
       print  ip , " is alive"
       print "nxt " , next
       urllib.urlretrieve(next,sandbox+"la.txt")

en cours avec ping par Ip fixe
import sys, socket, datetime, urllib, time, struct, subprocess
# find rarp & ping imports
# check wake on http://wolpobox.logsm.net  (UDP:2222)

# some forged paramters
sandbox="./" # used to change working folder 
ip="192.168.0.253"  # not using rarp/ip
start_timeout=10 # seconds to wait before ping

sock =  socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('',7))
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1)

print " watch  http://wolpobox.logsm.net and wol 7 (frapper ^C pour abandonner)\n"

while 1:
   time.sleep(10)
   urllib.urlretrieve("http://wolpobox.logsm.net/index.php?action=get&id=zorglub",sandbox+"ici.txt");
   with open("ici.txt") as f:
     macaddress=f.readline()
   f.close
  
   # Check macaddress format and try to compensate.
   start=macaddress.find("mac:")+4
   if (start <4) or (macaddress.find("mac:*")>=0) :
     print datetime.datetime.now() , " " , start , "-NO--",macaddress , "--- " , len(macaddress)
     
   else: 
    macaddress=macaddress[start:start+12]
    print datetime.datetime.now() , start , "-OK--",macaddress , "--- " , len(macaddress)
    # Pad the synchronization stream.
    # magic packet contains 20 times mac address
    data = ''.join(['FFFFFFFFFFFF', macaddress * 20])
    send_data = ''

    # Split up the hex values and pack.
    for i in range(0, len(data), 2):
       send_data = ''.join([send_data,
                            struct.pack('B', int(data[i: i + 2], 16))])

    # Broadcast it to the LAN.
    next="http://wolpobox.logsm.net/index.php?action=del&id=zorglub&mac="+macaddress
    print datetime.datetime.now() , "awake " , macaddress
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    # 7 legacy awake port
    sock.sendto(send_data, ('<broadcast>', 7))
     # wait starting
    time.sleep(start_timeout)
    ping_response=subprocess.Popen(["/bin/ping","-c1","-w100",ip],stdout=subprocess.PIPE).stdout.read()
    print ping_response
    # got 1 response packet ?
    if (ping_response.find("1 received")>=0) :
       urllib.urlretrieve("http://wolpobox.logsm.net/index.php?action=log&id=zorglub&mac="+macaddress,sandbox+"log.txt")
       print  ip , " is alive"
       print "nxt " , next
       urllib.urlretrieve(next,sandbox+"la.txt")s

la preuve par l'image:
1

1) en haut à gauche: demande de Wake par le web
2) à droite: en haut: le programme en python
3) en bas à droite retrouyve l'adresse mac à éveiller.