Условия задачи: - сеть из двух компьютеров под управлением WinXP, Comp1 и Comp2, воркгруппа - админские креды неизвестны - на каждой есть по пользователю из группы Users: User1 на Comp1 и User2 на Comp2 - User1 и User2 имеют пустой пароль - сетевой логон User1 и User2 запрещен - на обеих машинах есть компиляторы - есть CD-Rom'ы (неизвестно правда, рабочие ли). Флешек и т.п. нет. - Шаринг запрещен Задача: Передать файлик с одного компьютера на другой. Варианты решения?
Squash 1) Грузим хотя бы одну из машин с диска (с Hiren's BootCD, например) и сбрасываем админский пароль (с помощью NT Password Changer, например). После чего делаем, что хотим, включая расшаривание. 2) Берём третью машину, к которой имеется полный доступ, (условно ноут) на которой поднимаем ftp-сервер (например, стандартный виндовый). Втыкаем сетевой кабель в машину источник и ноут. Передаём на ноут файл с машины-источнка через стандартные ftp/tftp. С ноута на машину-назначение аналогично. P.S. Кстати, это скорее HEAP или SOFTWARE, а не NETWORKS.
Загрузка с сидюка, ессно, запрещена, биос закрыт паролем, железо ковырять нельзя, дабавить еще одну машину в сеть тоже нельзя. shchetinin, roman_pro спасибо за наводку, попробую.
Squash Имхо если файл большей, то вариант "сокеты + CREATEFILE" спровоцирует массу эмоциональных всплесков )) Лучше уж HyperTerminal.
кхе-кхе. А выхода в интернет или корпоративной почты нет? Сервера в сетке? Почему нельзя добавить еще 1 машину в сеть? там же воркгруппа. Не домен. Религия не позволяет? Боитесь пришествия злого админа, если обнаружит постороннюю машину в сети? Да ладно, не обнаружит. Откуда - там поди и IP статические прописаны, никакого DHCP. Ну подумаешь, в сети еще одна машина. Нельзя в принципе? Ну возьмите кроссовер, притащите ноут с линуксом, на котором расшарьте что хотите, соедините кроссовером с одной машиной, перекиньте. Переключите кроссовер в другую машину, перекиньте. Ноут в сетке не появится ЗЫ: а учитывая воркгруппу, и пустые пароли у юзеров - линукс на ноуте вообще не обязателен. Можно и ХР. и 2К. Завести этих юзеров локально, тоже с пустыми паролями, и обычная шара. Сложно витую пару кроссом обжать? ЗЗЫ: да, это более развернутый №3. Не вижу, что мешает так сделать кроме отсутствия ноута
Не царское дело угробить неделю на написание и отладку проги для передачи через сокеты файла. Как подумаю, что на обоих компах придется с листа набирать текст (компиляторы-то есть, а исходник-то тоже не передать ) - уже геморойно кажется. А обжать кусок провода - минутная задача, коннекторы стоят условно 1 рубь, как в них всунуть провод - см в гугле, один по А, второй конец по Б. Кусок провода - тоже не проблема. Забить коннектор можно отверткой, если мультитула нет. Если 15 рублей не жалко, идем в ближайший комп-подвальчик, где комплектующие и всякие картриджи продают, и нет менеджеров в костюмах с галстуками, и нам обжимают и продают готовый кросс. ЗЫ: а гипертерминал вам не поможет. Легче через mstsc подключить удаленный стол. Благо ХР, не обезображенная всякими там вистами или семерками, в плане предоставления рабочего стола вполне дружелюбна. Если пустой пароль будет помехой - поменять на не-пустой.
Конечно же, служба терминалов прикрыта и пароль менять запрещено. ЗЫ: Меня интересуют программные способы в первую очередь.
Ну может быть и так. Вот еще вариант. Код (Text): .386p .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\wsock32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\wsock32.lib includelib \masm32\lib\kernel32.lib include \masm32\include\shell32.inc includelib \masm32\lib\shell32.lib .data victim db "test.txt",0 welcome db 13,10,"Telnet file sender",13,10,0 err db "ERROR",0 wsaData WSADATA <> .data? s1 SOCKET ? sin1 sockaddr_in <> temp dd ? s2 SOCKET ? sin2 sockaddr_in <> fsize HWND ? fhwn HWND ? fmap DD ? mapv DD ? ofst OFSTRUCT <?> .code start: invoke WSAStartup,101h,addr wsaData invoke socket,PF_INET,SOCK_STREAM,0 mov s1,eax mov ax,AF_INET mov sin1.sin_family,ax xor eax,eax mov sin1.sin_addr,eax invoke htons,233 ;port for connection mov sin1.sin_port,ax invoke bind,s1,addr sin1,sizeof sockaddr_in cmp eax,SOCKET_ERROR jne @F invoke WSACleanup xor eax,eax ret @@: invoke listen,s1,1 Userlogs: invoke closesocket,s2 mov eax,SIZEOF sockaddr_in mov temp,eax invoke accept,s1,addr sin2,addr temp mov s2,eax invoke send,s2,addr welcome,SIZEOF welcome,0 invoke OpenFile,offset victim,addr ofst,OF_READWRITE ;open file mov fhwn,eax invoke GetFileSize,fhwn,fsize invoke CreateFileMapping,fhwn,0,PAGE_READWRITE,fsize,0,0 mov fmap,eax ;mapping invoke MapViewOfFile,eax,FILE_MAP_ALL_ACCESS,0,0,0 cmp eax,0 je error mov mapv,eax invoke lstrlen,eax invoke send,s2,mapv,eax,0 ;sending data invoke closesocket,s1 invoke closesocket,s2 invoke WSACleanup @@: invoke ExitProcess,0 error : invoke send,s2,addr err,sizeof err,0 jmp @B end start 1. На первой(ip=192.168.1.1)машине создать папку с:\123 В ней собранный код выше (например mysend.exe)и рядом файл test.txt - тот который нужно передать. Код (Text): c\123 .. mysend.exe test.txt 2. Запускаю mysend.exe 3. На второй машине (ip=192.168.1.2) делаю Код (Text): c:\telnet 192.168.1.1 233 [Enter] ... и на экране получаю содержимое text.txt с первой машины.
Интересно узнать, почему ? В отличие от telnet/ftp запущенный сервис ему не требуется. Кроме того, в списке компонентов Windows HyperTerminal не значится, так что если админ не удалил руками, то он есть в системе Windows XP. В Vista+ его убрали (хотя скопированный из XP прекрасно работает). Что касаемо идеи отсылать файл через сокеты вручную - есть специальное API TransmitFile, которое, по идее, упростит процесс написания подобного кода. Компиляторы, по условиям задачи, в системе есть. Хотя если бы вдруг не было, то пришлось бы немного поискать - не стоит забывать что на XP с установленным .net framework (а его как правило ставят в корпоративном секторе, т.к. софт написанный под .net не редкость), а так же на системах Vista+ компилятор C# (тапками не кидаться) всегда присутствует, так что можно компилить простые C# программы в спартанских условиях "голой" машины. Для затравки. Про возможности использования vbscript/jscript/bat упоминать не буду. Ну и совсем извращённый способ вспомнился: net send. Правда годится только для отправки текстовых сообщений, но ничего не мешает Ctrl+C, Ctrl+V текст построчно с обеих сторон. Главное случайно net send * не сделать, а то все пользователи сети будут счастливы. В студенческие годы был подобный забавный случай с подсказками на лабах в универе и случайной отправкой их по всей сети, в том числе зав. кафедрой и декану ))