外付けメモリ

メモを取る習慣構築の為の実験的手段

Github cheatsheet

ようやくまとめるとこまで漕ぎつけた…

 

1.ローカルリポジトリを作る

 

自分の置きたい場所にファイルを配置する。

(E.g.) cd ~/Desktop

          mkdir hogefuga

          cd hogefuga

 

ここで必ずgit initする。

恐らくこれ忘れてsrc refspec master does not match anyみたいなエラー吐かれてしまった。

 

2.addしてcommit

1の工程を終えたら、次はお目当てのものを何か作った後にaddしていい感じにする。その後、コミットメッセージを添えていい感じに

 

touch hoge.txt

git add <filename>

git commit -m "time files like an arrow"

 

3.branch切る(よくわかってない)

git checkout -b <branch name>

 

4.github上に新しいリポジトリ

画面左にある緑ボタンを押して、あとはフォームの指示に従っていい感じに。その後、remoteしてローカルとすり合わせて?(要理解)、push

 

git remote add origin https://github.com/spokey/mynewrepository.git

 

git push -u origin master

 

git push origin mybranch

 

困ったときはgit statusでこまめに確認。これで必要最低限なんとか耐える。

 

https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners

上記リンクを参考にしたので、こまったらこれ見るかググるか各自対処すること。

CpawCTF Writeup Lv.1

CTFに初参戦した話

主題:ハリネズミ本が激ムズで、初心者殺しと聞き、きなこさんおススメのCpawCTFから始めることとする

 

 

 

[Misc] Test Problem

 

cpaw{this_is_Cpaw_CTF} を空白に入力するだけ。

 

[Crypto] Classical Cipher

 

→古典的なシーザー暗号は、三文字分アルファベットをずらすという代物である。今回は暗号文である暗号文: fsdz{Fdhvdu_flskhu_lv_fodvvlfdo_flskhu}

を翻訳してflagを取得するというもの。

Cでasciiを三文字分ずらすプログラム書いてたんだけど、今日開いたらなんか上手く動かん。

 

[Reversing] Can you execute ?

 

Linux環境で特定ファイルを実行するとflagが出てくるらしいのだが、マシン持ってない…

 

[Misc] Can you open this file ?

 

→fileコマンドでファイルの種類を調べて、特定のソフトウェアで開く。

open_me: Composite Document File V2 Document, Little Endian, Os: Windows, Version 10.0, Code page: 932, Author: v, Template: Normal.dotm, Last Saved By: v, Revision Number: 1, Name of Creating Application: Microsoft Office Word, Total Editing Time: 28:00, Create Time/Date: Mon Oct 12 04:27:00 2015, Last Saved Time/Date: Mon Oct 12 04:55:00 2015, Number of Pages: 1, Number of Words: 3, Number of Characters: 23, Security: 0

がっつりMicrosoft office wordって書いてあるやんけ。

 

[Web] HTML Page

 

→HTMLソースから、flagを探せばよろし。F12

 

[Forensics] River

 

f:id:taikohaijin44:20190901163411j:plain

river

 

この問題は、画像の所在地を突き止めるというものでした。はい、exif情報ですな。

 

f:id:taikohaijin44:20190901164051p:plain

exif

 

はい左下w 

世に出回ってる画像もこんなんなってたら恐怖しかねぇ

 

 

[Network]pcap

 

wiresharkでファイルを解析すればおけ

 

 

[Crypto]HashHashHash!

 

サイトに書いてある任意のコードを変換するだけ

e4c6bced9edff99746401bd077afa92860f83de3 

 

f:id:taikohaijin44:20190902225320p:plain

decode

 

このようになりました。

 

[PPC]並べ替えろ!

 

サイトにある数列を並べ替えて表示させるというしろもの

 

org_list = [15,1,93,52,66,31,87,0,42,77,46,24,99,10,19,36,27,4,58,76,2,81,50,102,33,94,20,14,80,82,49,41,12,143,121,7,111,100,60,55,108,34,150,103,109,130,25,54,57,159,136,110,3,167,119,72,18,151,105,171,160,144,85,201,193,188,190,146,210,211,63,207]


new_list = sorted(org_list)
new_list.reverse()
file = open('list.txt','w')#c like
try:
file.writelines(str(new_list))#int型はstrでキャスト
finally:
file.close()

 

僕はpython初学者なので、データクレンジングをbashで処理しました。

 

内容としては、一度ファイル書き込みしてsedで処理するというもの。

 

sed -i -e "s/,//g" list.txt ←邪魔なコンマを空白置換する。

 

ちなみに、file.writelinesがintしか受け付けないらしいんで、括弧で任意の型にキャストしてから使用してくだされ

 

9/2 comment: cryptとreversingまだ完成とは言えない代物

要修正

MSYS2を入れたときの話

WindowsにTerminalを導入する

ユーザー直下の諸設定ファイルをいじる

https://qiita.com/u1and0/items/b4c3217868cf8bafb085

上記のサイトを参考にした。

* .bash_profile : 起動時に一度だけ読み込まれる
* .bashrc : 起動時に一度だけ読み込まれる
* .bash_aliases : alias書くところ
* .bash_function : function書くところ
* etc/fstab,etc/profile : 環境変数書くところ[f:id:taikohaijin44:20190802172631p:plain][f:id:taikohaijin44:20190802172631p:plain]
* .inputrc : キー操作を書くところ

とのこと、ファイルを読み込む順番としては、以下の通り

https://www.atmarkit.co.jp/ait/articles/0203/12/news001_2.html

f:id:taikohaijin44:20190802172715p:plain
読み込む順番

ユーザーがログインすると、まず/etc/profileを読み込み、次に~/.bash_profileを読み込みます。~/.bash_profileが存在しない場合は、~/.bash_loginを読み込みます。~/.bash_loginもない場合は~/.profileを読み込みます。~/.bash_logoutは、ログアウト時に読み込まれるファイルです。

とある。まあechoでいじった時に、profileの次にailiasesが読み込まれたからその順なのだと思ふ

.bash_aliasesの設定について

なんかqiitaのどっかのサイトから拾ってきた貼り付けました

個人的に感動したのが

ls = 'ls --color=auto --show-control-chars --time-style=long-iso -FH' alias grep='grep --color'

色付けて表示するやつ。効率爆上がり。--colorで実現できるのね

補足: https://qiita.com/zaburo/items/9194cd9eb841dea897a0 上記のサイトでプロンプト(ユーザーとか表示するあの$みたいなやつ)が設定できるみたい。やろうかな

vimをいじりやすくするために、設定ファイルをいじる

https://qiita.com/iwaseasahi/items/0b2da68269397906c14c

上記のサイトを参考にしている。

" ファイルを上書きする前にバックアップを作ることを無効化 set nowritebackup " ファイルを上書きする前にバックアップを作ることを無効化 set nobackup " vim の矩形選択で文字が無くても右へ進める set virtualedit=block " 挿入モードでバックスペースで削除できるようにする set backspace=indent,eol,start " 全角文字専用の設定 set ambiwidth=double " wildmenuオプションを有効(vimバーからファイルを選択できる) set wildmenu

"---------------------------------------- " 検索 "---------------------------------------- " 検索するときに大文字小文字を区別しない set ignorecase " 小文字で検索すると大文字と小文字を無視して検索 set smartcase " 検索がファイル末尾まで進んだら、ファイル先頭から再び検索 set wrapscan " インクリメンタル検索 (検索ワードの最初の文字を入力した時点で検索が開始) set incsearch " 検索結果をハイライト表示 set hlsearch

"---------------------------------------- " 表示設定 "---------------------------------------- " エラーメッセージの表示時にビープを鳴らさない set noerrorbells " Windowsでパスの区切り文字をスラッシュで扱う set shellslash " 対応する括弧やブレースを表示 set showmatch matchtime=1 " インデント方法の変更 set cinoptions+=:0 " メッセージ表示欄を2行確保 set cmdheight=2 " ステータス行を常に表示 set laststatus=2 " ウィンドウの右下にまだ実行していない入力中のコマンドを表示 set showcmd " 省略されずに表示 set display=lastline " タブ文字を CTRL-I で表示し、行末に $ で表示する set list " 行末のスペースを可視化 set listchars=tab:^\ ,trail:~ " コマンドラインの履歴を10000件保存する set history=10000 " コメントの色を水色 hi Comment ctermfg=3 " 入力モードでTabキー押下時に半角スペースを挿入 set expandtab " インデント幅 set shiftwidth=2 " タブキー押下時に挿入される文字幅を指定 set softtabstop=2 " ファイル内にあるタブ文字の表示幅 set tabstop=2 " ツールバーを非表示にする set guioptions-=T " yでコピーした時にクリップボードに入る set guioptions+=a " メニューバーを非表示にする set guioptions-=m " 右スクロールバーを非表示 set guioptions+=R " 対応する括弧を強調表示 set showmatch " 改行時に入力された行の末尾に合わせて次の行のインデントを増減する set smartindent " スワップファイルを作成しない set noswapfile " 検索にマッチした行以外を折りたたむ(フォールドする)機能 set nofoldenable " タイトルを表示 set title " 行番号の表示 set number " ヤンクでクリップボードにコピー set clipboard=unnamed,autoselect " Escの2回押しでハイライト消去 nnoremap :nohlsearch " シンタックスハイライト syntax on " すべての数を10進数として扱う set nrformats= " 行をまたいで移動 set whichwrap=b,s,h,l,<,>,[,],~ " バッファスクロール set mouse=a

" auto reload .vimrc augroup source-vimrc autocmd! autocmd BufWritePost vimrc source $MYVIMRC | set foldmethod=marker autocmd BufWritePost gvimrc if has('gui_running') source $MYGVIMRC augroup END

" auto comment off augroup auto_comment_off autocmd! autocmd BufEnter * setlocal formatoptions-=r autocmd BufEnter * setlocal formatoptions-=o augroup END

" HTML/XML閉じタグ自動補完 augroup MyXML autocmd! autocmd Filetype xml inoremap <C-o> autocmd Filetype html inoremap <C-o> augroup END

" 編集箇所のカーソルを記憶 if has("autocmd") augroup redhat " In text files, always limit the width of text to 78 characters autocmd BufRead *.txt set tw=78 " When editing a file, always jump to the last cursor position autocmd BufReadPost * \ if line("'\"") > 0 && line ("'\"") <= line("$") | \ exe "normal! g'\"" | \ endif augroup END endif

デフォルトの矢印キーで自由に移動できないのめっちゃ不便だったからうれしい。

*set guioptions-=T  *set number ↑ 範囲指定してヤンク。自動でクリップボードに貼り付け。くそ便利。

endifとか見る限り、シェルっぽく記述できるみたい。時間を見つけて、深く掘り下げてみよう。

pythonのインストールと諸設定

http://samurai375.hatenablog.com/entry/2019/04/11/133459

このサイト参考にした。

主の環境では、プロキシの設定までやらないといけないようだが、その必要はない。

pacman -Su でパッケージの更新を行い、pacman -S pythonpythonパッケージをインストールしていく。

pythonインタプリタ型言語であるからして、C言語で言うgccに当たるものをインストールしなければいけないことをすっかり忘れていた。

pacman -S winpty 起動時の読み込まれて欲しいから、.bashrcに以下のように記述する。

alias python = 'winpty python.exe'

後はpipとnumpyを入れて終い。

Windows10でVirtual Boxの環境構築を試みた結果死ぬほど苦戦した話ver1.01

CTF勉強会でVB使いそうなので、それまでに環境構築終わらさねば

  • Error one
  • Error two
  • Error three

 

  • Error one

終了コード : E_INVALIDARG (0x80070057)なるエラーを吐かれました。対処には下記のサイトを参考にしました。

https://shimi-dai.com/virtualbox-uuid-e_invalidarg-0x80070057/

これは、恐らくすでにOSが立ち上げられているのに、なんでもう一回

作るん?ということだと思ったので、消して作り直したら解決

 

f:id:taikohaijin44:20190823113302p:plain

 

  • Error two 

content: Failed to load API DLL : WinHvPlatform.dll

VERR_MODULE_NOT_FOUND:vid.dll:

VERR_MODULE_NOT_FOUND(VERR_NEM_INIT_FAILED)

 

f:id:taikohaijin44:20190823113504p:plain

 

https://qiita.com/shinyay/items/9ca418e5d2ae71567f53

 ↑

Virtual boxとHyper-vは共存できない話。

 

BIOS画面にて、virtulizationをenableにして、hyper-vを無効化すべし。

 

素直に実行しましたが、上記のエラーと全く同じものが出てきて死。

https://qiita.com/keiichiroy/items/481f83db66c892e443cf

 

ここで結構核心に迫ってそうな記事を見つけました。

 

この記事によると、どうやら仮想化支援機能の有無も深く関わってくるらしい。

 

そもそもintel VTってなんや?

https://www.atmarkit.co.jp/fsys/kaisetsu/085intelvt/intelvt.html

↑これらしい

 

  • Error three

システム側が、無効な設定とエラーを吐きまくっていたので、その指示に従うようにして以下の項目を確認した。

 

システム->アクセラレーション->VT-x/AMD-vを有効化

 

すると、エラー内容が多少変わったのでここに記す。

 

f:id:taikohaijin44:20190825150120p:plain

error 3

 

 

要約すると、vt-x とhyper-vは共存できないという話。らしい

f:id:taikohaijin44:20190825160433p:plain

bcdedit

hypervisorlaunchtypeがっつりoffになっとるがな

 

https://hiro20180901.hatenablog.com/entry/2018/12/24/060000

これ見るとhyper-v必要臭いし、やるしかねーか

 

https://qiita.com/ryotkn/items/d3a3a99b92ecfc3d83ca

そういやこんな記事あったなぁ…

 

現時点でやらんといかんこと整理すると

  1. vbmanagerでadapter作成
  2. そのvbmanagerが起動せんから、トラブルシューティング
  3. そもそもhyper-vと共存できるのか調査

3については周辺記事が存在するので、まとめる。

https://forums.virtualbox.org/viewtopic.php?f=6&t=90853

https://hiro20180901.hatenablog.com/entry/2019/02/09/070016

 

さて、私は上記の1,2に取り掛からねばならない。

 

調べものしてたら以下の記事にたどり着いたのだが、九割九分これな気がする… 

要約すると、セキュリティソフトのプロトコルフィルタリングがめんどいとかなんとか

https://blog.officekoma.co.jp/2018/04/vagrant-up-failed-to-create-host-only.html

https://qiita.com/iscale821/items/9f561ba4b34ce1b7700c

 

上記の指示に従っていろいろやっとんのやけど、どうにもうまくいかん。

 いろいろオフにしたりしとるんやけどなぁ…

 

 https://www.virtualbox.org/ticket/14040cversion=0&cnum_hist=8#comment:48

公式質問板覗いたらこんなの見つけた。

 

f:id:taikohaijin44:20190911230809p:plain

hoge

 

なにやってもこの様…

え、セキュリティソフトアンインストールしてVBも入れなおして管理者権限でvboxmanage.exe hostonlyif createしてこれなんですけど…

 

原因は別にあると考えた方がよさそう

 

上のTodoリスト割と筋通ってて草。 

 

https://stackoverflow.com/questions/43580778/failed-to-create-the-host-only-adapter-windows-10-docker-virtualbox

また例によってネットの海で遭難してたらよさそうな島に漂着した。

 

And uninstall HyperV Virtual ethernet Adapter from the device manager if you see it (this blocks usually creation of virtualbox virtual network (Host-Only Ethernet adapter))

↑着目したのはこの部分。後は明日の自分が頑張ってくれる。(解決してない)

 

ついに長きに渡る問題が解決した!!!!!!!!!!!!!

 

f:id:taikohaijin44:20190913013412p:plain

solved

https://powerpro.at.webry.info/201905/article_23.html

原因としては、defender。コア分離のメモリ整合性という項目がOnになってるとその機能の全てをVt上に押し込んで、他が入ってこないように保護してしまう。Vtを使いたい他のアプリケーションソフトがVtを使おうとすると拒否されるようになるのだ。それが、セキュリティとして強固という理由でもある。だって、そこにOS機能以外入れないんだもん。ってことだ。

 

らしい、、、、

 

報われた、、、、俺の二か月、、、、、、、、、

Atcoder伸びんので武者修行に出ます(AOJプログラミング入門編)

探さないでください

 

現状:

AtCoder複数回参加するけど、全然アルゴリズム思い浮かばん。てか、問題を考えることに対する耐性がなってないと思う

問題と解説:

  • ITP1_8_A

配列に入れて、サイズだけfor文回して、何か臨機応変に大文字にしたり小文字にしたりすればなんとかなんじゃね

 

//以下が私のコード

#include<stdio.h>
#include<ctype.h>

int main(){
char array[1200];

scanf("%c",array);

for(int i=0;i<sizeof(array);i++){
if(islower(array[i])){
printf("%c",toupper(array[i]));
} else {
printf("%c",tolower(array[i]));
}

}

 

return 0;
}

 

//参考にしたのが次のコード

#include<stdio.h>

#include<ctype.h>


int main(void){

char ch;

while(1) {

scanf("%c", &ch);

if(islower(ch)) printf("%c", toupper(ch));

else if(isupper(ch)) printf("%c", tolower(ch));

else printf("%c", ch);

 

if(ch=='\n') break; }

 

return 0;

}

 

文字だけだとchar型でいいんだろうけど、ASCIIに直すときは配列の方がいいみたい

 

  • ITP1_8_B
  • ITP1_8_C
  • ITP1_8_D

反省と対策:

 

~~ここまでにして寝ます

懲りずにABC134に参加した話

何かうまくいく問題もあるけど、Dまで安定して解けるようにはなりたい

 

問題:

https://atcoder.jp/contests/abc134

上記の通り、いつでも復習できるな

 

解説:

A - Dodecagon

半径 a の円に内接する正十二角形の面積は 3a2 であることが知られています。

整数 r が与えられるので、半径 r の円に内接する正十二角形の面積を求めて下さい。

 

入力は以下の形式で標準入力から与えられます。

r

正十二角形の面積を表す整数を出力してください。

 

………とのこと、まぁこれは流石にね

  1. #include<stdio.h>
  2.  
  3. int main(){
  4. int r,sum;
  5.  
  6. scanf("%d",&r);
  7. sum = 3*r*r;
  8.  
  9. printf("%d",sum);
  10.  
  11. return 0;
  12. }

 見たまんま記法

 

 

 

B - Golden Apple

一列に並んだ N 本の林檎の木のうちいずれかに黄金の林檎が実ると言われています。

そこで、何人かの監視員を配置してどの林檎の木もいずれかの監視員に監視された状態にしたいです。

それぞれの監視員は N 本の木のうちいずれかに配置します。便宜上、これらの木に 1 から N までの番号をつけます。番号 i の木に配置された監視員は、番号が iD 以上 i+D 以下のすべての林檎の木を監視します。

条件を満たすために少なくとも何人の監視員を配置する必要があるか求めてください。

 

入力は以下の形式で標準入力から与えられる。

N D

条件を満たすために配置する必要のある監視員の人数の最小値を出力せよ。

 

問題の入力例を見てみると、6 2と入力した場合、答えが2になることから、観測範囲は自分を含めて入力されたDだけ増えることが分かった。(例の場合は観測者を含めて3本まで見れる)以下が実際の解答例である

 

  1. #include<stdio.h>
  2.  
  3. int main(){
  4. int n,d,range;
  5. scanf("%d%d",&n,&d);
  6. range=d*2+1;
  7.  
  8. if(n%range==0) printf("%d",n/range);
  9. else printf("%d",n/range+1);
  10.  
  11. return 0;
  12. }

range=d*2+1の意味は、観測者は-d分まで観測の手を広げることができるから、増えた範囲dを二倍することで解決。本数を範囲で割って、余りが0になったら最小値出力、余りが出たら割れない分1だけ足して出力。シンプルな問題で助かった。

 

 

C - Exception Handling

長さ の数列 が与えられます。 以上 以下の各整数

に対し、次の問いに答えてください。

  • 数列中の

を除く 個の要素のうちの最大の値を求めよ。

 

入力は以下の形式で標準入力から与えられる。


 

行出力せよ。 行目 () に、数列中の を除く 個の要素のうちの最大の値を出力すること。

 

 

 

 

反省、改善点:

 

 

  

 

VBから逃げ、VMwareに浮気した人間の末路とは………

………またエラー吐いたので奮闘劇をここに記す。


第一章:VMware PlayerとDevice/Credential Guardには互換性が無いそうですよ


解決に至るプロセスは以下のサイトを参考にしている

https://yoshidastyle.net/Blogs/2016/11/04/vmware-player_devicecredential-guard


1.1ドライブの分割について

上記のサイトを読んでるうちに、見知らぬ概念に出会った。その名も、「ドライブの分割」である。えっ、ドライブって分割できるの?ってなった。そもそもファイルとディレクトリの違いもついてないような情弱なので←後で白黒はっきりさせます。


https://freesoft-100.com/pasokon/disknokannri.html

このサイトの力をお借りして理解に励もうと思う

………と思ったのだが、思ったより領域喰うし、細かいファイル容量を設定できないので、EaseUS Partition Masterなるフリーソフトを使うことにした。