Viewing 15 posts - 1 through 15 (of 16 total)
  • Author
    Posts
  • #55595
    Avatarpranetkul
    Participant

    Hi Sir, I have a problem with this code as I receive this: RuntimeError: maximum recursion depth exceeded while calling a Python object

    Can you let me know please what is wrong with my code?

    #!/usr/bin/env python
    
    import re
    import subprocess
    import optparse
    
    def get_args():
        parser = optparse.OptionParser()
        parser.add_option("-i", "--interface", dest="interface", help="Interface to change its MAC address")
        parser.add_option("-m", "--mac", dest="interface", help="New mac address")
        (options, arguments) = get_args()
        if not options.interface:
            parser.error("[-] Please specify an interface, use --help for more info.")
        elif not options.new_mac:
            parser.error("[-] Please specify a new mac, use --help for more info.")
        return options
    
    def change_mac(interface, new_mac):
        print("[+] Changing MAC address for " + interface + " to " + new_mac)
        subprocess.call(["ifconfig", interface, "down"])
        subprocess.call(["ifconfig", interface, "hw", "ether", new_mac])
        subprocess.call(["ifconfig", interface, "up"])
    
    def get_current_mac(interface):
        ifconfig_result = subprocess.check_output("ifconfig", interface)
        print(ifconfig_result)
        mac_address_search_result = re.search(r"\w\w:\w\w:\w\w:\w\w:\w\w:\w\w", str(ifconfig_result))
        if mac_address_search_result:
            return mac_address_search_result.group(0)
        else:
            print("[-] Could not read MAC address.")
    
    options = get_args()
    
    current_mac = get_current_mac(options.interface)
    print("Current MAC = " + str(current_mac))
    
    change_mac(options.interface, options.new_mac)
    
    current_mac = get_current_mac(options.interface)
    if current_mac == options.new_mac:
        print("[+] MAC address was successfully changed to " + current_mac)
    else:
        print("[-] MAC address did not get changed")
    #55627
    diegodiego
    Moderator

    Hi!

    Can you share a screenshot with the command used to run the code and the result please?

    Thanks!
    Diego

    #55631
    Avatarpranetkul
    Participant

    file:///root/Pictures/Screenshot%20from%202021-06-09%2022-41-11.png

    file:///root/Pictures/Screenshot%20from%202021-06-09%2022-41-16.png

    #55632
    Avatarpranetkul
    Participant

    Sorry if you can’t see the image. I cannot figure out how to send them

    #55649
    diegodiego
    Moderator

    Hi!

    Just upload them to some image hosting service or Gdrive and share the link here.

    Greetings!
    Diego

    #55660
    Avatarpranetkul
    Participant

    #55661
    Avatarpranetkul
    Participant

    • This reply was modified 4 months, 2 weeks ago by Avatarpranetkul.
    #55662
    Avatarpranetkul
    Participant

    These are the right screenshots
    image 1
    image 2

    • This reply was modified 4 months, 2 weeks ago by Avatarpranetkul.
    #55684
    diegodiego
    Moderator

    Hi!
    The access is restricted, can you allow it to anyone who has the link?

    Thanks!
    Diego

    #55686
    Avatarpranetkul
    Participant
    #55708
    Avatarpranetkul
    Participant

    Hopefully, the images work now

    #55713
    diegodiego
    Moderator

    Hi!

    In the get_args function you have used interface as dest value for both options, correct this and try it again.

    Greetings!
    Diego

    #55725
    Avatarpranetkul
    Participant
    #!/usr/bin/env python
    
    import re
    import subprocess
    import optparse
    
    def get_args():
        parser = optparse.OptionParser()
        parser.add_option("-i", "--interface", dest="interface", help="Interface to change its MAC address")
        parser.add_option("-m", "--mac", dest="new_mac", help="New mac address")
        (options, arguments) = get_args()
        if not options.interface:
            parser.error("[-] Please specify an interface, use --help for more info.")
        elif not options.new_mac:
            parser.error("[-] Please specify a new mac, use --help for more info.")
        return options
    
    def change_mac(interface, new_mac):
        print("[+] Changing MAC address for " + interface + " to " + new_mac)
        subprocess.call(["ifconfig", interface, "down"])
        subprocess.call(["ifconfig", interface, "hw", "ether", new_mac])
        subprocess.call(["ifconfig", interface, "up"])
    
    def get_current_mac(interface):
        ifconfig_result = subprocess.check_output("ifconfig", interface)
        print(ifconfig_result)
        mac_address_search_result = re.search(r"\w\w:\w\w:\w\w:\w\w:\w\w:\w\w", str(ifconfig_result))
        if mac_address_search_result:
            return mac_address_search_result.group(0)
        else:
            print("[-] Could not read MAC address.")
    
    options = get_args()
    current_mac = get_current_mac(options.interface)
    print("Current MAC = " + str(current_mac))
    
    change_mac(options.interface, options.new_mac)
    
    current_mac = get_current_mac(options.interface)
    if current_mac == options.new_mac:
        print("[+] MAC address was successfully changed to " + current_mac)
    else:
        print("[-] MAC address did not get changed")
    
    #55726
    Avatarpranetkul
    Participant
    #55745
    Avatarpranetkul
    Participant

    can you let me know please what I should do

Viewing 15 posts - 1 through 15 (of 16 total)
  • You must be logged in to reply to this topic.