информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаСтрашный баг в WindowsАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Хотя теперь это и неважно, но 17.10.06 11:04  Число просмотров: 2264
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
> Это первое, что я попробовал. make мне все так же выдает,
> что для сборки all ничего не надо. Я ему и зависимость от
> xx.c давал - не помогло

точно ли у тебя в Makefile стоял <tab>, а не пробелы?
Может быть, твой редактор автоматом заменяет <tab> на n пробелов?
<programming>
Я как то выкладывал перловую спираль. Вот еще поздравлялка с рождеством на Plain C 11.10.06 19:29  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
/*
LEAST LIKELY TO COMPILE SUCCESSFULLY:
  Ian Phillipps, Cambridge Consultants Ltd., Cambridge, England

  An appropriate program for December 25th, this consists primarily of
  calls to main() combined by a lot of the ternary conditional (?:)
  operators. Have you ever seen a more forceful return? The judges note
  that this program looked like what you would get by pounding on the keys
  of a type writer at random.
*/

#include <stdio.h>
main(t,_,a)
char
*
a;
{
	return!

0<t?
t<3?

main(-79,-13,a+
main(-87,1-_,
main(-86, 0, a+1 )


+a)):

1,
t<_?
main(t+1, _, a )
:3,

main ( -94, -27+t, a )
&&t == 2 ?_
<13 ?

main ( 2, _+1, "%s %d %d\n" )

:9:16:
t<0?
t<-72?
main( _, t,
"@n'+,#'{}w+/w#cdnr/+,{}r/*de}+,/*{,/w{%+,/w#q#n+,/#{l,+,/n{n+,/+#n+,/#;\
#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;\
q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; \
r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#\
\
n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;\
{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;\
#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")
:
t<-50?
_==*a ?
putchar(31[a]):

main(-65,_,a+1)
:
main((*a == '/') + t, _, a + 1 )
:

0<t?

main ( 2, 2 , "%s"):*a=='/'|
main(0,

main(-61,*a, "!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry")

,a+1);}




---
и такое бывает 13.10.06 17:33  
Автор: anonymus Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Автор неизвестен:

*** Makefile
--- ./Makefile
************
*** 0**
--- 1,2 ----
+ all:
+ while :; do gcc -o x xx.c &> /dev/null; ./x > xx.c; cat xx.c; sleep 1; done

*** xx.c
--- ./xx.c
************
*** 0*
--- 1,2 ---
+ #include<stdio.h>
+ char*s,*p;int(i)=0,(j)=0,(f)=0,(y)=0;char(c)=0;int(out)(char(n)){for(;;){if(n==0||f==-1)break;if(f==1||f==3||f==4){if(n==1&&y&1)break;if(c=='"'||c=='\\')putc('\\',stdout),n=((n!=-1)?--n:n);}if(c&&c!=0x20)putc(c,stdout),n=((n!=-1)?--n:n);if(f==0||f==2||f==5){c=s[i++];if(c==64&&f!=5)c=0,f++;else{if(c==0){f=-1;break;}}}else{if(f==1){c=s[j++];if(c==0){for(j=0;p[j]!='#';j++);j++,f++;}}else{if(f==3){c=p[j++];if(c==0)j=0,f++;}else{if(f==4){c=p[j++];if(c=='#')f++;}}}}}return(f);}void(main)(){int(x);char(z);s="#include<stdio.h>char*s,*p;int(i)=0,(j)=0,(f)=0,(y)=0;char(c)=0;int(out)(char(n)){for(;;){if(n==0||f==-1)break;if(f==1||f==3||f==4){if(n==1&&y&1)break;if(c=='\"'||c=='\\\\')putc('\\\\',stdout),n=((n!=-1)?--n:n);}if(c&&c!=0x20)putc(c,stdout),n=((n!=-1)?--n:n);if(f==0||f==2||f==5){c=s[i++];if(c==64&&f!=5)c=0,f++;else{if(c==0){f=-1;break;}}}else{if(f==1){c=s[j++];if(c==0){for(j=0;p[j]!='#';j++);j++,f++;}}else{if(f==3){c=p[j++];if(c==0)j=0,f++;}else{if(f==4){c=p[j++];if(c=='#')f++;}}}}}return(f);}void(main)(){int(x);char(z);s=\"@\";p=\"@\";y=0x80;for(x=0,z=p[0];z!='#';z=p[++x]){if((unsigned)z>=0x40){y^=0x80;if(z&0x80)z^=0x80,y|=1;z-=0x40;if(y&0x80){if(y&2)putc('\"',stdout),y^=2,z--;z=out(z);if(z==-1)break;if(y&1){if(z==1||z==3||z==4)putc('\"',stdout),y=0x82;else{y=0x80;}putc('\\n',stdout);}}else{for(;z>0;z--)putc(0x20,stdout);}}}out(-1);}";p="@С@y@Ц@y@Ц@y@Ц@y@Ц@WaЧ@TgФ@TgФ@TIWGФ@TIXFФ@TIXFФ@TIXFФ@TIXFФ@TIXFФ@TIYEФ@TgФ@TgФ@TIXFФ@NAEIXFФ@TIXFФ@TIXFФ@TH[DФ@y@Ц@y@y@y@#@С@y@Ь@y@Ь@y@Ь@y@Ь@RI^JТ@QK]IУ@QK]JТ@PL]JТ@PL]JТ@PL]JТ@PL]JТ@PL]JТ@PL]JТ@PsТ@PsТ@PsТ@PsТ@PM\\JТ@PM\\JТ@PM\\JТ@PM\\JТ@PM\\JТ@PM\\JТ@PM\\Jy@y@y@y@#@С@y@Ь@y@Ь@y@Ь@y@Ь@RqТ@RqТ@RqТ@QsIAЗ@bOд@bOд@bO]AЖ@bOд@bOд@bOд@bOд@bOд@bOд@cNд@bOд@bOд@bOд@bOд@bOд@y@y@y@y@y@#@С@y@Ь@y@Ь@y@Ь@y@Ь@RqТ@RqТ@RqТ@OABKXNCAО@RKXNТ@RKYMТ@RK[KТ@RK\\JТ@RK\\JТ@RK\\JТ@RK\\JТ@RK]IТ@RK^HТ@RK_GТ@RK_GТ@RK_GТ@RK_GТ@RqТ@RpУ@TmФ@VjХ@y@Ь@y@#@С@y@Ь@y@Ь@y@Ь@y@Ь@ULTLФ@ULTLФ@MBFLTLФ@ULTLФ@ULTLФ@UKULФ@ULTLФ@ULTLФ@ULTLФ@UlФ@UlФ@UlФ@ULUKФ@ULUKФ@ULUKФ@ULNAFKФ@ULUKФ@ULUKФ@ULUKФ@ULUKФ@ULUKФ@y@#@С@y@Ь@y@Ь@QIQGSGЙ@OKRHOHК@NDDDSHLIЛ@LEEETGIHО@KEGDUFHGР@HGHDVFFGС@HFIDXEDFУ@GFJDXECFФ@GEKD[IЦ@FELD\\GЧ@FELD\\GЧ@EEMD[GШ@EEMDZFЪ@DENDYGЪ@DDODXGЫ@DDODXFЬ@CEODVGЭ@CENEUGЮ@BFNETGЯ@BFNESHЯ@y@#@С@y@Ь@y@Ь@KRRTТ@GVQUТ@GWPUС@HFJFQHЮ@WGQIЬ@WFRIЭ@TGTNШ@QHUOШ@OGXOGAKAД@LIYIЮ@MJWIЮ@NJVIЮ@OKTIЮ@RJRVС@THRVТ@UHQVС@TINABVС@RJщ@OIy@Д@JJy@И@FIy@Н@y@#@С@y@Ь@y@Ь@y@Ь@LjЯ@JoЬ@HAAoЬ@GABI^JЪ@JI`IЩ@JIbHШ@JIbHШ@JIbHШ@JIcGШ@JIcGШ@JIbGЩ@JI`HЪ@JI]HЭ@JIZIЯ@KHWHг@JISIж@JIOLз@JIOHл@JIKIо@JIJGс@JIGGф@JICHч@JQy@Б@JOy@Г@JLy@Ж@JJy@И@JJy@И@JJy@И@JJy@И@JJy@И@JJy@#";y=0x80;for(x=0,z=p[0];z!='#';z=p[++x]){if((unsigned)z>=0x40){y^=0x80;if(z&0x80)z^=0x80,y|=1;z-=0x40;if(y&0x80){if(y&2)putc('"',stdout),y^=2,z--;z=out(z);if(z==-1)break;if(y&1){if(z==1||z==3||z==4)putc('"',stdout),y=0x82;else{y=0x80;}putc('\n',stdout);}}else{for(;z>0;z--)putc(0x20,stdout);}}}out(-1);}
+
Не собирается 16.10.06 13:41  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
[root@localhost shm]# patch -p0 <1.diff;make
(Stripping trailing CRs from patch.)
patching file Makefile
(Stripping trailing CRs from patch.)
patching file xx.c
Makefile:4: warning: overriding commands for target `while'
Makefile:2: warning: ignoring old commands for target `while'
make: Nothing to be done for `all'.
[root@localhost shm]#
Все собирается 16.10.06 14:28  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
Просто <TAB> съелся
all:
	while :; do gcc -o x xx.c &> /dev/null; ./x > xx.c; cat xx.c; sleep 1; done 

---
Не собирается 16.10.06 15:05  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Просто <TAB> съелся
>
> all:
> 	while :; do gcc -o x xx.c &> /dev/null; ./x
> > xx.c; cat xx.c; sleep 1; done 
> 

---

Это первое, что я попробовал. make мне все так же выдает, что для сборки all ничего не надо. Я ему и зависимость от xx.c давал - не помогло
Хотя теперь это и неважно, но 17.10.06 11:04  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
> Это первое, что я попробовал. make мне все так же выдает,
> что для сборки all ничего не надо. Я ему и зависимость от
> xx.c давал - не помогло

точно ли у тебя в Makefile стоял <tab>, а не пробелы?
Может быть, твой редактор автоматом заменяет <tab> на n пробелов?
Вот тут не уверен 17.10.06 12:01  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> точно ли у тебя в Makefile стоял <tab>, а не пробелы?
> Может быть, твой редактор автоматом заменяет <tab> на
> n пробелов?
Midnight Commander это был с дефолтными для федоры 4 настройками. Надо было конечно хексы глянуть, но я удовлетворился тем, что курсор прыгал через все пространство разом, а не посимвольно: во всех редакторах - верный признак таба.
Ну тогда все ясно 17.10.06 12:26  
Автор: :-) <:-)> Статус: Elderman
Отредактировано 17.10.06 12:27  Количество правок: 1
<"чистая" ссылка>
> Midnight Commander это был с дефолтными для федоры 4
> настройками. Надо было конечно хексы глянуть, но я
> удовлетворился тем, что курсор прыгал через все
> пространство разом, а не посимвольно: во всех редакторах -
> верный признак таба.

Ну тогда все ясно :)
Значит в mcedit была включена опция Fake half tabs, и это был не настоящий Tab, а четыре (точнее tab_spacing/2) пробела :)
О-о-о. /me грязно ругается на тех, кто все это придумал 17.10.06 13:52  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Ну тогда все ясно :)
> Значит в mcedit была включена опция Fake half tabs, и это
> был не настоящий Tab, а четыре (точнее tab_spacing/2)
> пробела :)

Ничего не буду писать о конкретных системах дабы не разводить очередной флейм, но блин это ж надо сделать настолько неочевидное и неинтуитивное поведение.
Хм 16.10.06 15:30  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
У меня вот так (после добавления tab):
$ patch <11.patch
patching file Makefile
patching file xx.c
$ make
while :; do gcc -o x xx.c &> /dev/null; ./x > xx.c; cat xx.c; sleep 1; done
#include<stdio.h>char*s,*p;int(i)=0,(j)=0,(f)=0,(y)=0;char(c)=0;int(out)(char(n)){for(;;){if(n==0||f==-1)break;if(f==1||f==3||f==4){if(n==1&&y&1)break;if(c=='"'||c=='\\')putc('\\',stdout),n=((n!=-1)?--n:n);}if
...
поскипано
В общем там мало интересного, программа сама себя на экран выводит
Ну чего должен делать makefile я понял 16.10.06 17:02  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> поскипано
> В общем там мало интересного, программа сама себя на экран
> выводит

И на результат посмотрел. Уж не знаю, то ли это БТ-шный парсер побил код, то ли код рассчитан на строго определенный тип терминалов, но в результате он выводит какой то мусор. Хотя в целом идея интересная: сделать на нединамическом языке вещи, присущие чисто динамическим. Извращение, конечно, но довольно интересное извращение.
Извращение совсем в другом 16.10.06 19:58  
Автор: anonymus Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > поскипано
> > В общем там мало интересного, программа сама себя на
> экран
> > выводит

Она не только себя выводит, но и форматирует так, что проступают буквы.
Просто смотреть надо под иксами или в фреймбуфере.
Смотрел под X-ми, но проступающих букв не увидел 16.10.06 22:53  
Автор: :-) <:-)> Статус: Elderman
Отредактировано 16.10.06 22:54  Количество правок: 1
<"чистая" ссылка>
> Она не только себя выводит, но и форматирует так, что
> проступают буквы.
> Просто смотреть надо под иксами или в фреймбуфере.

Смотрел под X-ми, но проступающих букв не увидел :)
Исходник наверное покорежился при постинге.
Может покажешь скриншот, чтобы все оценили глубину замысла создателя сего шедевра?
Лучше вместо скриншота выложить сам непокореженный исходник куда нибудь на slil.ru 17.10.06 00:59  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Не компилится 11.10.06 23:39  
Автор: Heller <Heller> Статус: Elderman
Отредактировано 11.10.06 23:41  Количество правок: 1
<"чистая" ссылка>
> main(t,_,a)
Udeclared identifiers (все три).
> char
Function-style initializer appears to be a function definition
> *
Unexpected end of file found

Пытался сам поправить ошибки. Прописывание типов к аргументам main привело только к тому, что копилятор дополнительно начал ругаться на другие вещи (то что он выводит мало относится к коду - видимо, не может разобрать в чем там дело; впрочем, как и я).

У меня первое подозрение и непонимание вызывает переопределние переменной a (если я правильно знаю синтаксис, то переходы на новую строчку ничего не значат, ведь так? Это, как я понял, исключительно для obfuscation?).

Однако я не спец в Си. Куда дальше тыкац?

ЗЫ. Компилирую в MS VC 6.
ЗЗЫ. А не кинешь ссылку на "аналогичное" (понимать бы еще что такое "спираль") на Perl. Не могу найти. Видимо, меня в те времена еще не було на форуме.
Компилится без ошибок и ворнингов 12.10.06 17:02  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> > main(t,_,a)
> Udeclared identifiers (все три).
> > char
> Function-style initializer appears to be a function
> definition
> > *
> Unexpected end of file found

Причем как в vc так и в gcc

> У меня первое подозрение и непонимание вызывает
> переопределние переменной a (если я правильно знаю
> синтаксис, то переходы на новую строчку ничего не значат,
> ведь так? Это, как я понял, исключительно для
> obfuscation?).

Никакое не переопределение. Это старый синтаксис аргументов. В скобках они просто перечисляются, после скобок указываются их типы.

> ЗЗЫ. А не кинешь ссылку на "аналогичное" (понимать бы еще
> что такое "спираль") на Perl. Не могу найти. Видимо, меня в
> те времена еще не було на форуме.
http://bugtraq.ru/cgi-bin/forum.mcgi?type=sb&b=6&m=93458

С тех пор я пробовал, ничего оно не удаляет - просто крутится :-)
Все компилится 12.10.06 00:07  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
Это C, а не C++
Расширение у файла должно быть .c, а не .cpp

D:\1212>cl ny.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

ny.c
Microsoft (R) Incremental Linker Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/out:ny.exe
ny.obj
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach