C
1#include <stdio.h> 2#include<string.h> 3#include<stdlib.h> 4#define LOOP 126 5 6int main(){ 7 char buffer[1024]; 8 int i = 0, j = 0, cry = 0, VALUE = 13; 9 10 printf("ROT_VALUE : "); 11 scanf("%d", &j); 12 13 printf("crypted : "); 14 scanf("%s", buffer); 15 16 printf("BruteForce_original :\n"); 17 18 for(VALUE = 1; VALUE <= j; VALUE++){ 19 printf("%02d : ", VALUE); 20 for(i = 0; i < strlen(buffer); i++){ 21 // cry = atoi(*(buffer + i)) + VALUE; 22 if((*(buffer + i) + VALUE) >= LOOP) 23 printf("%c", (*(buffer + i) + VALUE) - LOOP + 32); 24 else 25 printf("%c", *(buffer + i) + VALUE); 26 } 27 printf("\n"); 28 } 29}
プログラムはあまり関係がないのですが、一応載せておきます。
シーザー暗号をブルーとフォースで解読するものです。
平文 : you will make me happy
crypted : (|$-&vyy-znxr-zr-un}}(
これを、
BASH
1perl -e 'print "112\n(|$-&vyy-znxr-zr-un}}(\n"' | ./solve_caesar | grep happy 281 : yo#will make me happy 3 4echo '112\n(|$-&vyy-znxr-zr-un}}(\n' | ./solve_caesar | grep happy 581 : you will make me happy
ちゃんと、実行して動いているのですが、echoの方は問題がありません。
perl -e の方の実行結果がおかしく、"#" が入っています。
なぜでしょうか??
分かる方教えてください。
ちなみに、print を使った結果は、echoと同じく大丈夫でした。
Linux 64bit shell はBashではなくzshを使っています。
shellの種類はあまり関係はないと思います・・・・
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/14 11:31
2017/05/14 11:35 編集
2017/05/14 11:37
2017/05/14 11:38
2017/05/14 11:39
2017/05/14 11:40
2017/05/14 11:42
2017/05/14 11:42
2017/05/14 11:42
2017/05/14 11:43
2017/05/14 11:44
2017/05/14 11:49
2017/05/14 11:56
2017/05/14 11:57
2017/05/14 12:07
2017/05/14 12:07
2017/05/14 12:12
2017/05/14 12:16
2017/05/14 12:20
2017/05/14 12:30
2017/05/14 12:31