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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Вот тут не уверен 17.10.06 12:01  Число просмотров: 2121
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> точно ли у тебя в Makefile стоял <tab>, а не пробелы?
> Может быть, твой редактор автоматом заменяет <tab> на
> n пробелов?
Midnight Commander это был с дефолтными для федоры 4 настройками. Надо было конечно хексы глянуть, но я удовлетворился тем, что курсор прыгал через все пространство разом, а не посимвольно: во всех редакторах - верный признак таба.
<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-2021 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach