Lamподключение в осику происходит следующим образом; сначала идет подключение к
login.icq.com, там происходит обмен несколькими пакетами, количество и содержание пакетов зависит от метода авторизации (безопасный логин или обычный) в случае удачи сервер выдает пакет содержащий адрес бос сервера и куки (256 байт). к этому бос серверу нужно подключится и отправить эти куки.
смапер у тебя работает после выключения скрипта потому что через твой скрипт произошло только подключение к
login.icq.com, после чего смапер подключился к бос серверу адрес которого пришел в пакете вместе с куками, а не к твоему скрипту (да и не смог бы).
чтобы смапер работал через твой скрипт тебе нужно разобрать пакет с куками и в нем заменить адрес бос сервера на 127.0.0.1
что касается размера указываемого в socket.recv(), в осеку протоколе есть заголовок - 6 байт, сначала нужно распаковать его, в нем содержится сколько байт нужно еще прочитать и прочее, ну и далее читаем весь пакет, а чтобы изменить пакет нужно у изменяемого пакета править в заголовке его размер, а так же и всякие tlv