tex 自分用メモ

texの自分用メモ(他の人の役にも立つかもしれない)

自分用のメモとして書くけれど、見る方もいるかもしれない(いないと思う)ので少し丁寧に書いておく。自分はだいたい、実験レポートを書く時にtexを使うので内容は偏っていると思う。

1.pdf,pngなどをページの大きさに拡大したい時

これは調べてもあんまり出てこなかった。

自分が使ってる具体的な例をあげると、レポートの表紙をwordなどで配られた時、これをpdfにした後、毎回pdf結合をするのがめんどくさい。なので、ページの大きさに拡大して、挿入したいと思うことがある。下にコードを書く。

\begin{document}
     \enlargethispage{200truemm}
     \vspace*{-1in}
     \vspace*{-\topmargin}
     \vspace*{-\headheight}
     \vspace*{-\headsep}
     \vspace*{-\topskip}
     \noindent\hspace*{-1in}\hspace*{-\oddsidemargin}
     \includegraphics[width=\paperwidth,height=\paperheight]{hogehoge.pdf} %ここに貼りたい、pdfとかのファイル名
     \thispagestyle{empty}\addtocounter{page}{-1}\newpage
     \enlargethispage{200truemm}
\end{document}

こんな感じ

f:id:Bigdrea6:20201024195000p:plain

2.数式モード?の中で文字が斜体になるのを直す

$$内で数式を書くときや、eqnarray内で書いている時に、単位とかその他の場合でも文字(英字)を書くと斜体になります。斜体ではダメ出しを食らうので普通の形に直したい。

 \rm{} %{}内に書きたい文字 

ソースコードを綺麗に貼りたい場合はjlisting.sty。既存の記事がたくさんあるから書かない。いろいろする。

3.pdfの圧縮(tex自体とは少し違う)

gsを使ってpdfを圧縮する。

コマンド

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf

output.pdf : 圧縮したpdfの名前
input.pdf : 圧縮したいpdfの名前 

圧縮にはいろんなモードがあります。(/ebookがそれに該当する)

自分は/ebook以外使ったことないので他は知りませんが調べれば分かると思います。

 

以上。

HACON CTF 2020

HACON CTF に参加した

急遽言われて、参加した。なんかいろいろサイトがあれでうーんって感じだったけど、参加できてそれなりに解けて楽しかった。簡単なCTFの一個らしい。

チームはbodhiで三人で参加しました。ポイントは915で順位は67位。個人では5問解いて355入れました。

BAsic (Networking:50pt)

調べるだけ。

flag:HACSEC{631}

Indirect Broadband Mac address (Networking:80pt)

調べるだけ。

flag:HACSEC{token_rings} (多分)

Robo Returns (Web:75pt)

URL:http://web.hac-security.com/

roboと問題にあるのでrobots.txtと推測。URLにいれると出てきた。

f:id:Bigdrea6:20200926202155p:plain

hacsecとある "Disallow:/exec/obidos/hac-sec/johnwick/admin-login/"について調べるとDVDの商品に飛んだ。この俳優さん?が答え。

flag:HACSEC{johnwick}

Wizard (Forensics:75pt)

pngファイルが配布されたが、開けない様子。適当なバイナリエディタで見てみると、ファイルフォーマットが壊れていた。ちゃんとしたやつに書き換えてあげて、保存して開く。

flag:HACSEC{w1Z4rD_u53_M4giC_byT3S}

BEEP (Forensics:75pt)

モールス信号が流れる、wavファイルが渡される。手で復号しようとしたけど、無理なので見つけたサイトに頼る。

morsecode.world

flag:HACSEC{M0RS3_C0D3_1S_W4Y_T0O_CONV3N7ION4L}

 

途中まで行った問題(ctfと関係ない話も)
THE MATRIX (Forensics:100pt)

pngファイルが渡される。問題分にcrackしろみたいなのがあったので、これになんか埋め込まれてるのかなと思ってzstegすると、zipファイルがある?(これ自体がzip?)様子。

unzipすると鍵付きのzipと.note.txtが出てくる。鍵はもらえなかったので、JtR+hashcatで開けようとしたのですが、hashcatがうまく行かずできませんでした。

 

hashcat、誰か詳しい人教えて下さい。

JtRで出たhashをファイルに書き込んで、hashcatに投げるとこのエラーが出て読み込まれません。いろいろ調べましたが、解決しませんでした。

エラー文:

Hashfile 'ファイル名' on line 1 ($pkzip...d62e52c2cf35ac7e513dfd*$/pkzip2$): Hash-value exception
No hashes loaded.

追記:mの引数の問題だったようです。正しい引数なら結果を得ることができました

CSAW CTF Quals 2020 writeup

CSAW CTF Quals 2020に参加しました

夏休み中の部活動ということでbodhiというチームから3人(多分)で参加しました。チームでは255ptで354位でした。

久々に解けた(ちょっと)CTFでwriteupとして書いて良さそうな内容量なので書こうと思いました。50ptは全部ときたかった。割と途中まで行って、そこからわからなくなったものもあった。

Crypto:Perfect Secrecy (50pt)

問題文:Alice sent over a couple of images with sensitive information to Bob, encrypted with a pre-shared key. It is the most secure encryption scheme, theoretically...

渡されたファイル:image1.png , image2.png

f:id:Bigdrea6:20200913193605p:plain f:id:Bigdrea6:20200913193615p:plain




 

 

この問題と同じ問題が過去のCTFにあったようで以下のwriteupを参考に行いました。

Volga CTF 2017:VC(Crypto 50)

compare -compose src image1.png image2.png output.png

できたoutput.pngがこちらです。

f:id:Bigdrea6:20200913201014p:plain ←これはbase64なのでCyberChefになげてdecodeします

flag{0n3_t1m3_P@d!}

この方法初めて知りましたが、おもしろいですね。

Web:widthless (50pt)

問題文:Welcome to web! Let's start off with something kinda funky :)

渡されたURL:http://web.chal.csaw.io:5018

これは一緒に参加していた友達が解いてたもので、途中から一緒にやり始めました。最終的には全員でやった。

 この問題がZero-width space(詳しくはゼロ幅スペース - Wikipedia)っていうのは分かってて、どこの文字列にそれが隠されてるのかいまいちっていう感じという様子でした。URLから飛んで開発者ツールで見ると、怪しい文字列が。

f:id:Bigdrea6:20200913202224p:plain

8203というのはUnicodeでZero-width spaceを表しているようです。というより、これ全部ゼロ幅のやつです。

調べて見たところ一番やりやすそうなのはこれでした。

HackIT CTF 2018 - Get Going - こんとろーるしーこんとろーるぶい

これにそって虚無をコピペしていきます。(consoleでは赤い点で表示されます)

コードを実行して得られたものはb'YWxtMHN0XzJfM3o='これをbase64でdecodeすると、alm0st_2_3zが出てきました。これで終わりだと思っていろいろ入れてみるのですが通りません。ここからはguessです。

サイト上のSignupする部分に手に入れたkeyを入れます。すると以下のように変化します。

f:id:Bigdrea6:20200913203621p:plain←このURLをもとのURLの後ろに貼り付けます。

<pwd>には手に入れたkeyを入れます。するとサイト自体が大きく変わります。

ここからもう一度同じことをします。これは違う友達がやってくれました。

得られたものは755f756e6831645f6d33。変換してu_unh1d_m3 。これをもう一度Signupの欄にいれます。もらったURLを先程貼り付けたURLを消して貼りなおします。

URL:http://web.chal.csaw.io:5018/19s2uirdjsxbh1iwudgxnjxcbwaiquew3gdi/alm0st_2_3z/u_unh1d_m3

flag{gu3ss_u_f0und_m3}

フラグにguessって書いてるけどこれは流石にひどい気がする。めんどくさかったし。

解ききれなかったけど多分途中まで行けてたやつ

Crypto:modus_operandi(100pt)

問題文:Can't play CSAW without your favorite block cipher!

nc crypto.chal.csaw.io 5001

これはブロック暗号ECB、CBCどちらで暗号化されてるかを当て続けるという問題でした。途中から追加されたHintで<200とあったので200回未満当てたらいいということらしいです。始め一人でやってましたが、コードとかうまく書けなくて友達が送ってくれたコードをもとにやってました。

以下、自分のコードではないので載せませんが簡単な判別方法だけ書いておきます。

暗号化の内容については暗号利用モード - Wikipediaで。

まず、plaintext:1234567890abcdef1234567890abcdefと十分な長さのある平文を入れてあげます。返される暗号化された文、ciphertext[:32]==[32:64]のときこの暗号化はECBであると言えます。これを用いて判別していくのですが、どうにも175回目で通信が途絶えてしまいます。そこで手動でやってみましたが、結果は変わりませんでした。どうやるのが正解なのかよくわからなかったです。

 


 

VolgaCTF 2020 writeup

VolgaCTF2020に参加しました

CTFへのやる気が最近出てきてて、その勉強の一環としてこのコンテストに参加しました。d4wnin9が一緒にでてくれました。ありがたい。

チーム名はbodhiです。これからも頑張りたいと思います。

解いた問題

cryptoの一問だけなんで書こうか悩みましたが、あとあと自分の役にも立ちそうなので書こうと思います。

解いたのはNoname[100]これ絶対100いらん。他の50の問題とかより簡単だった。なんならこれが一番簡単かも。

Noname[crypto,100]

[問題文]I have Noname; I am but two days old.

pythonのファイルと暗号化されたflagが渡されます。

[encryptor.py]

from Crypto.Cipher import AES
from secret import flag
import time
from hashlib import md5

key = md5(str(int(time.time()))).digest()
padding = 16 - len(flag) % 16
aes = AES.new(key, AES.MODE_ECB)
outData = aes.encrypt(flag + padding * hex(padding)[2:].decode('hex'))
print(outData.encode('base64'))

 [encrypted] 

uzF9t5fs3BC5MfPGe346gXrDmTIGGAIXJS88m
ZntUWoMn5fKYCxcVLmNjqwwHc2sCO3eFGGXY
3cswMnO7OZXOw==

 

pyhonの内容でわかること

・time.time()で出た値をmd5変換する ← これがAES暗号のkey

・AESでエンクリプションしたflagをさらにbase64エンコードする

ほかの行はあまり読まなくていいと思う

 

調べる

time.time()の値がどのようなものか知らなかったので調べてみる

調べた結果

1970年1月1日0時0分0秒から今までの時間を秒単位で表す 

 今何秒かわからなかったのでコードを書いて実行すると、1585358796(2020/3/29/10:35くらい)でした。keyで取り出した値はいつかわからないのである程度の範囲を作ることにした。  [1580000000,1585300000]

この範囲は結構適当な計算。しかも書いてて気づいたけどtwo days oldってことは2日前に作られたってことじゃね?

無駄なことをしてしまいました...

 

復号していく

書いたコードはこちら

from Crypto.Cipher import AES
from hashlib import md5
import base64



for i in range(1580000000,1585300000):
    key=md5(str(i)).digest()

    enc='uzF9t5fs3BC5MfPGe346gXrDmTIGGAIXJS88mZntUWoMn5fKYCxcVLmNjqwwHc2sCO3eFGGXY3cswMnO7OZXOw=='

    decipher=AES.new(key,AES.MODE_ECB)

    dec=decipher.decrypt(base64.b64decode(enc))
    print(dec)

・for文でさっき作った範囲を回す

・keyを自分で作って復号する

    実行する

   python decode.py | grep -a Volga
VolgaCTF{5om3tim3s_8rutf0rc3_i5_th3_345iest_w4y}

ちゃんと出てきました。grepするときに-aしていないとうまいこといかなかったです。

最後に

今回のコンテストは今までと全く違うくて楽しかった。

画像処理が全くわからなかったのでそれを次は勉強していきたい。

結構あともうちょっとっていう問題もあったので、writeup見て勉強していきたいと思います。

ありがとうございました。

 

 

Texstudio(atomのtexも)復活

やっとのことでtexを書く環境を元に戻すことに成功した

もう、学校のテストなどで僕の心はすり減っております。

なにがあったのか

去年の年末、僕は学校のレポートをtexで書こうとしていました。

久々にtexを使うか〜とatomを立ち上げ、いつもどおりの書式で書き、コンパイルした瞬間、logがエラー文で覆い尽くされました。

その中には\NeedsTeXFormat{pLaTeX2e}という文字があったと思います。

とりあえず調べてみました

・使っていたのはuplatex

atomの環境はlatex関連のpackageほぼ全部、latexの設定も完璧にしていた(はず。だって動いてたしね)。

だからplatex2eなんて知らない。上記のエラー文をぐぐってみた。

結果をかんたんにまとめると、

 ・uplatexで書くと宣言していながら、設定が別の言語になっている。

ということでした。しかし、僕はそこが大丈夫だったんですよね。

意味がわからない。atomが悪いのかと、texstudioでも見てみましたが同じ結果。まあ当たり前ではある。

イライラして、治すの一回諦めた。

二ヶ月後...

テスト期間中、少し気晴らしにPCを開いた僕。texがバグっているの思い出す。なんでそんなことしようと思ったかはわからないけどtexstudioのコマンドの設定とかをuplatexを全部platexに直したんですよね。そしたらなんと治っちゃた。

意味がわからない。

今回は、ただ意味がわからないっていうのを言いたかっただけです。

texstudioのコマンド設定画面

f:id:Bigdrea6:20200207203855p:plain

 

atomのtree-viewが表示されなくなった

tree-viewが表示されなくなった

atomをバージョンアップした途端にtree-viewが表示されなくなった。

多分僕以外にもなった人は何人かはいるんじゃないだろうか。

調べても出てこなかったので、僕がまとめていきたいと思います。

(ヒントはあっても最終解決法は載ってなかったりしたんだよね...)

使用環境

OS:ubuntu18.04

atomのバージョン:1.40.1(以前は1.26.0とかだったと思う)

とりあえず解決策

以下の作業を行う

1,atom上で開いているすべてのファイルを閉じる

2,terminalで"$ atom --clear-window-state"を実行する。

3,atomが立ち上がるが閉じる。

4,terminalで"$ atom --safe"を実行する。

5,atomが立ち上がるが閉じる。

 

これが一連の流れ。これが本当に必要なのかはわからない。

解決したっていっていいのかなぁ?

最後に仕上げ。とりあえずterminalから"$ atom . ファイル名"で開いて下さい。

今までは"$ atom ファイル名"で行けてたと思いますが、上記の開き方でないと、tree-viewを一発で表示させることはできません。ある手順を踏めば今までの開き方でもtree-viewは見れます。が二度手間です。

とりあえずGithubのところに行けばヒントが見つかる

Github製ですから、当たり前のごとく問題点があれば、それがGithubatomのところに書かれています(説明雑くてすいません)。

僕はとりあえず、tree-viewを直しましたが、今度はHydrogenが動かなくなりました。めっちゃ腹たちます。

 

SCKOSEN 2019に参加しました

SCKOSEN 2019に参加しました

はじめに

10/26に石川高専主催のsckosen(高専セキュリティコンテスト)に明石高専Bというチーム名で初参加しました。

僕は2年で今年の4月からCTFに触れ始めました。(初心者です。)

4問、スコアを入れましたが、解説はしないと思います。

結果

20問中16問を解いて1510点で49チーム中6位でした。

初心者同士で作ったチームだったので、とてもいい結果だったと思います。

あと数分あれば2問の得点はチームメイトが追加できそうでした。

先輩がすごい活躍をしてくれたので、最後すごくスコアが伸びました。

【順位表】

f:id:Bigdrea6:20191026200117j:plain

 


感想とか

  • 僕は部活(週一)でCTFをやっていて、Root me(https://www.root-me.org)や9月ごろに開催されていたpicoCTFをといていました。(これも少しづつしか解けてないです。)
  • 今回解きながら特に実感したのは知識不足です。なので、解いたのはだいたい手作業でできるCryptoです。大体の50点問題は解けましたが。(投げるの別の人だっただけで)。 その他は調べながら進める、調べても手が動かない。こんな感じでした。なので、これからもっと力をつけて行きたいと思いました。

【問題一覧】

f:id:Bigdrea6:20191026200049p:plain

最後に

sckosenとても楽しかったです。来年も参加したいです。

他のCTFにもどんどん参加していきたいと思います。

話が変わりますが、ブログ自体書くのも初めてだったので拙い文章だったり、デザインが悪くて見づらいかもしれませんがご了承ください。