Как Вы сбрасываете сокеты Python?

Вращение на идее 'пароля' должно взять фразу и записать первые буквы каждого слова во фразе. Например,

"A specter is haunting Europe - the specter of communism."

Становится

asihe-tsoc

, Если фраза, оказывается, имеет punctation, такой как!?, и т.д. - мог бы также пихнуть его там. То же идет для чисел, или просто замените буквами или добавьте соответствующие числа до конца. Например, Karl Marx (кто сказал, что эта кавычка) умер в 1883, итак, почему не 'asihe-tsoc83'?

я уверен, что творческая атака перебором могла извлечь выгоду из статистических свойств такого пароля, но это - все еще порядки величины, более безопасные, чем атака с подбором по словарю.

<час>

Другой большой подход должен только составить смешные слова, например, 'Barangamop'. После использования его несколько раз Вы выучите его, но это твердо к "в лоб". Добавьте некоторые числа или пунктуацию для дополнительной защиты, например, '386Barangamop!'

12
задан Jah 31 October 2009 в 20:38
поделиться

2 ответа

Я думаю, вы говорите через TCP-соединение.

Ваш подход ошибочен. Поток TCP определяется как поток байтов. Вы всегда должны использовать какой-то разделитель и не можете полагаться на сетевой стек для разделения ваших сообщений.

Если вам действительно нужны службы на основе дейтаграмм, переключитесь на UDP. В этом случае вам придется самостоятельно обрабатывать повторную передачу.

Чтобы уточнить:

Очистка буфера отправки обычно создает новые пакеты, как вы и ожидали. Если ваш клиент читает эти пакеты достаточно быстро, вы можете получать одно сообщение за одно чтение.

А теперь представьте, что вы общаетесь по спутниковой связи. Из-за высокой пропускной способности и задержки последний маршрутизатор перед сателлитом ждет короткое время, пока в буфере не будет достаточно данных, и отправит все ваши пакеты сразу. Теперь ваш клиент получит все пакеты без задержки и сразу поместит все данные в приемный буфер. Итак, ваша разлука снова ушла.

22
ответ дан 2 December 2019 в 06:09
поделиться

То, что вы пытаетесь сделать, - это разбить данные на «пакеты».

Например, вы работаете с «пакетами» всякий раз, когда читаете «строки» из файла. Что определяет «линию»? Это последовательность байтов, оканчивающихся знаком \ n. Другой пример: вы читаете «куски» размером 64 КБ из файла. Что определяет «кусок»? Так и есть, поскольку вы каждый раз читаете 65536 байт. Вам нужен «кусок» переменной длины? Вы просто префикс своего «чанка» с его размером, а затем читаете «чанк». Файлы "aiff" (реализациями которых также являются файлы .wav и .avi в MS Windows) и файлы "mov" организованы таким образом.

Эти три метода являются наиболее фундаментальными методами для организации потока байтов, независимо от средний:

  1. разделители записей
  2. записи фиксированного размера
  3. записи с префиксом их размера.

Они могут быть смешаны и / или изменены. Например, у вас могут быть «разделители записей переменных», такие как XML-ридер: читать байты от первого '<' до первого '>', добавлять косую черту после первого '<' и называть его концом записи, читать поток до конец записи. Это просто грубое описание.

Выберите метод и реализуйте его как в писателе, так и в читателе. Если вы также задокументируете свой выбор, вы только что определили свой первый протокол.

'и назовите это концом записи, читать поток до конца записи. Это просто грубое описание.

Выберите метод и реализуйте его как в писателе, так и в читателе. Если вы также задокументируете свой выбор, вы только что определили свой первый протокол.

'и назовите это концом записи, читать поток до конца записи. Это просто грубое описание.

Выберите метод и реализуйте его как в писателе, так и в читателе. Если вы также задокументируете свой выбор, вы только что определили свой первый протокол.

1
ответ дан 2 December 2019 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: