Упс! Не волнуйся, друг. Простая ошибка: после того, как пользователь нажал на флажок, по умолчанию будет установлен флажок. Ваш код здесь выполняет это действие «проверить» во второй раз. Таким образом, вы немедленно проверяете, а затем снимаете флажок!
Есть два возможных исправления для вас. Либо вы можете просто прекратить ставить / снимать флажки в вашем коде, другими словами, закомментируйте эту строку здесь:
//$('#row [type="checkbox"]').get(0).checked = !$('#row [type="checkbox"]').get(0).checked;
Или вы можете продолжать делать это, но вы должны отключить действие HTML по умолчанию, используя функцию
`enter code here`event.preventDefault()
К сожалению, я не мог не работает с jQuery ... Я сам не очень хорошо разбираюсь в этом, но уверен, что кто-то еще прокомментирует, как это сделать ниже!
Этот вопрос слишком интересен для подавления! После нескольких неудачных начал я начал думать о важных составляющих проблемы и обыскивал RFCs для совета. Я не нашел категорический ответ, но вот мой мыслительный процесс в надежде, что он помогает:
Исходный вопрос спрашивает, как обнаружить другое устройство с Вашим MAC-адресом. Принятие Вы находитесь в сети IP, что требуется, чтобы выполнять это?
Пассивный метод должен был бы просто слушать трафик и искать любые пакеты, что Вы не передали, но имели свой MAC-адрес. Это может или не может произойти, поэтому хотя это может сказать Вам окончательно, если дубликат существует, это не может сказать Вам окончательно, что не делает.
Любой активный метод требует, чтобы Вы передали пакет, который вынуждает самозванца ответить. Это сразу устраняет любые методы, которые зависят от дополнительных протоколов.
Если другое устройство имитирует Вас, оно должно (по определению) ответить на пакеты с Вашим MAC-адресом как место назначения. Иначе это отслеживает, но не имитирует.
Решение должно быть независимо от IP-адреса и включить только MAC-адрес.
Таким образом, ответ, кажется, должен был бы передать или широковещательную передачу (Ethernet) пакет или пакет с Вашим MAC-адресом как его место назначения, которое требует ответа. monkeywrench - то, что IP-адрес обычно включается, и Вы не знаете это.
Какой протокол соответствует этому описанию?
Легкий ответ:
Not-so-easy отвечает:
Протокол это независимо от IP: или тот, который не использует уровень IP или тот, который позволяет широковещательные сообщения. Ни один не приходит на ум.
Отправьте любой пакет, который обычно генерировал бы ответ от Вас, препятствовать тому, чтобы себя ответили и искали ответ от другого устройства. Казалось бы разумным использовать Ваш IP-адрес в качестве места назначения, но я не убежден в этом. К сожалению, детали (и, поэтому ответ) оставляют как осуществление для OP..., но я надеюсь, что обсуждение было полезно.
Я подозреваю, что конечное решение включит комбинацию методов, поскольку никакой единственный подход, кажется, не гарантирует надежное определение.
Некоторая информация доступна по http://en.wikipedia.org/wiki/ARP_spoofing#Defenses
Если все остальное перестало работать, можно наслаждаться этим: http://www.rfc-editor.org/rfc/rfc2321.txt
Отправьте продолжение со своим решением, поскольку я уверен, что это будет полезно другим.Удачи!
Вы могли отправить запрос ARP на каждый возможный IP в подсети. Конечно, исходный адрес запроса ARP должен быть ff:ff:ff:ff:ff:ff, иначе Вы не могли бы видеть ответ.
Я подделал пакет как это с bittwiste и воспроизвел его с PReplay, и все хосты в сети получили ответ. (Я не знаю, подделали ли они пакеты ARP, законны или не... некоторые Ose могли бы проигнорировать их),
Вот то, на что был похож созданный пакет:
Вот то, на что был похож ответ:
Если Вы следите за ответами и видите Ваш MAC-адрес в одном из пакетов (в красном прямоугольнике), чем у кого-то есть тот же MAC-адрес, как Вы делаете...
Unfortuantely я не мог протестировать теорию полностью, потому что ни один из моего (Windows) машины не заботится обо мне пытающийся установить MAC-адрес nic...
Два хоста с помощью того же MAC-адреса на сегменте единой сети, вероятно, заставили бы переключатели сойти с ума, и Вы могли, вероятно, обнаружить его при наличии чрезвычайно ненадежного сетевого соединения (поскольку переключатели отправят некоторую часть пакетов, которые принадлежат Вашему хосту второго, в зависимости от которого один из Вас отправил последний пакет в их направлении).
Это очень поздно, и пока нет ответа, но я хотел повторить, что именно я сделал, на случай, если кому-то еще будет интересно.
Я работал с очень странным встроенным оборудованием, которому не назначен MAC-адрес при изготовлении. Это означает, что нам нужно было назначить его программно.
Очевидное решение - попросить пользователя выбрать MAC-адрес, который, как им известно, доступен в их сети, предпочтительно из локально администрируемого диапазона, что я и сделал. Однако я хотел выбрать разумно безопасное значение по умолчанию, а также попытаться предупредить пользователя в случае возникновения конфликта.
В конце концов, я прибег к выбору случайного значения по умолчанию в локально управляемом диапазоне, выбранном путем выполнения некоторых аппаратных показаний с умеренной энтропией. Я сознательно исключил начало и конец диапазона, исходя из предположения, что они с умеренной вероятностью будут выбираться вручную. Скорее всего, в любой сети будет только одно из этих устройств и, конечно же, меньше 20, поэтому шансы на конфликт очень низки, хотя и не так низки, как они могли бы быть из-за в некоторой степени предсказуемых случайных чисел.
Учитывая низкую вероятность возникновения проблемы и несмотря на превосходные ответы, приведенные выше, я решил отказаться от обнаружения конфликтов и ограничиться предупреждением пользователя о проблемах конфликта MAC.
Если бы я все же решил реализовать обнаружение конфликтов, то, учитывая, что я контролирую весь сетевой стек, я бы, вероятно, обратил внимание на избыточное количество неизвестных или отсутствующих пакетов, а затем инициировал изменение MAC-адреса или предупредил пользователя, когда это произойдет.
Надеюсь, это поможет кому-то еще где-нибудь - но, вероятно, нет!