ニュース

技術書典4に行ってキマシタワー (1コメント)

kanata約9時間前に追加

技術書典4

技術書の祭典が2018年4月22日(日)@秋葉原UDXで開催決定!

どんどん規模が大きくなる技術書の同人誌販売イベント。

コミケ自体は未だに行ったことがありませんが、技術書典だけは4回目。過去3回分もブログに書いてた。

なぜかこのイベントはだいたい雨なのだけれど、今回は快晴。来場者は第一回と比べると、、、それはそれはスゴイ量になっていました。
もぅ秋葉原UDXをもってしても収まらなさそうですねw

この短時間にめっちゃ来てたんやなって

戦利品

20180422_techbookfest4.jpg

楽しかった。
これ以外に俺らの愛したセキュリティをpdfにて購入しました。
GWにゆっくり読もうっと。

待ち時間対策

たぶん、「待ち時間を最小にする」と「欲しい本が売り切れるリスク」を考えると開場一時間前くらいに行くのがよさそう…
でも次回このパターンでいけるかはもぅわかんない。たぶん更に人が増えると思われる。

ちなみに整理券を貰いますが、そのまま待機の順列に並ぶことができます(?)

jus共催 第35回またまためでたいシェル芸勉強会 に参加させて頂きました!

kanata15日前に追加

jus共催 第35回またまためでたいシェル芸勉強会報告 | 上田ブログ

null

jus共催 第35回またまためでたいシェル芸勉強会

2018年4月7日@さくらインターネットさんのセミナールームにて問題と解答:

LTしましたが、内容がアレだったので公開を見合わせております。

知見

毎回勉強になります。以下、自分用メモ

# 踊るpiyokangoさん
curl parrot.live

# 改行の調整(忘れてること多し)
cat hoge|awk NF

あと、peeコマンドめっちゃ便利(moreutils)

pee is like tee but for pipes. Each command is run and fed a copy of the standard input. The output of all commands is sent to stdout.
Note that while this is similar to tee, a copy of the input is not sent to stdout, like tee does.

感動

シェル芸始末書 @grethlenのお詫び状

https://hackmd.io/p/Bk3lBeSjz#/

著名なシェル芸人のぐれさんが海外で仕事されるとのこと。ご活躍を楽しみにしております。

超・記号オンリー難読化シェル芸

これにより難読化シェル芸の、難読化手法の一つが完成するに至った。歴史的瞬間。

濱せっく 出張版 #4 に参加させて頂きました!

kanata15日前に追加

濱せっく 出張版 #4 (2018/04/04 19:00〜)

濱せっくとは 横濱界隈のセキュリティエンジニアが運営している情報やスキルを共有し合うことを目標とするセキュリティ勉強会です。 今回は4度目の出張版です。 読み方:はませっく #### 対象者 セキュリティに興味のある方であれば、学生でも社会人でも無職の方でもどなたでも大歓迎です。 なお、横濱にお住まいでなくても参加できます。 ## 開催日時 * 2018年4月4日(水) * 18:30開場 / 19:00開始 * 21:00~21:30 終了見込み ## 会場 * レアルセミナールーム * 東京都新宿区西新宿1-3-13 (Zenken Pl...

知見

色んなツールを教えて頂きました。以下、気になったツール

puzzCode
https://github.com/aaaddress1/puzzCode

解析者の心を折りにくる難読化ツール

Buscador Investigative Operating System
https://inteltechniques.com/buscador/

OSINT特化のLinuxディストリビューション。素晴らしい。

ADRecon
https://github.com/sense-of-security/ADRecon

Active Directoryの調査ツール(OSINT)

maltegoのプラグイン
https://github.com/tampererer?tab=repositories

Recon-ng

Recon-ngの使い方 on @Qiita

katagaitaiCTF勉強会とシェル芸勉強会に参加させて頂きました!

kanata約1ヶ月前に追加

katagaitai CTF勉強会 #11 - 関東|med

katagaitai CTF勉強会 #11 - 関東|med : ATND

h2. 概要 * チームkatagaitaiの実施する,CTFに関する勉強会です.過去問...

yskさん

無線の話!無線の話!めっちゃ面白い。資料が神だった。
無線の基礎から教えてくれたので、めっちゃ解りやすい。
これ系の問題は苦手な数学がほぼ入ってこないので、頑張ればなんとかできそうな印象(できるとは言っていない)

GNU Radio必須

資料が公開されてますね!

bataさん

ChromeのJavascriptエンジンV8の中の話
めちゃめちゃ濃い内容。この内容理解できたらV8のメンテナになれるでコレ…

bataさんが解説する問題は、相変わらず遥か彼方にゴールが見える感じで遠い。。

jus & USP友の会共催 シェル勉強会 @関西(第34回いつも難しい問題ばっかり出す上田が真面目に考えた初心者用シェル芸勉強会)

jus & USP友の会共催 シェル勉強会 @関西(第34回いつも難しい問題ばっかり出す上田が真面目に考えた初心者用シェル芸勉強会)で大阪にお邪魔しました | 上田ブログ

問題
https://b.ueda.tech/?post=20180317_shellgei_34

youtube
https://t.co/tuZhLj6zEu

togetter
https://togetter.com/li/1209705

LT

特に面白いと思ったのは以下

ターミナルでテトリスが動いてる・・・!

記号オンリー難読化シェル芸・・・!


知見を得た

以下はよく忘れて毎回ググるのでメモしておく

  • sedで引っ掛けたものを置換対象に含めるには&を使う
$ echo abc123 |sed 's/abc/&def/g'
abcdef123
  • awkのNR(行番号)

  • awkで空行の削除

$ awk 'NF'

Google Home mini を天井に設置する

kanata約1ヶ月前に追加

動機

天井と話たいんじゃ。天井から流れてくる音楽聞きたいんじゃ。

前提

天井がダクトレールなのが前提。

そうじゃないと後述のライトが取り付けられない。

必要な物の購入

1灯スポットライト・2環ウッドシェード (ダクトレール用)

これ

partsC1.jpg

1灯スポットライト・2環ウッドシェード (ダクトレール用) 【シェードカラー:ナチュラル】

クロームメッキのボディに木製2連シェードを組み合わせた、ダクトレール接続のスポットライト。光を当てたい部分をスポット照射しながら、天井や壁に映る陰影も楽しむことができます。 ...

パナソニック(Panasonic) セパラボディ/P WH4101PK

これ

partsB1.jpg

電球の口(E26)をコンセントに変換するやつ。amazonで買った。

100円ショップのSeriaで買ったスマートフォンスタンド

これ

partsA1.jpg

セリアで買った。一番安いけど、いちばん重要。8本の足を好きなように曲げられる。

partsA2.jpg

いろいろ応用ができる。

参考

【100均検証】使い方はあなた次第! あまりにも自由度の高い「マルチスタンド」の使い方をイロイロ考えてみた結果...

元気ですかーっ! プロレスの世界には「 ホウキ相手でもプロレスができる 」という名言がありますが、100均研究の世界にも「どんな100円グッズでも面白おかしく転がして紹介することができる」という格言があるとかないとか。しかし今回...... 面白おかしく転がすことができませんでした!

組み立て

簡単

  1. ライトの口(E26)にコンセントにするやつを装着
  2. Google Home mini をスマホスタンドでガバっとカバーする
  3. ライトと Google Home mini を合体。柔軟に曲がるスマホスタンドをいい感じに調整するとライトを垂直にしても落ちてこない程度に固定できる。

完成

はい完成!最&高!

combination2.jpgcombination3.jpg
combination1.jpgcombination4.jpg

Javaの混沌とした名称の整理

kanata約1ヶ月前に追加

Javaの混沌とした名称の整理

まず、ざっくりこんな感じ

Java_Platforms.png

ざっくりとした呼び方 ちゃんとした呼び方 その中のJDK 対応するライブラリ群 備考
- - JDK 1.0 -
- - JDK 1.1 -
Java2 J2SE 1.2 JDK 1.2 -
Java3 J2SE 1.3 JDK 1.3 J2EE 1.2
Java4 J2SE 1.4 JDK 1.4 J2EE 1.3
Java5 J2SE 5.0 JDK 1.5 J2EE 1.4
Java6 Java SE 6 JDK 1.6 JavaEE5
Java7 Java SE 7 JDK 1.7 JavaEE6 OpenJDKはJava7相当
Java8 Java SE 8 JDK 1.8 JavaEE7
Java9 Java SE 9 JDK 1.9 JavaEE8
Java10 Java SE 10 JDK 1.10? JakartaEE9?

2018/3時点の名称に対する混沌とした状況

名称に関連した解りづらいこと

普通システム開発する時は、JavaEE(JakartaEE)のインストールは必要ない

なぜならWebコンテナ(TomcatやGrassfish、Websphere、JBOSSなど)が実装しているから。
つまり、TomcatをインストールすればJavaEEのAPIが使えるということ。

JavaEEを直接インストールする機会があるのは、基本的にWebコンテナそのものを開発する人なんかに限られるはず。

ちなみにOracleのサイトに行くとわかるけど、JavaEE SDKという名前になっていて、SDKという言葉でまた混乱してしまう。
忘れようSDKは。これはJavaEEなんだ。

JavaとJavaEEの対応バージョンが一致していない

伝統。JavaEEの方がバージョン番号が一つ少ない(Java9に対応しているのはJavaEE8まで)

触れてないこと

JavaME

組み込みの人以外は気にしなくてよい

JavaFX

忘れよう

OpenJDK

Java7相当らしい


Java全般の情報→Java

katagaitai CTF勉強会 #10 - 関東|med に参加させて頂きました!

kanata約1ヶ月前に追加

katagaitai CTF勉強会 #10 - 関東|med : ATND

チームkatagaitaiの実施する, に関する勉強会です.過去問を解きつつ技術解説をします. 学生~社会人若手の方を対象にわいわいやりたいと思ってます.

trmrさんの暗号の話

電力解析による暗号処理へのサイドチャネル攻撃が大変面白かった

基本的には

  • 同じ処理したら同じ電力消費のグラフになる
  • bit反転(変化)する際に(そうでない場合と比べて)電力が多く消費される

ぐらいの特性から、目的のビット列を求めるのは、
聞くと「なるほど~」と思うんだけどそこに至るまでの手法を考えた人がスゴイわ。。
物理と数学の融合感ある。

ChipWhispererというツールで全部できちゃうけど、やってくれるのはAESの鍵取得だけなので、動作原理を理解していないと応用がきかない

CTFerのランク

ちょっと面白かった。以下のレベル分けて呼称されている。
わかりみが深い

  1. CTF初心者
  2. 中級者
  3. プロ
  4. 自称CTF初心者

eshihoさんの暗号の話

しほプロの暗号のお話

RSA暗号の買得手法の一つ、Coppersmith's Method のお話
数学に明るくないので、めっちゃ難しく、死 and Die だった。
(ガチ勢には、大変わかりやすい説明だったと思われる)

暗号ガチ勢怖い

頂きました

ノートを頂きました。コレ知ってる、えぇやつやん。ありがとうございます。

第33回めでたいシェル芸勉強会/オープンソースカンファレンス2018 Tokyo/Spring に参加させて頂きました!

kanata約1ヶ月前に追加

jus共催 第33回めでたいシェル芸勉強会

以下に綺麗にまとめてくださっています。毎回難しいけれど、今回も難しくて死んだ。

jus共催 第33回めでたいシェル芸勉強会の報告 | 上田ブログ

null

ちなみに私がLTしたやつはコレです。

濱せっくで発表したのと同じもの

オープンソースカンファレンス2018 Tokyo/Spring

東京で春・秋にやるカンファレンス、無料でいろいろ聞けて良い。場所はめっちゃ遠い。
https://www.ospn.jp/osc2018-spring/

オープンソースカンファレンス2018 Tokyo/Spring - オープンソースの文化祭!

オープンソースの最新動向に関する展示・セミナーイベント。参加無料。

沢山頂きました!ありがとうございます…!

20180224_OSSC2018Spring.jpg

特に気になったもの

Gentoo入門

Gentoo愛を感じた

OSSと脆弱性管理

かんべさん面白い人だ…

CPU脆弱性「Meltdown/Spectre」の件はアレですよね。みんなさん一家言あるかと思います。。
個人的にはパッチいつ当てる?当てるの?よりも、性能に影響でる方が気になっており。
ギリギリで日次バッチが完了してるシステムとか、そういうやつ世に沢山ありますよね…?
それにパッチ当てちゃうと、そらもぅアレですよ。大パニックですよ。
じゃあCPU交換だ!なんてするわけもなく、、、

世間の盛り上がりとは関係なく、冷静にCVSSのポイントをベースにパッチの適用有無・時期を判断できるような土壌ができればいいなと願っています。

プラレールで全加算器

最高!

元祖 濱せっく #1 - HamaCTF想定解

kanata4ヶ月前に追加

CTF Writeup HamaCTF

2017.12.2 元祖 濱せっく #1で開催されたCTFの想定解です。

問題

エクササイズ

復号してね。シェル芸でできるよ。
2n,13,rev,64

01011000001100000011001101011010001100010101001001101101010011000110110001000001010100010111001001101101011001100110000101000101010010000100000101001000010011000110011101010011010101000100011000001010

全てがFになる

これから何かわかりますか?

f.zip

難読化シェル芸1

解読してみましょう

NandokukaShellGeiSleeps.zip

大サービス!フラグの一部を教えちゃう!

38}

zlib

この中にzlibされたフラグが埋もれています。

zlib.zip

sign

以下のメッセージと sign.zip から何かわかりますか?

9:14 PM 05 AUG 16 Edward Snowden
b7bb840ece86d44c0fb83da6da0af8a3eeb45946aa141fa44cbc94436e1d5ccd

難読化シェル芸2

解読してみましょう

NandokukaShellGeiInqAns.zip

大サービス!フラグの一部を教えちゃう!

fi}

想定解

暇だったら想定解見る前にチャレンジしてみてクレメンス

記号と1,2,A,zでだけで作る難読化シェル芸

kanata4ヶ月前に追加

結果

A=$(. 2>&1);A=${A##*.};${A:$((++z*++z*++z*z-z+++z)):$((z=z^z||++z))}${A:$((++z*++z---z)):$((z=z^z||++z))}${A:$((++z*++z*z)):$((z=z^z||++z))} -- {z..A};${@:$((++z*++z*++z---z+++z---z+++z---z)):$((z=z^z||++z))}${@:$((++z*++z*++z---z+++z---z+++z)):$((z=z^z||++z))}${@:$((++z+++z+--z)):$((z=z^z||++z))}${@:$((++z*++z*++z---z+++z---z)):$((z=z^z||++z))}

ちゃんとdateが実行される

$ A=$(. 2>&1);A=${A##*.};${A:$((++z*++z*++z*z-z+++z)):$((z=z^z||++z))}${A:$((++z*++z---z)):$((z=z^z||++z))}${A:$((++z*++z*z)):$((z=z^z||++z))} -- {z..A};${@:$((++z*++z*++z---z+++z---z+++z---z)):$((z=z^z||++z))}${@:$((++z*++z*++z---z+++z---z+++z)):$((z=z^z||++z))}${@:$((++z+++z+--z)):$((z=z^z||++z))}${@:$((++z*++z*++z---z+++z---z)):$((z=z^z||++z))}
20171218日 月曜日 19:00:55 JST

使ってる文字種は…

$ echo 'A=$(. 2>&1);A=${A##*.};${A:$((++z*++z*++z*z-z+++z)):$((z=z^z||++z))}${A:$((++z*++z---z)):$((z=z^z||++z))}${A:$((++z*++z*z)):$((z=z^z||++z))} -- {z..A};${@:$((++z*++z*++z---z+++z---z+++z---z)):$((z=z^z||++z))}${@:$((++z*++z*++z---z+++z---z+++z)):$((z=z^z||++z))}${@:$((++z+++z+--z)):$((z=z^z||++z))}${@:$((++z*++z*++z---z+++z---z)):$((z=z^z||++z))}'|grep -o .|sort -u|tr -d '\n'
 #$&()*+-.12:;=>@A^z{|}

#$&()*+-.12:;=>@Az{|} だけ。理論上はこれで何でも書ける。

解説

基本原理

こんな感じで変数展開を駆使する

$ a="abcdefghijklmnopqrstuvwxyz"
$ ${a:3:1}${a:0:1}${a:19:1}${a:4:1}
2017年 12月 17日 日曜日 17:24:21 JST

それでは、実際に順を追ってやってみましょう。

記号と1,2だけでアルファベットを得る

記号だけでアルファベット得るには、以下のエラーメッセージを使います。

$ .
-bash: .: ファイル名が引数として必要です
.: 使用法: . filename [arguments]

エラーメッセージは、標準エラー出力の方にでるので標準出力に向けるよう1と2を使ってリダイレクトします。
(この後1と2は使いません)
編集結果は変数に入れます。Aとzしか使えない縛りなので、ここではAを使います。

$ A=$(. 2>&1);
$ echo $A
-bash: .: ファイル名が引数として必要です .: 使用法: . filename [arguments]

使っているディストリや言語環境でメッセージが異なったりします。
そのため、変数展開で変化のない箇所だけ取り出します。

$ A=${A##*.};
$ echo $A
filename [arguments]

アルファベットaefgilmnrstuを得ることができました。
これからコマンドを実行するには、bashの 変数展開を使います。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
f i l e n a m e [ a r g u m e n t s ]

変数展開を利用すると、この文字列を切り出すsubstringのような機能を実現できます。この配列からlsの実行は、以下でできます。

${A:3:1}${A:19:1}

さて、このままだと使えるアルファベットが限定されています。dateもできませんし、echo,grep...よく使うコマンドも大半が利用できません。なんとか使えるアルファベットを増やす必要があります。

ブレース展開でアルファベット小文字を得る

使えるアルファベットを増やすには、ブレース展開を使うのがよさそうです。Aとzだけでアルファベットを全て得られます。

$ echo {A..z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [  ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z

これを変数に入れればいいですね。ただ直接入れられません。echoとかで出力した結果を変数に入れる必要があります。
あ。。。echoが使えませんね。使えるアルファベット(aefgilmnrstu)からechoの代替を探しましょう。

正解は・・・!これ

$ set -- {z..A}

さっきの変数展開を駆使して、setを実行します。実行結果は、なんと位置パラメータに入る仕様です。

$ ${A:19:1}${A:4:1}${A:18:1} -- {z..A}
$ echo $@
z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

やったね!これでdateも実行できるはずです。試してみます。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
$ ${@:23:1}${@:26:1}${@:7:1}${@:22:1}
20171218日 月曜日 19:22:14 JST

できましたね!まだ終わりじゃないです。

数字使っている所をなんとかする

まだ数字が入っている所がありますね。
これを何とかしましょう。もう一つの文字zをここで変数として使います。

算術式展開 を使います。数字を一切使わずに目的の数値を計算して出力します。

しんどいのは、一度計算に利用した変数zは、0に戻ることもなく、そのまま次の処理に引き継がれることです。

こんな感じで計算しておりますが、前提として変数zの初期値が1であったり、0であったりする必要があります。

$((z=z^z))                           #  0 自分自身でXORすると0になる。何回実行しても0。
$((z=z^z||++z))                      #  1 なんかよくわかんないけど1になる。何回実行しても1。
$((++z*++z---z))                     #  4 変数zの初期値が1前提
$((++z+++z+--z))                     #  7 変数zの初期値が1前提
$((++z*++z*z))                       # 18 変数zの初期値が1前提
$((++z*++z*++z*z-z+++z))             # 19 変数zの初期値が0前提
$((++z*++z*++z---z+++z---z))         # 22 変数zの初期値が1前提
$((++z*++z*++z---z+++z---z+++z---z)) # 23 変数zの初期値が1前提
$((++z*++z*++z))                     # 24 変数zの初期値が1前提
$((++z*++z*++z---z+++z---z+++z))     # 26 変数zの初期値が1前提

全部載せるのが大変なので、dateで使う数値だけに絞っています。

調整して完成!

そんなわけで、まとめるとこんな感じ

A=$(. 2>&1);                                              # .のエラーメッセージを変数に格納
A=${A##*.};                                               # エラーメッセージの環境依存の無い箇所だけ抽出
${A:$((++z*++z*++z*z-z+++z)):$((z=z^z||++z))}             # s
${A:$((++z*++z---z)):$((z=z^z||++z))}                     # e
${A:$((++z*++z*z)):$((z=z^z||++z))} -- {z..A};            # t -- {z..A}
${@:$((++z*++z*++z---z+++z---z+++z---z)):$((z=z^z||++z))} # d
${@:$((++z*++z*++z---z+++z---z+++z)):$((z=z^z||++z))}     # a
${@:$((++z+++z+--z)):$((z=z^z||++z))}                     # t
${@:$((++z*++z*++z---z+++z---z)):$((z=z^z||++z))}         # e

経緯

SECCON2017オンライン予選問題 Powerful_Shell の難読化最後の部分と

${;}=+$();${=}=${;};${+}=++${;};${@}=++${;};${.}=++${;};${[}=++${;};${]}=++${;};${(}=++${;};${)}=++${;};${&}=++${;};${|}=++${;};${"}="["+"$(@{})"[${)}]+"$(@{})"["${+}${|}"]+"$(@{})"["${@}${=}"]+"$?"[${+}]+"]";${;}="".("$(@{})"["${+}${[}"]+"$(@{})"["${+}${(}"]+"$(@{})"[${=}]+"$(@{})"[${[}]+"$?"[${+}]+"$(@{})"[${.}]);${;}="$(@{})"["${+}${[}"]+"$(@{})"[${[}]+"${;}"["${@}${)}"];"${"}${.}${(}+${"}${(}${|}+${"}${(}${)}+${"}${(}${)}+${"}${)}${|}+${"}${)}${&}+${"}${(}${+}+${"}${&}${@}+${"}${+}${=}${+}+${"}${|}${)}+${"}${+}${=}${=}+${"}${[}${]}+${"}${)}${@}+${"}${+}${+}${+}+${"}${+}${+}${]}+${"}${+}${+}${(}+${"}${.}${@}+${"}${[}${]}+${"}${&}${=}+${"}${+}${+}${[}+${"}${+}${+}${+}+${"}${+}${=}${|}+${"}${+}${+}${@}+${"}${+}${+}${(}+${"}${.}${@}+${"}${.}${|}+${"}${(}${|}+${"}${+}${+}${=}+${"}${+}${+}${(}+${"}${+}${=}${+}+${"}${+}${+}${[}+${"}${.}${@}+${"}${+}${+}${(}+${"}${+}${=}${[}+${"}${+}${=}${+}+${"}${.}${@}+${"}${+}${+}${@}+${"}${|}${)}+${"}${+}${+}${]}+${"}${+}${+}${]}+${"}${+}${+}${|}+${"}${+}${+}${+}+${"}${+}${+}${[}+${"}${+}${=}${=}+${"}${.}${|}+${"}${+}${.}+${"}${+}${=}+${"}${)}${.}+${"}${+}${=}${@}+${"}${[}${=}+${"}${.}${(}+${"}${(}${|}+${"}${(}${)}+${"}${(}${)}+${"}${)}${|}+${"}${)}${&}+${"}${.}${@}+${"}${[}${]}+${"}${+}${=}${+}+${"}${+}${+}${.}+${"}${.}${@}+${"}${.}${|}+${"}${&}${=}+${"}${[}${&}+${"}${+}${+}${|}+${"}${(}${|}+${"}${+}${+}${[}+${"}${.}${(}+${"}${)}${@}+${"}${]}${+}+${"}${[}${|}+${"}${[}${|}+${"}${.}${|}+${"}${[}${+}+${"}${+}${@}${.}+${"}${+}${.}+${"}${+}${=}+${"}${|}+${"}${&}${)}+${"}${+}${+}${[}+${"}${+}${=}${]}+${"}${+}${+}${(}+${"}${+}${=}${+}+${"}${[}${]}+${"}${)}${@}+${"}${+}${+}${+}+${"}${+}${+}${]}+${"}${+}${+}${(}+${"}${.}${@}+${"}${.}${|}+${"}${)}${+}+${"}${+}${+}${+}+${"}${+}${+}${+}+${"}${+}${=}${=}+${"}${.}${@}+${"}${)}${[}+${"}${+}${+}${+}+${"}${|}${&}+${"}${.}${.}+${"}${.}${|}+${"}${]}${|}+${"}${+}${.}+${"}${+}${=}+${"}${|}+${"}${&}${)}+${"}${+}${+}${[}+${"}${+}${=}${]}+${"}${+}${+}${(}+${"}${+}${=}${+}+${"}${[}${]}+${"}${)}${@}+${"}${+}${+}${+}+${"}${+}${+}${]}+${"}${+}${+}${(}+${"}${.}${@}+${"}${.}${[}+${"}${&}${.}+${"}${(}${|}+${"}${(}${)}+${"}${(}${)}+${"}${)}${|}+${"}${)}${&}+${"}${+}${@}${.}+${"}${.}${(}+${"}${(}${|}+${"}${(}${)}+${"}${(}${)}+${"}${)}${|}+${"}${)}${&}+${"}${+}${@}${]}+${"}${.}${[}+${"}${+}${.}+${"}${+}${=}+${"}${+}${@}${]}|${;}"|&${;}

難読化されたPowershellの問題

と、Masato Kinugawaさんの以下を見て感銘を受けまして、何とか記号だけでシェル芸したい!と思ったわけなんです(結局記号だけは無理だったw)

1 2 3 ... 11 (1-10/109)

他の形式にエクスポート: Atom

クリップボードから画像を追加 (サイズの上限: 100 MB)