見出し画像

ツイッターに児ポをアップする方法

ツイッターに児ポをアップしたい……! どうもツイッターに児ポをアップしたい太郎です。みなさん、ツイッターに児ポをアップしたいですか?なんとツイッターに児ポをアップする方法があるらしいんですよ~ どうやればツイッターに児ポをアップできるのか、その謎を探るべく我々はアマゾ


画像に付加情報をつけるには


まずはこちらの俺のツウィートをご覧ください


ネタばれすると

①まず普通に辿って「かべけしてさいしょから」になります

②壁を消して最初からやると今度は「さいどあげろ」と出ます

③彩度を上げると赤文字で「透過部分を読め」と出ます

④透過率のある部分に色付けすると「画像をメモ帳で開いて出てきた問題に答えよ」と出ます

⑤画像をメモ帳で開くと問題が出てきます


すごくね?

いや、ファイルをバイナリで扱ってる人にとってはshift-jis仕込んだだけじゃんと思われるかもしれませんが、そこじゃないんです。

ツイッターに画像をアップすると本来なら余分な情報は消されるはずなんです!


PNGの仕組み


PNG(ピングと読むらしいがまぎらわしいので俺は脳内でプンゲと呼んでます)はチャンクと呼ばれるものの集まりで構成されており、その中のtEXTチャンクというものには文字どおりテクストを入れることができます。

が……! なんとツイッターにアップするとtEXTチャンクは自動的に消されます(ここは本来作者とか著作権とかを書く場所なのでこれはどうかと思う)。存在しないチャンクを作っても消されます。

この仕様はおそらくAPNG(アニメーションプンゲ)対策の産物かと思われます。昔はツイッターにAPNGをアップできたのですが、4つ同時に動いてしまい負荷がすごいとかでアップできなくなりました。APNGをアップすると最初の1フレームだけになりチャンク名が書き換えられ普通のPNGにされるようです。

俺は既存のチャンクにデータをつっこんでみました。チャンクの先頭にはデータ長を示す数字があるので、好きなだけデータをぶっこんでも全体は崩れず画像はちゃんと表示されます。でもツイッターにアップしようとするとだいたいエラーになります。余計な情報があるのがバレているようですね。

しかしいろいろ試した結果、ツイッターにバレないチャンクを発見しました。sRGBです。このチャンクはデータ部分が固定1バイトしかなく、余計な情報をつけたら本来なら真っ先にバレるはずですがなぜかうまくいきました。これは明らかにツイッターの手落ちですね~

ちなみにチャンクのケツにはデータの改ざんや欠損をチェックするための4バイトの数値があり、データの内容によって変動します。チャンクをいじるにはここを自分で計算する必要があります。crc32でググると実装方法が出てきます。


違う画像を表示させる


勘のいいバカならこの時点で気づいてしまったことだろう。「あれ?画像の中に画像を仕込めるんじゃね?」と。

例えば仕込むデータをHTMLにして、HTMLとして開くと別の画像が表示されるようにできるわけだ。

コード↓

<script type="text/javascript">
window.onload=function(){
var a,b;
b=document.body;
b.innerText="";
a=document.createElement("img");
b.appendChild(a);
a.style.width="100%";
a.style.height="100%";
a.src=*この部分にbase64化した画像データを入れる*
};
</script>

なぜこうしてるかというと、このスクリプトタグの外にはPNGの膨大なデータが存在しているわけだ。普通にHTMLで開くとそれが文字列で出てきて邪魔である。なのでbody内を ”無” にしてしまう。これは読み込まれてからやる必要があるのでwinndow.onload内で行う。後は関数からタグを生成しsrcにデータを入れれば画像だけ表示される。


つまり児ポをアップできるというワケよ


仕込む画像を児ポにすれば、ツイッターに潜在的児ポをアップできると言っても過言ではない。先に言っておくが普通はそんなことをするメリットは何もない。データの受け渡しがしたいだけならもっとスマートな方法があるだろう。この方法の意義、それはツイッター側は仕様上PNGに余計なデータはないと思ってることである。

もしバズった画像に児ポが仕込まれていたらどうだろう。バズった画像は多くの業者に保存される。しかしそれは開き方を変えるだけで児ポになるのだ。つまりパクツイするやつに児ポ保持の罪を着せることが可能となる。

ただしこの作戦には欠点がある。それは仕込むために自分もいったん児ポを保持しなければならないということだ。

つまり自分も死ぬ。アベシ!



いかがでしたか?


参考になったら筆者のトゥイッターをフォロー!
https://twitter.com/jagarikin


この記事が気に入ったらサポートをしてみませんか?