<?xml version="1.0" encoding="utf-8"?>

<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">

  <title>みなゆろぐ</title>
  <link href="https://blog.m7u.net" rel="self" />
  <link href="https://blog.m7u.net/"/>
  <updated>2025-11-29T16:51:33+09:00</updated>
  <id>https://blog.m7u.net/</id>
  <author>
    <name>みなぎ</name>
  </author>

  
  <entry>
    <title>コミックマーケット99に初めてのサークル参加してきた</title>
    <link href="https://blog.m7u.net/diary/comiket99.html" />
    <updated>2022-01-10T20:31:25+09:00</updated>
    <id>https://blog.m7u.net/diary/comiket99</id>
    <content type="html">&lt;h2 id=&quot;はじめに&quot;&gt;はじめに&lt;/h2&gt;

&lt;p&gt;コミックマーケット99にサークル参加してきました。今までも先輩やツイッターのフォロワーさんのサークルでの参加はありましたが、今回は初めての自分のサークルで参加でした。&lt;/p&gt;

&lt;p&gt;参加するまでの旅行とコミケのことを書いていこうと思います。&lt;/p&gt;

&lt;h2 id=&quot;コミケ前&quot;&gt;コミケ前&lt;/h2&gt;

&lt;h3 id=&quot;コミケの申し込み&quot;&gt;コミケの申し込み&lt;/h3&gt;

&lt;p&gt;中止されてしまったC98に申し込んでいました。なので手数料分の追加料金を払ってそのままC99へも申し込みという形になりました。&lt;/p&gt;

&lt;h3 id=&quot;同人誌&quot;&gt;同人誌&lt;/h3&gt;

&lt;p&gt;内容は、このブログにも投稿していましたが、新しいAVRシリーズの紹介をする本にしました。C98の申し込みの時から書くこと変わってませんが、情報は新しくなるようにしました。AVR32DA28ってマイコンは2年前はまだなかったのでATtiny1614だったのですが、DIP28ピンで使いやすかったので、これに変えました。&lt;/p&gt;

&lt;p&gt;執筆は、内容を前から考えていたこともあり、書き始めればわりとすんなりできたと思っています。でも、ものを書くって結構時間がかかるのでモチベーション維持が難しかったです。興味が移りやすい性格なので、別のことに興味が移って執筆ほったらかしな日もよくありました。それで最後の部分は直前に追い込むことになってしまい後悔しています。&lt;/p&gt;

&lt;p&gt;印刷部数は15部としました。たくさん刷って余っても、重たいのを持って帰る悲しい状況になるだけなので売り切れる量をと思って決めました。明確な根拠はないのですが、フォロワーさんの反応とコミケに来そうなフォロワーさんの数＋現地で見てくれた一期一会で、10〜20部を想定して間を取っただけです。&lt;/p&gt;

&lt;p&gt;印刷は出発の前日に家のレーザープリンターで行いました。途中でカラーのトナーが全色なくなってしまったので2万円かかりました。印刷時間も何時間もかかりました。印刷所に頼んだ方が安いし楽だし品質もいいし、自宅で印刷したのは失敗でした。少数部なので家でやろうと思ったのですが、次からは印刷所に頼みます。&lt;/p&gt;

&lt;p&gt;プリンターの印刷方法の設定で、デフォルトでは「部単位で印刷」になっていると思うのですが、「ページ単位で印刷」に変えた方が圧倒的に早かったです。部単位だと1枚ごとに印刷データをプリンターに送信しているようなので、30ページが15部だと450ページ分のデータを送信するようです。ページ単位にすると30ページ分だけの印刷データを送信するので、送信の待ち時間が短くなるみたいです。終わりの方になってから気づいたので、早く気づけば良かったです。自分で並べ替えないといけないので、ページを抜かしちゃうとかその点は注意です。&lt;/p&gt;

&lt;h3 id=&quot;行き&quot;&gt;行き&lt;/h3&gt;

&lt;p&gt;18きっぷで名古屋と愛知に寄って行きました。&lt;/p&gt;

&lt;p&gt;名古屋ではボントンって電子部品のお店に行きました。お目当ては時計用の蛍光表示管で、Twitterで見かけてからずっと欲しかったものです。売り切れてなくてよかったです！&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;ja&quot; dir=&quot;ltr&quot;&gt;お目当ての品はVFD！&lt;br /&gt;勢い余って3つも買っちゃった。 &lt;a href=&quot;https://t.co/3hFl6yKCG9&quot;&gt;pic.twitter.com/3hFl6yKCG9&lt;/a&gt;&lt;/p&gt;&amp;mdash; みなぎ🌱 (@minagi_yu) &lt;a href=&quot;https://twitter.com/minagi_yu/status/1476170898025902080?ref_src=twsrc%5Etfw&quot;&gt;December 29, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;そのまま金山で一泊して、次は静岡に行きました。18きっぷで東京に行ったことは何度もあるのですが、今はなきムーンライトながらだったりでそのまま通過してたので、まともに静岡に降りたのは初めてです。&lt;/p&gt;

&lt;p&gt;静岡についてまずおやつを買いました。「ぷるみえ〜る」ってお店の「ぷりん」です。フォロワーさんにおすすめしてもらいました。フルーツが乗っててきれいでおいしかったです。&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;ja&quot; dir=&quot;ltr&quot;&gt;ぷりんさん&lt;a href=&quot;https://twitter.com/sweetpudding171?ref_src=twsrc%5Etfw&quot;&gt;@sweetpudding171&lt;/a&gt; におすすめしてもらった、&lt;br /&gt;ぷるみえ〜るってお店のフルーツぷりん&lt;br /&gt;&lt;br /&gt;ぷりんはひらがな &lt;a href=&quot;https://t.co/WeoxsgyBoE&quot;&gt;pic.twitter.com/WeoxsgyBoE&lt;/a&gt;&lt;/p&gt;&amp;mdash; みなぎ🌱 (@minagi_yu) &lt;a href=&quot;https://twitter.com/minagi_yu/status/1476389565615468544?ref_src=twsrc%5Etfw&quot;&gt;December 30, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;これは静岡の郵便局にあったプラモデルの郵便ポスト。プラモデルが有名なんですね。こういった遊び心のあるものってとっても好きです。&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;ja&quot; dir=&quot;ltr&quot;&gt;プラモデルな郵便ポスト &lt;a href=&quot;https://t.co/j41IFt6MqM&quot;&gt;pic.twitter.com/j41IFt6MqM&lt;/a&gt;&lt;/p&gt;&amp;mdash; みなぎ🌱 (@minagi_yu) &lt;a href=&quot;https://twitter.com/minagi_yu/status/1476383564321419267?ref_src=twsrc%5Etfw&quot;&gt;December 30, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;駿府城へも行きました。静岡城ではないみたいです。今は発掘をしている最中でフェンス越しに発掘現場を見ることができました。年末じゃなければ、フェンスの中からも見れるようです。&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;ja&quot; dir=&quot;ltr&quot;&gt;駿府城 &lt;a href=&quot;https://t.co/7nMxvYUhti&quot;&gt;pic.twitter.com/7nMxvYUhti&lt;/a&gt;&lt;/p&gt;&amp;mdash; みなぎ🌱 (@minagi_yu) &lt;a href=&quot;https://twitter.com/minagi_yu/status/1476388162083880962?ref_src=twsrc%5Etfw&quot;&gt;December 30, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;静岡から少し離れてお昼ご飯は清水で海鮮丼を食べました。マグロが有名らしいです。最近は旅行先で名物を食べるようにしてます。お土産って荷物になっちゃいますが、食べ物ならなくなっちゃうので手荷物削減です。&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;ja&quot; dir=&quot;ltr&quot;&gt;海鮮丼とマグロのかま &lt;a href=&quot;https://t.co/MXQkKptHdH&quot;&gt;pic.twitter.com/MXQkKptHdH&lt;/a&gt;&lt;/p&gt;&amp;mdash; みなぎ🌱 (@minagi_yu) &lt;a href=&quot;https://twitter.com/minagi_yu/status/1476410209266708482?ref_src=twsrc%5Etfw&quot;&gt;December 30, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;iPadで地図をみていたら、近くに美保の松原があるみたいだったので行ってみました。18きっぷだと列車の時間が決まっていないので、気軽に旅程の変更ができるのがいいですよね。富士山にはちょっと雲がかかっちゃってましたがそこそこきれいに見えました.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;ja&quot; dir=&quot;ltr&quot;&gt;三保の松原 &lt;a href=&quot;https://t.co/mYyAPt3AQM&quot;&gt;pic.twitter.com/mYyAPt3AQM&lt;/a&gt;&lt;/p&gt;&amp;mdash; みなぎ🌱 (@minagi_yu) &lt;a href=&quot;https://twitter.com/minagi_yu/status/1476428941200343040?ref_src=twsrc%5Etfw&quot;&gt;December 30, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;それから1駅だけ列車に乗って、興津で降りました。薩埵峠っていうニュースの渋滞情報でよく出てくる場所が近くにあるみたいだったので行ってみようと思いました。&lt;/p&gt;

&lt;p&gt;15:20興津着の列車に乗っていて、16:50由比発の列車に乗らないといけなかったので、1:30しかなくて7kmの峠越えできるか不安だったけど決行しました。同人誌の入った重たいリュックを背負っていたのですごくしんどかったですが、なんとか予定の列車に間に合うことができました。&lt;/p&gt;

&lt;p&gt;峠ではテレビで見るのと同じ景色で、道路が海に張り出しているのが印象的でした。頂上では富士山にカメラを構えている写真家の人がたくさんいました。撮ってないみたいだったので富士山の雲がなくなるのを待っていたのかもです。&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;ja&quot; dir=&quot;ltr&quot;&gt;薩埵峠！ &lt;a href=&quot;https://t.co/YWG7DBfFqF&quot;&gt;pic.twitter.com/YWG7DBfFqF&lt;/a&gt;&lt;/p&gt;&amp;mdash; みなぎ🌱 (@minagi_yu) &lt;a href=&quot;https://twitter.com/minagi_yu/status/1476453211850801156?ref_src=twsrc%5Etfw&quot;&gt;December 30, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;由比駅からは途中下車なしで東京へ向かいました。東京では高校の同級生と一緒に夜ご飯を食べました。久しぶりに会って話せて楽しかったです。&lt;/p&gt;

&lt;p&gt;ホテルは大井町のアワーズイン阪急というところにしました。コミケ常連の大学の先輩におすすめしてもらったところです。駅前すぐだし、りんかい線で直接行けるので便利のいいところでした。ホテルの方もコミケットのお客様って想定されているようで、荷物の発送窓口だったり準備万端でした。&lt;/p&gt;

&lt;h2 id=&quot;コミケ当日&quot;&gt;コミケ当日&lt;/h2&gt;

&lt;h3 id=&quot;コミケへ&quot;&gt;コミケへ&lt;/h3&gt;

&lt;p&gt;7時にホテルを出発しました。だいたい1時間くらいかかって、8時に自分のスペースに到着しました。スペースの設営をしていたら8:30くらいになって、その後はTwitterの知り合いさんのスペースに挨拶に行ったりサークルチェックをしたりしました。&lt;/p&gt;

&lt;h3 id=&quot;スペース設営&quot;&gt;スペース設営&lt;/h3&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;ja&quot; dir=&quot;ltr&quot;&gt;みなゆらぼ🌱@東5ト07b&lt;br /&gt;よろしくお願いします！&lt;br /&gt;&lt;br /&gt;因果さん&lt;a href=&quot;https://twitter.com/ingaoh?ref_src=twsrc%5Etfw&quot;&gt;@ingaoh&lt;/a&gt;の委託もしてます！ &lt;a href=&quot;https://t.co/D0UBRnShn3&quot;&gt;pic.twitter.com/D0UBRnShn3&lt;/a&gt;&lt;/p&gt;&amp;mdash; みなぎ🌱 (@minagi_yu) &lt;a href=&quot;https://twitter.com/minagi_yu/status/1476700792812105731?ref_src=twsrc%5Etfw&quot;&gt;December 30, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;スペースはこんな感じで設営しました。平面ばかりで高さがない感じになってしまったのが反省です。他のサークルだと本を立てかけていたり、B4とかA3くらいのポスターやお品書きを立てていたりしました。コミケでは目立ってなんぼみたいなところがあると思うので、次に設営するときは積極的に高さを活用していきたいと思います。&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;ja&quot; dir=&quot;ltr&quot;&gt;コミケのスペースで光らせておこう &lt;a href=&quot;https://t.co/ieoK0bXh53&quot;&gt;pic.twitter.com/ieoK0bXh53&lt;/a&gt;&lt;/p&gt;&amp;mdash; みなぎ🌱 (@minagi_yu) &lt;a href=&quot;https://twitter.com/minagi_yu/status/1475843873939554306?ref_src=twsrc%5Etfw&quot;&gt;December 28, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;アクリル板で作った光るサークルロゴは好評でした。「これいいから次は自分のサークルにも置こう」って人だったり、「手作りなんですか？この作り方の本ですか？」って聞いてくれた人だったり、興味を引いてもらえたようです。A6サイズくらいだったので、次回はもうちょっと大きいやつを作って、サークルのポスター代わりにしようかなって思います。&lt;/p&gt;

&lt;h3 id=&quot;持ち物&quot;&gt;持ち物&lt;/h3&gt;

&lt;p&gt;持っていったものはこんな感じです。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;本&lt;/li&gt;
  &lt;li&gt;サークルチケット&lt;/li&gt;
  &lt;li&gt;見本誌&lt;/li&gt;
  &lt;li&gt;布&lt;/li&gt;
  &lt;li&gt;値札（当日ホテルに忘れた……）&lt;/li&gt;
  &lt;li&gt;値札立て&lt;/li&gt;
  &lt;li&gt;コイントレー&lt;/li&gt;
  &lt;li&gt;養生テープ&lt;/li&gt;
  &lt;li&gt;サークル表示板&lt;/li&gt;
  &lt;li&gt;名刺&lt;/li&gt;
  &lt;li&gt;名刺入れ&lt;/li&gt;
  &lt;li&gt;アクリルのサークルロゴが光るやつ&lt;/li&gt;
  &lt;li&gt;サインペン&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;持って行けば良かったなって思ったものもいくつかありました。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;スケッチブック&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;売り切れましたを書いたりするのにあったらいいなと思いました。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;マジック&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;色ペンしか持っていってなかったので、黒色のものがほしかったです。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;名札&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;あんまり自己主張するのやだなって思って名札をしなかったのですが、話しかけられる時に誰かわかった方がいいと思いました。&lt;/p&gt;

&lt;h3 id=&quot;頒布中&quot;&gt;頒布中&lt;/h3&gt;

&lt;p&gt;朝は誰も来なくて暇でした。そして角の席だったのもあると思いますが、すごく寒かったです。防寒対策はしっかりとです。感染対策なのか、シャッターが全開なので風の通りがいいです。人数制限でオタクがいないので暖房効果も期待できません。お昼に近づくにつれて、ぼちぼちと電子工作ジャンルにも人が増え始め、ぼくのところにも人が来てくれるようになりました。最初は壁やシャ前に行ってお目当てのものを手に入れると思うので、マイナージャンルはその後に盛り上がる感じですね。&lt;/p&gt;

&lt;p&gt;13時ごろに完売しました。ちょうどいい時間に売り切れたかなって思っています。ツイッターでいろんなサークルが分析していましたが、自由入場じゃなくなった影響で午後からの人出は望めない状況だったようです。完売後に数人来てくれたので、ごめんなさいをしました。ごめんなさいをするのは少し心が痛いので、余るのが気にならない人は少し余るくらいに部数を見積もってきた方がいいと思います。コミケ後に会場から宅配できることがわかったので、ぼくも次回は少し多めに印刷しようと思います。&lt;/p&gt;

&lt;p&gt;フォロワーさんが干し芋やお菓子をくれました。すごくうれしかったです。ありがたくいただきました。&lt;/p&gt;

&lt;h3 id=&quot;戦利品&quot;&gt;戦利品&lt;/h3&gt;

&lt;p&gt;自分のことでいっぱいで特にサークルチェックはしていなかったので、そんなにありません。シャ前はサークルチケットを渡した先輩に買ってきてもらいました。自分のが完売した後は、いろんなところへ買い物に行きました。主には自分の周りの島です。途中で東西が解放されたので、西側にも行きました。買う方は何度か行っているので慣れたものです。&lt;/p&gt;

&lt;h2 id=&quot;コミケ後&quot;&gt;コミケ後&lt;/h2&gt;

&lt;h3 id=&quot;帰り道&quot;&gt;帰り道&lt;/h3&gt;

&lt;p&gt;みんなが買ってくれたうれしさと、読んでなんて思われるだろうっていう不安と、いろいろ思いながら帰宅しました。&lt;/p&gt;

&lt;p&gt;大晦日だったので正月までに実家に帰ろうと新幹線で帰りました。社会人になって学割が使えず割引なしで乗りました。社会人になったことを実感しました。&lt;/p&gt;

&lt;h3 id=&quot;次&quot;&gt;次&lt;/h3&gt;

&lt;p&gt;なんだかんだ楽しかったので次の夏コミも出したい気持ちです。次のネタを思いついたので今その検証と作成をやっているところです。AVRマイコンネタを続ける予定です。夏コミもサークル当選するといいな。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>NanoPi NEOでFreeBSDを動かしてみた</title>
    <link href="https://blog.m7u.net/computer/nanopi_neo_freebsd.html" />
    <updated>2020-06-01T22:23:00+09:00</updated>
    <id>https://blog.m7u.net/computer/nanopi_neo_freebsd</id>
    <content type="html">&lt;h2 id=&quot;nanopi-neo&quot;&gt;NanoPi NEO&lt;/h2&gt;

&lt;p&gt;NanoPi NEOは4cm正方形のシングルボードコンピューターです。Allwinner H3っていうSoCが載っています。秋月電子でも取り扱っていて、DRAMが512MBのものが¥2280です。前は¥1680だったのですが値上がりしたようです。&lt;/p&gt;

&lt;h2 id=&quot;freebsdのダウンロード&quot;&gt;FreeBSDのダウンロード&lt;/h2&gt;

&lt;p&gt;NanoPi NEOには専用のイメージは提供されていません。ARMアーキテクチャ用にGENERICSDが提供されているのでこれを使います。記事を書いた時点での最新版は12.1Rです。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://download.freebsd.org/ftp/releases/arm/armv7/ISO-IMAGES/12.1/FreeBSD-12.1-RELEASE-arm-armv7-GENERICSD.img.xz&quot;&gt;FreeBSD 12.1 RELEASE arm armv7 GENERICSD.img.xz&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;xzで圧縮されているので展開するとSDカードイメージができます。&lt;/p&gt;

&lt;p&gt;以前はcrochetというツールを使ってコンパイルしてたのですが、格段に楽になりました。&lt;/p&gt;

&lt;h2 id=&quot;ブートローダーのダウンロード&quot;&gt;ブートローダーのダウンロード&lt;/h2&gt;

&lt;p&gt;OSを起動する前にはブートローダーが起動します。NanoPi NEOでFreeBSDを起動するためにはU-Bootというブートローダーを用いて起動します。&lt;/p&gt;

&lt;p&gt;FreeBSDのpkgにNanoPi NEO用のU-Bootが用意されているのでインストールしましょう。&lt;/p&gt;

&lt;pre&gt;&lt;samp&gt;% &lt;kbd&gt;pkg install u-boot-nanopi_neo&lt;/kbd&gt;&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;インストールするとパッケージが&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/local/share/u-boot/u-boot-nanopi_neo/&lt;/code&gt;以下に置かれています。&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;u-boot-sunxi-with-spl.bin&lt;/code&gt;がブートローダーのバイナリ本体です。&lt;/p&gt;

&lt;p&gt;パソコンはMacを使っているのでVPSにFreeBSDの環境を用意してパソコンにダウンロードしました。&lt;/p&gt;

&lt;h2 id=&quot;sdカードへブートローダーとosの書き込み&quot;&gt;SDカードへブートローダーとOSの書き込み&lt;/h2&gt;

&lt;p&gt;まずはOSイメージをSDカードに書き込み、その後にブートローダーを書き込みます。先にブートローダーを書き込んでしまうとOSイメージで上書きされてしまいます。&lt;/p&gt;

&lt;p&gt;これ以降はMac上で行いました。&lt;/p&gt;

&lt;p&gt;まずは、SDカードをパソコンに挿して、どのデバイスか確認します。&lt;/p&gt;

&lt;pre&gt;&lt;samp&gt;% &lt;kbd&gt;diskutil list&lt;/kbd&gt;&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;自分の環境では&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/dev/disk2&lt;/code&gt;でした。自動でマウントされてしまっているのでアンマウントします。&lt;/p&gt;

&lt;pre&gt;&lt;samp&gt;% &lt;kbd&gt;diskutil unmountDisk /dev/disk2&lt;/kbd&gt;&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;ddでSDカードにOSイメージを書き込みます。ifとofで指定するデバイスを間違うと大変なことになるのでとても注意してください。&lt;/p&gt;

&lt;pre&gt;&lt;samp&gt;% &lt;kbd&gt;sudo dd if=~/Downloads/FreeBSD-12.1-RELEASE-arm-armv7-GENERICSD.img of=/dev/rdisk2 bs=1m&lt;/kbd&gt;&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;書き込みに数分かかるとおもいます。気長に待ちます。&lt;/p&gt;

&lt;p&gt;書き込みが終わると、たぶん自動でマウントされてしまうので、ブートローダーを書き込むために再度アンマウントします。&lt;/p&gt;

&lt;pre&gt;&lt;samp&gt;% &lt;kbd&gt;diskutil unmountDisk /dev/disk2&lt;/kbd&gt;&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;最後にブートローダーを書き込みます。書き込みの方法はpkgでインストールした先のREADMEに書いてあります。&lt;/p&gt;

&lt;pre&gt;&lt;samp&gt;% &lt;kbd&gt;sudo dd if=~/Downloads/u-boot-nanopi_neo/u-boot-sunxi-with-spl.bin of=/dev/disk2 bs=1024 seek=8&lt;/kbd&gt;&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;アンマウントしてSDカードリーダーから取り外します。&lt;/p&gt;

&lt;pre&gt;&lt;samp&gt;% &lt;kbd&gt;diskutil unmountDisk /dev/disk2&lt;/kbd&gt;&lt;/samp&gt;&lt;/pre&gt;

&lt;h2 id=&quot;nanopi-neoの起動&quot;&gt;NanoPi NEOの起動&lt;/h2&gt;

&lt;p&gt;SDカードをNanoPi NEOに挿して、USBシリアル変換器を介してNanoPi NEOとパソコンをつなぎます。ボーレートは115200です。&lt;/p&gt;

&lt;pre&gt;&lt;samp&gt;% &lt;kbd&gt;screen /dev/tty.usbserial-XXXXXXXX 115200&lt;/kbd&gt;&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;microUSBポートに電源を繋ぐと起動メッセージが流れてきます。&lt;/p&gt;

&lt;p&gt;起動したら、rootかfreebsdユーザーでログインすることができます。（パスワードはユーザー名と同じ）&lt;/p&gt;

&lt;p&gt;オーディオは認識されていないような気がしますが、USBもネットワークも認識されているのでサーバーなどに使うのには十分そうです。&lt;/p&gt;

&lt;h2 id=&quot;usb接続のssdからの起動&quot;&gt;USB接続のSSDからの起動&lt;/h2&gt;

&lt;p&gt;U-Bootを確認してみると、USBを認識しているようなので、USB接続のSSDからFreeBSDの起動を試してみました。破損しやすい
SDカードからの起動を避けられるので、サーバーでの運用がしやすくなると思います。&lt;/p&gt;

&lt;p&gt;U-Bootの起動の優先順位がSDカードになっているので、SDカードないのデータを全て0書き込みして、先ほど書き込んだOSイメージを消去しておきます。&lt;/p&gt;

&lt;p&gt;U-Bootの書き込み方法は上記のやり方と同じです。&lt;/p&gt;

&lt;p&gt;FreeBSDのイメージを書き込むときに、SDカードではなくUSB SSDを書き込み先に指定します。&lt;/p&gt;

&lt;p&gt;あとは、SDカードをNanoPiに差して、SSDを接続して電源を繋げばSSDからFreeBSDが起動するようになります。&lt;/p&gt;

&lt;p&gt;SDカードにFreeBSDのイメージが残ったままUSBからの起動ができないか試してみましたが、U-Bootの起動優先順位を変更してUSBからOSを起動することができたもののß、rootfsのマウントがSDカードからされてしまいUSBでの運用はできませんでした。力不足で解決できなかったのでSDカードはU-Bootのみにして使っていこうと思います。&lt;/p&gt;

&lt;h2 id=&quot;まとめ&quot;&gt;まとめ&lt;/h2&gt;

&lt;p&gt;GENERICSDイメージとpkgにあるNanoPi NEO用のU-Bootを使って簡単にFreeBSDを使う環境を立てることができました。&lt;/p&gt;

&lt;p&gt;また、SSDからの起動もできたので自宅サーバーにしたいと思います。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>新しいAVRマイコンシリーズの紹介</title>
    <link href="https://blog.m7u.net/diy/introduction-of-the-new-avr-series.html" />
    <updated>2019-09-18T23:10:00+09:00</updated>
    <id>https://blog.m7u.net/diy/introduction-of-the-new-avr-series</id>
    <content type="html">&lt;p&gt;2020-03-17 更新&lt;/p&gt;

&lt;h2 id=&quot;新しいavrマイコンシリーズ&quot;&gt;新しいAVRマイコンシリーズ&lt;/h2&gt;

&lt;p&gt;AVRマイコンの発売元Atmel社が、競合のPICマイコンの発売元Microchip社に買収されてから、新しいAVRマイコンシリーズが発売されました。&lt;/p&gt;

&lt;h2 id=&quot;ラインナップ&quot;&gt;ラインナップ&lt;/h2&gt;

&lt;p&gt;2021年3月時点で発売されている新シリーズはtinyAVR 0シリーズ（ATtiny1607ファミリー）・tinyAVR 1シリーズ（ATtiny3217ファミリー）・magaAVR 0シリーズ（ATmega4809ファミリー）・tinyAVR 2シリーズ（ATtiny1627ファミリー）・AVR DAファミリー・AVR DBファミリーです。AVR DDファミリーが今後出るみたいです。&lt;/p&gt;

&lt;p&gt;型番の付け方はtinyとmegaは、上2桁がフラッシュROMのサイズを、その次がシリーズ名を、最後の桁がピン数を示すようです。ピン数は、2:4ピン、4:14ピン、6:20ピン、7:24ピン、8:32ピン、9:48ピンとなっています。&lt;/p&gt;

&lt;p&gt;DA, DBシリーズでは、始めの数がフラッシュROMのサイズ、最後の数がピン数を示すようです。&lt;/p&gt;

&lt;p&gt;パッケージは、基本的に表面実装のパッケージのみですが、ATmega4809のみ40ピンDIPパッケージが用意されています。新AVRシリーズのプロトタイプにはATmega4809のDIP版を利用すればよさそうです。tinyシリーズは1.27mmピッチのSOICがあるので、はんだ付けが苦手な人にも使いやすいと思います。&lt;/p&gt;

&lt;p&gt;AVR DA, DBファミリーには28ピンDIPが用意されています。ATmega328の置き換えにいいと思います。AVR32DA28がAVRのニュースタンダードになっていくんでしょうかね。&lt;/p&gt;

&lt;h3 id=&quot;tinyavr-0-series&quot;&gt;tinyAVR 0-series&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;ATtiny202&lt;/li&gt;
  &lt;li&gt;ATtiny204&lt;/li&gt;
  &lt;li&gt;ATtiny402&lt;/li&gt;
  &lt;li&gt;ATtiny404&lt;/li&gt;
  &lt;li&gt;ATtiny406&lt;/li&gt;
  &lt;li&gt;ATtiny804&lt;/li&gt;
  &lt;li&gt;ATtiny806&lt;/li&gt;
  &lt;li&gt;ATtiny807&lt;/li&gt;
  &lt;li&gt;ATtiny1604&lt;/li&gt;
  &lt;li&gt;ATtiny1606&lt;/li&gt;
  &lt;li&gt;ATtiny1607&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;tinyavr-1-series&quot;&gt;tinyAVR 1-series&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;ATtiny212&lt;/li&gt;
  &lt;li&gt;ATtiny214&lt;/li&gt;
  &lt;li&gt;ATtiny412&lt;/li&gt;
  &lt;li&gt;ATtiny414&lt;/li&gt;
  &lt;li&gt;ATtiny416&lt;/li&gt;
  &lt;li&gt;ATtiny417&lt;/li&gt;
  &lt;li&gt;ATtiny814&lt;/li&gt;
  &lt;li&gt;ATtiny816&lt;/li&gt;
  &lt;li&gt;ATtiny817&lt;/li&gt;
  &lt;li&gt;ATtiny1614&lt;/li&gt;
  &lt;li&gt;ATtiny1616&lt;/li&gt;
  &lt;li&gt;ATtiny1617&lt;/li&gt;
  &lt;li&gt;ATtiny3216&lt;/li&gt;
  &lt;li&gt;ATtiny3217&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;tinyavr-2-series&quot;&gt;tinyAVR 2-series&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;ATtiny424&lt;/li&gt;
  &lt;li&gt;ATtiny426&lt;/li&gt;
  &lt;li&gt;ATtiny427&lt;/li&gt;
  &lt;li&gt;ATtiny824&lt;/li&gt;
  &lt;li&gt;ATtiny826&lt;/li&gt;
  &lt;li&gt;ATtiny827&lt;/li&gt;
  &lt;li&gt;ATtiny1624&lt;/li&gt;
  &lt;li&gt;ATtiny1626&lt;/li&gt;
  &lt;li&gt;ATtiny1627&lt;/li&gt;
  &lt;li&gt;ATtiny3224&lt;/li&gt;
  &lt;li&gt;ATtiny3226&lt;/li&gt;
  &lt;li&gt;ATtiny3227&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;magaavr-0-series&quot;&gt;magaAVR 0-series&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;ATmega808&lt;/li&gt;
  &lt;li&gt;ATmega809&lt;/li&gt;
  &lt;li&gt;ATmega1608&lt;/li&gt;
  &lt;li&gt;ATmega1609&lt;/li&gt;
  &lt;li&gt;ATmega3208&lt;/li&gt;
  &lt;li&gt;ATmega3209&lt;/li&gt;
  &lt;li&gt;ATmega4808&lt;/li&gt;
  &lt;li&gt;ATmega4809&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;avr-da-family&quot;&gt;AVR DA Family&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;AVR32DA28&lt;/li&gt;
  &lt;li&gt;AVR32DA32&lt;/li&gt;
  &lt;li&gt;AVR32DA48&lt;/li&gt;
  &lt;li&gt;AVR64DA28&lt;/li&gt;
  &lt;li&gt;AVR64DA32&lt;/li&gt;
  &lt;li&gt;AVR64DA48&lt;/li&gt;
  &lt;li&gt;AVR64DA64&lt;/li&gt;
  &lt;li&gt;AVR128DA28&lt;/li&gt;
  &lt;li&gt;AVR128DA32&lt;/li&gt;
  &lt;li&gt;AVR128DA48&lt;/li&gt;
  &lt;li&gt;AVR128DA64&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;avr-db-family&quot;&gt;AVR DB Family&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;AVR32DB28&lt;/li&gt;
  &lt;li&gt;AVR32DB32&lt;/li&gt;
  &lt;li&gt;AVR32DB48&lt;/li&gt;
  &lt;li&gt;AVR64DB28&lt;/li&gt;
  &lt;li&gt;AVR64DB32&lt;/li&gt;
  &lt;li&gt;AVR64DB48&lt;/li&gt;
  &lt;li&gt;AVR64DB64&lt;/li&gt;
  &lt;li&gt;AVR128DB28&lt;/li&gt;
  &lt;li&gt;AVR128DB32&lt;/li&gt;
  &lt;li&gt;AVR128DB48&lt;/li&gt;
  &lt;li&gt;AVR128DB64&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;アーキテクチャ&quot;&gt;アーキテクチャ&lt;/h2&gt;

&lt;p&gt;今回のtiny, megaマイコンともXMEGA系のアーキテクチャに属していて、tinyやmegaという名称はピン数のみで区別するようになったようです。&lt;/p&gt;

&lt;p&gt;以前はtinyマイコンはハードウェア乗算器が無いなど劣るアーキテクチャでしたが、このシリーズからはmegaと同様に乗算器が載り、小ピンでも高性能なCPUコアが使用できます。&lt;/p&gt;

&lt;p&gt;従来のAVRマイコンではRAMのアドレス空間とフラッシュROMのアドレス空間が分離されていて、フラッシュへの読み書きは専用の命令（lpm命令）を介して行う必要がありました。このシリーズではフラッシュもNVMコントローラーを通してRAMと同一アドレス空間に属したことにより、ld命令・st命令を使ってアクセスできるようになりました。アクセスのためのクロック数が減少したわけではないですが、アセンブリでプログラミングするのが楽になりました。&lt;/p&gt;

&lt;p&gt;Cでプログラミングする際にも利点があります。&lt;strong&gt;フラッシュROMのみに置きたい定数に、PROGMEMや__flashが不要になりました。&lt;/strong&gt;constキーワードを使って宣言した定数は、フラッシュROMにのみ配置されRAMの消費はありません。従来では単にconstで宣言した定数はフラッシュROMにもRAMにも置かれていました。フラッシュROMにだけ置きたい定数ではpgmspace.hをインクルードしてPROGMEMキーワードを使って定数を宣言したり、Named Address Spacesの機能を使って__flashキーワードを使って宣言しないといけませんでした。また、PROGMEMキーワードを使って宣言した定数にを読み出すにはそれ用の関数を使う必要がありました。これはアドレス空間が違ったため、定数にアクセスするにはld命令なのかlpm命令なのか区別する必要があるためです。これら新しいマイコンのデフォルトのavrxmega3のリンカースクリプトを見るとセクション.rodataが分離され、フラッシュのみに配置されるようになっています。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/introduction-of-the-new-avr-series/memory_map.png&quot; alt=&quot;ATtiny161xのメモリーマップ&quot; /&gt;&lt;/p&gt;

&lt;p&gt;AVRマイコンのアドレス幅は16bitなので最大空間は64KBです。そのため、各種レジスタとRAMとROMを同一空間上に配置すると48KBのフラッシュが最大となるでしょう。64KB以上の大規模なプログラムとなると32bitマイコンの方が有利と感じているので、大容量品を切り捨ててうまく住み分けを図ってるなと思います。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AVR DAファミリー、DBファミリーの残念なところなのですが、32KBの品種以外は従来のAVRマイコンと同じ&lt;/strong&gt;アドレス空間になっています。上述の利点は全く得られません。PROGMEM必要です。64KB以上あると空間に収まらないので仕方ないですね。アーキテクチャは従来通りで周辺が進化しただけです。DAファミリー、DBファミリーを使う時はAVR32～だけを使うといいと思います。64KB以上ならARMなど32bitマイコンを使いましょう…&lt;/p&gt;

&lt;h2 id=&quot;周辺&quot;&gt;周辺&lt;/h2&gt;

&lt;p&gt;tiny、megaと名前がついていてもXMEGA系に属しているように周辺も豊富に乗っています。DMAが無いなどXMEGAには若干劣りますが、XMEGAと従来のmegaの中間くらいでしょうか。&lt;/p&gt;

&lt;p&gt;従来のtinyは通信機能が無かったりタイマーが貧弱だったりしたので、驚くほど豪華になった気がします。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;最大48KBのフラッシュROM、最大6KBのRAM、最大256BのEEPROM&lt;/li&gt;
  &lt;li&gt;20MHz(16MHzに変更可能)の発振器&lt;/li&gt;
  &lt;li&gt;32kHzの低消費電力発振器&lt;/li&gt;
  &lt;li&gt;3つのモードのスリープ（アイドル・スタンバイ・パワーダウン）&lt;/li&gt;
  &lt;li&gt;イベントシステム&lt;/li&gt;
  &lt;li&gt;2レベル割込み&lt;/li&gt;
  &lt;li&gt;16bitタイマー（TCA, TCB)&lt;/li&gt;
  &lt;li&gt;12bitタイマー（TCD）　※tinyAVR 1-Seriesのみ&lt;/li&gt;
  &lt;li&gt;リアルタイムクロック（RTC）&lt;/li&gt;
  &lt;li&gt;ウォッチドッグ　タイマー（WDT）&lt;/li&gt;
  &lt;li&gt;USART&lt;/li&gt;
  &lt;li&gt;TWI(I2C)&lt;/li&gt;
  &lt;li&gt;SPI&lt;/li&gt;
  &lt;li&gt;構成可能なカスタムロジック（CCL）&lt;/li&gt;
  &lt;li&gt;アナログコンパレーター（AC）&lt;/li&gt;
  &lt;li&gt;10bit(12bit)アナログデジタルコンバーター（ADC）　※tinyAVR 2-Seriesのみ12bit&lt;/li&gt;
  &lt;li&gt;8bitデジタルアナログコンバーター（DAC）　※tinyAVR 1-Seriesのみ&lt;/li&gt;
  &lt;li&gt;内部基準電圧&lt;/li&gt;
  &lt;li&gt;1ピンしか占有しないプログラム・デバッグインターフェース（UPDI）&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;クロック&quot;&gt;クロック&lt;/h3&gt;

&lt;p&gt;デフォルトで20MHzで発振する内部発振器が搭載されました。外付けクロック源なしにAVRマイコンの最大周波数で動作させることができます。この内部発振器はFUSEを変更することで16MHzの発振に変更することができるので、2の累乗分周比で切りの良い値が欲しい時は変更するといいかもしれません。&lt;/p&gt;

&lt;p&gt;内部発振器が進化した代償として、外部発振回路が取り除かれました。よって、水晶発振子やセラミック発振子を使ったクロックの供給は不可能です。水晶発振器やMEMS発振器など直接クロックを出力できるのものみに限られます。&lt;/p&gt;

&lt;h3 id=&quot;gpio&quot;&gt;GPIO&lt;/h3&gt;

&lt;p&gt;GPIOはXMEGAと同様にトグルレジスタ・クリアレジスタ・セットレジスタに分かれ、特定のピンの制御が簡単にできるようになりました。しかしレジスタが増えてしまった影響で、シングルサイクルでアクセス可能なin, out命令、ビット単位で直接アクセス可能なsbi, cbi命令の範囲外にマップされているので、GPIOへのアクセスが遅くなってしまいました。&lt;/p&gt;

&lt;p&gt;解決策としてIO空間内に仮想ポートレジスタ（VPORT）が用意されており、GPIOのレジスタを仮想ポートレジスタに結び付けることにより、仮想ポートレジスタを操作することでGPIOの高速なアクセスができる手段が用意されています。&lt;/p&gt;

&lt;h3 id=&quot;スリープモード&quot;&gt;スリープモード&lt;/h3&gt;

&lt;p&gt;スリープモードは3つしかないように見えますが、スタンバイモードはどの周辺をスリープにするか選べるので実際の選択肢は増えました。&lt;/p&gt;

&lt;h3 id=&quot;usart&quot;&gt;USART&lt;/h3&gt;

&lt;p&gt;USARTはフラクショナル・ボーレート・ジェネレーターによりボーレートの設定が可能となりました。その名の通り、小数部分を含む数でクロックの分周を設定できるようになったので、高精度なボーレートを作り出すことができます。&lt;/p&gt;

&lt;h3 id=&quot;ccl&quot;&gt;CCL&lt;/h3&gt;

&lt;p&gt;CCLは、論理ゲートやフィルター等に設定して周辺をつなぐことのできるものです。アプリケーションノートに、スイッチのチャタリングを除去してイベントを起こす例が載っています。&lt;a href=&quot;http://ww1.microchip.com/downloads/jp/AppNotes/00002451B_JP.pdf&quot;&gt;AVR® MCUのコア独立周辺モジュール入門&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;マイコンへの書き込み&quot;&gt;マイコンへの書き込み&lt;/h2&gt;

&lt;p&gt;従来から使われていたISP, TPI, PDI, HVPP, HVSP, JTAGなどは使用できず、UPDI(Unified Program and Debug Interface)という新しいインターフェースに統一されました。&lt;/p&gt;

&lt;p&gt;電子工作愛好者に利用者が多いと思われるAVRISP mkIIは、UPDIには対応していないため使うことはできません。ATMEL ICEを利用する必要があります。&lt;/p&gt;

&lt;p&gt;しかしUPDI対応プログラマは高価なため、安価なUSB-UART変換チップを使った書き込み器とそれ用の書き込み用ソフトを自作しました。&lt;del&gt;このUPDIプログラマーに関しては記事を分けましたので、そちらの記事を参照してください。プログラムはOSSとして公開しているので、新AVRシリーズを使おうとしている方に使ってもらえたらすごくうれしいです。&lt;/del&gt;同人誌のネタにすることにしました。&lt;/p&gt;

&lt;h2 id=&quot;クロスコンパイル&quot;&gt;クロスコンパイル&lt;/h2&gt;

&lt;p&gt;新しいマイコンのため、そのままのlibcやgccは対応ができていないので使えません。そこで、Atmel(Microchip)から提供されているDevice Family Packsというものをダウンロードして、libcやgccを拡張して使用します。&lt;/p&gt;

&lt;p&gt;Device Family Packsは&lt;a href=&quot;https://packs.download.microchip.com/&quot;&gt;Microchip Packs Repository&lt;/a&gt;からダウンロードします。&lt;/p&gt;

&lt;p&gt;※古い方のリポジトリ&lt;a href=&quot;http://packs.download.atmel.com/&quot;&gt;http://packs.download.atmel.com/&lt;/a&gt;と新しい方のリポジトリは&lt;a href=&quot;https://packs.download.microchip.com/&quot;&gt;https://packs.download.microchip.com/&lt;/a&gt;が存在します。残念なことにATtinyの新しい方（バージョン２以降）はリンクでコケるようで使えません。現時点でtinyマイコンを使うときは古い方をダウンロードしましょう。&lt;/p&gt;

&lt;p&gt;Device Family Packsの使い方を解説します。&lt;/p&gt;

&lt;p&gt;ダウンロードするとMicrochip.ATxxxx_DFP.x.x.xx.atpackのような名前のファイルがダウンロードされます。実態はZIPファイルなので、.atpackを.zipに変更して適当なフォルダに展開します。&lt;/p&gt;

&lt;p&gt;展開した中のフォルダには、AVRマイコンのレジスタの定義などが記述されたXMLファイルや、ヘッダーファイル、ライブラリなどが入っているのが見えます。&lt;/p&gt;

&lt;p&gt;あとは、GCCでコンパイルする際にこのヘッダーファイルが入っているフォルダとライブラリファイルが入っているフォルダを-Iオプションと-Bオプションとして渡してあげます。&lt;/p&gt;

&lt;p&gt;例えば、ホームフォルダにatpackを展開して、main.cファイルをATmega4809用にコンパイルする際は、&lt;/p&gt;

&lt;pre&gt;&lt;samp&gt;$ &lt;kbd&gt;avr-gcc -mmcu=atmega4809 -B ~/Microchip.ATmega_DFP.2.0.12/gcc/dev/atmega4809/ -I ~/Microchip.ATmega_DFP.2.0.12/include/ main.c -o main.o&lt;/kbd&gt;&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;とします。&lt;/p&gt;

&lt;p&gt;elfファイルからプログラマーで書き込むためにインテルhexファイルに変換することがあると思います。上述のようにセクション.rodataが分離されたので、objcopyする際にはちゃんと.rodataを入れてやらないと定数領域が変換されないので注意してください。&lt;/p&gt;

&lt;pre&gt;&lt;samp&gt;$ &lt;kbd&gt;avr-objcopy -j .text &lt;strong&gt;-j .rodata&lt;/strong&gt; -j .data -j .eeprom -j .fuse -O ihex output.elf output.hex&lt;/kbd&gt;&lt;/samp&gt;&lt;/pre&gt;

&lt;h2 id=&quot;実際に新しいavrシリーズを使ってみる&quot;&gt;実際に新しいAVRシリーズを使ってみる&lt;/h2&gt;

&lt;p&gt;&lt;del&gt;記事が長くなりそうなので、別の記事で書こうと思います。&lt;/del&gt;同人誌のネタにすることにしました。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>TJCTF2019 write-up</title>
    <link href="https://blog.m7u.net/writeup/tjctf2019.html" />
    <updated>2019-04-11T14:43:16+09:00</updated>
    <id>https://blog.m7u.net/writeup/tjctf2019</id>
    <content type="html">&lt;p&gt;TJCTF2019に参加しました。その記録です。&lt;/p&gt;

&lt;h2 id=&quot;blurry&quot;&gt;Blurry&lt;/h2&gt;

&lt;h3 id=&quot;description&quot;&gt;Description&lt;/h3&gt;

&lt;p&gt;I found this slightly sketchy &lt;a href=&quot;https://blurry.tjctf.org/&quot;&gt;site&lt;/a&gt; that deals flags, but my mom hasn’t given me my allowance yet :(. You tryna help me out?&lt;/p&gt;

&lt;h3 id=&quot;details&quot;&gt;Details&lt;/h3&gt;

&lt;dl&gt;
  &lt;dt&gt;Points&lt;/dt&gt;
  &lt;dd&gt;5&lt;/dd&gt;
  &lt;dt&gt;Genre&lt;/dt&gt;
  &lt;dd&gt;Web&lt;/dd&gt;
  &lt;dt&gt;Author&lt;/dt&gt;
  &lt;dd&gt;boomo&lt;/dd&gt;
  &lt;dt&gt;Solves&lt;/dt&gt;
  &lt;dd&gt;585&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3 id=&quot;method&quot;&gt;Method&lt;/h3&gt;

&lt;p&gt;siteをクリックするとフラグがぼかされたサイトが表示されます。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/tjctf2019/blurry.png&quot; alt=&quot;site&quot; /&gt;&lt;/p&gt;

&lt;p&gt;開発者ツールですぐにフラグが見えます。&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Click &lt;a href=&quot;https://www.youtube.com/watch?v=65BrEZxZIVQ&quot;&gt;here&lt;/a&gt; to buy access to our flag.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;hereをクリックするとyoutubeに飛びますが、動画は何だったんでしょう。有名な動画なんでしょうか？&lt;/p&gt;

&lt;h3 id=&quot;flag&quot;&gt;Flag&lt;/h3&gt;

&lt;p&gt;tjctf{cl0se_1nspecti0n}&lt;/p&gt;

&lt;h2 id=&quot;double-duty&quot;&gt;Double Duty&lt;/h2&gt;

&lt;h3 id=&quot;description-1&quot;&gt;Description&lt;/h3&gt;

&lt;p&gt;Everyone knows that caesar ciphers aren’t very good. So I caesared my message 2000 times. Good luck trying to decode that!&lt;/p&gt;

&lt;p&gt;yfn uzu pfl tirtb dp katkw{jvbivk_tfuv}&lt;/p&gt;

&lt;h3 id=&quot;details-1&quot;&gt;Details&lt;/h3&gt;

&lt;dl&gt;
  &lt;dt&gt;Points&lt;/dt&gt;
  &lt;dd&gt;5&lt;/dd&gt;
  &lt;dt&gt;Genre&lt;/dt&gt;
  &lt;dd&gt;Cryptography&lt;/dd&gt;
  &lt;dt&gt;Author&lt;/dt&gt;
  &lt;dd&gt;boomo&lt;/dd&gt;
  &lt;dt&gt;Solves&lt;/dt&gt;
  &lt;dd&gt;528&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3 id=&quot;method-1&quot;&gt;Method&lt;/h3&gt;

&lt;p&gt;カエサル暗号らしいです。2000回やったらしいですが、26回で一回りするので全く意味がないですね…。
カエサル暗号を解くプログラムに突っ込んであげると、意味の繋がる文章が一つ出てきます。&lt;/p&gt;

&lt;p&gt;double_duty.c&lt;/p&gt;

&lt;div class=&quot;language-c highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;#include&lt;/span&gt; &lt;span class=&quot;cpf&quot;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class=&quot;cp&quot;&gt;
#include&lt;/span&gt; &lt;span class=&quot;cpf&quot;&gt;&amp;lt;ctype.h&amp;gt;&lt;/span&gt;&lt;span class=&quot;cp&quot;&gt;
&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;main&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;s&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;yfn uzu pfl tirtb dp katkw{jvbivk_tfuv}&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;&apos;z&apos;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;sc&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;s&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;islower&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;n&quot;&gt;putchar&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(((&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;sc&quot;&gt;&apos;a&apos;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;26&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;sc&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
            &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;n&quot;&gt;putchar&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
            &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;puts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;pre&gt;&lt;samp&gt;$ &lt;kbd&gt;cc double_duty.c&lt;/kbd&gt;
$ &lt;kbd&gt;./a.out | grep tjctf&lt;/kbd&gt;
how did you crack my tjctf{sekret_code}
&lt;/samp&gt;&lt;/pre&gt;

&lt;h3 id=&quot;flag-1&quot;&gt;Flag&lt;/h3&gt;

&lt;p&gt;tjctf{sekret_code}&lt;/p&gt;

&lt;h2 id=&quot;mc-woes&quot;&gt;MC Woes&lt;/h2&gt;

&lt;h3 id=&quot;description-2&quot;&gt;Description&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://static.tjctf.org/my_world.zip&quot;&gt;My world&lt;/a&gt; won’t launch anymore! I’m sure its something in the files…&lt;/p&gt;

&lt;h3 id=&quot;details-2&quot;&gt;Details&lt;/h3&gt;

&lt;dl&gt;
  &lt;dt&gt;Points&lt;/dt&gt;
  &lt;dd&gt;5&lt;/dd&gt;
  &lt;dt&gt;Genre&lt;/dt&gt;
  &lt;dd&gt;Forensics&lt;/dd&gt;
  &lt;dt&gt;Author&lt;/dt&gt;
  &lt;dd&gt;boomo&lt;/dd&gt;
  &lt;dt&gt;Solves&lt;/dt&gt;
  &lt;dd&gt;275&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3 id=&quot;method-2&quot;&gt;Method&lt;/h3&gt;

&lt;p&gt;マイクラなんも分からん。&lt;/p&gt;

&lt;h3 id=&quot;flag-2&quot;&gt;Flag&lt;/h3&gt;

&lt;p&gt;-&lt;/p&gt;

&lt;h2 id=&quot;touch-base&quot;&gt;Touch Base&lt;/h2&gt;

&lt;h3 id=&quot;description-3&quot;&gt;Description&lt;/h3&gt;

&lt;p&gt;Decode this string for an easy flag!&lt;/p&gt;

&lt;p&gt;Encoded: dGpjdGZ7ajJzdF9zMG0zX2I0c2U2NH0=&lt;/p&gt;

&lt;h3 id=&quot;details-3&quot;&gt;Details&lt;/h3&gt;

&lt;dl&gt;
  &lt;dt&gt;Points&lt;/dt&gt;
  &lt;dd&gt;5&lt;/dd&gt;
  &lt;dt&gt;Genre&lt;/dt&gt;
  &lt;dd&gt;Cryptography&lt;/dd&gt;
  &lt;dt&gt;Author&lt;/dt&gt;
  &lt;dd&gt;rj9&lt;/dd&gt;
  &lt;dt&gt;Solves&lt;/dt&gt;
  &lt;dd&gt;540&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3 id=&quot;method-3&quot;&gt;Method&lt;/h3&gt;

&lt;p&gt;Base64ですね。&lt;/p&gt;

&lt;pre&gt;&lt;samp&gt;$ &lt;kbd&gt;echo dGpjdGZ7ajJzdF9zMG0zX2I0c2U2NH0= | base64 -d&lt;/kbd&gt;
tjctf{j2st_s0m3_b4se64}
&lt;/samp&gt;&lt;/pre&gt;

&lt;h3 id=&quot;flag-3&quot;&gt;Flag&lt;/h3&gt;

&lt;p&gt;tjctf{j2st_s0m3_b4se64}&lt;/p&gt;

&lt;h2 id=&quot;corsair&quot;&gt;Corsair&lt;/h2&gt;

&lt;h3 id=&quot;description-4&quot;&gt;Description&lt;/h3&gt;

&lt;p&gt;Here is a picture of my favorite plane!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://static.tjctf.org/corsair.jpg&quot;&gt;corsair&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/tjctf2019/corsair.jpg&quot; alt=&quot;corsair&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;details-4&quot;&gt;Details&lt;/h3&gt;

&lt;dl&gt;
  &lt;dt&gt;Points&lt;/dt&gt;
  &lt;dd&gt;5&lt;/dd&gt;
  &lt;dt&gt;Genre&lt;/dt&gt;
  &lt;dd&gt;Forensics&lt;/dd&gt;
  &lt;dt&gt;Author&lt;/dt&gt;
  &lt;dd&gt;rj9&lt;/dd&gt;
  &lt;dt&gt;Solves&lt;/dt&gt;
  &lt;dd&gt;401&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3 id=&quot;method-4&quot;&gt;Method&lt;/h3&gt;

&lt;p&gt;左上にうっすら何かが見えます。GIMPとかで色調を変えてやるとみやすくなります。&lt;/p&gt;

&lt;p&gt;が、最初は全く気付きませんでした！！&lt;/p&gt;

&lt;p&gt;exiftoolをみたり、ZIPが中に入ってないかみたり、ステガノグラフィーないか調べたりしましたが、全く当たらず。&lt;/p&gt;

&lt;p&gt;画像検索してみると、元画像が見つかりました。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.richard-seaman.com/Aircraft/AirShows/Midland/2008/Highlights/F4uMidland08.jpg&quot;&gt;http://www.richard-seaman.com/Aircraft/AirShows/Midland/2008/Highlights/F4uMidland08.jpg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CTFの問題で出されている画像の大きさが975×704で、元画像が980×705だったので、この若干の大きさの違いが関係しているのかなって考えましたが当たらず。&lt;/p&gt;

&lt;p&gt;と、このような感じで時間をとられてしまいました。&lt;/p&gt;

&lt;h3 id=&quot;flag-4&quot;&gt;Flag&lt;/h3&gt;

&lt;p&gt;tjctf{c0l0r_pl4n3s_ar3_c00l}&lt;/p&gt;

&lt;h2 id=&quot;python-in-one-line&quot;&gt;Python in One Line&lt;/h2&gt;

&lt;h3 id=&quot;description-5&quot;&gt;Description&lt;/h3&gt;

&lt;p&gt;It’s not code golf but it’s something…&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://static.tjctf.org/one.py&quot;&gt;one.py&lt;/a&gt; This is printed when you input the flag: .. - / .. … -. - / – — .-. … / -.-. — -.. .&lt;/p&gt;

&lt;h3 id=&quot;details-5&quot;&gt;Details&lt;/h3&gt;

&lt;dl&gt;
  &lt;dt&gt;Points&lt;/dt&gt;
  &lt;dd&gt;10&lt;/dd&gt;
  &lt;dt&gt;Genre&lt;/dt&gt;
  &lt;dd&gt;Reversing&lt;/dd&gt;
  &lt;dt&gt;Author&lt;/dt&gt;
  &lt;dd&gt;boomo&lt;/dd&gt;
  &lt;dt&gt;Solves&lt;/dt&gt;
  &lt;dd&gt;414&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3 id=&quot;method-5&quot;&gt;Method&lt;/h3&gt;

&lt;p&gt;Pythonのファイルに記号とアルファベットの対応が書いてあったので、手作業でフラグを書きました。&lt;/p&gt;

&lt;h3 id=&quot;flag-5&quot;&gt;Flag&lt;/h3&gt;

&lt;p&gt;tjctf{jchiefcoil}&lt;/p&gt;

&lt;h2 id=&quot;sportsmanship&quot;&gt;Sportsmanship&lt;/h2&gt;

&lt;h3 id=&quot;description-6&quot;&gt;Description&lt;/h3&gt;

&lt;p&gt;It is simply this: do not tire, never lose interest, never grow indifferent—lose your invaluable curiosity and you let yourself die. It’s as simple as that.” “I’m a liar and a cheat and a coward, but I will never, ever, let a friend down. Unless of course not letting them down requires honesty, &lt;strong&gt;fair play&lt;/strong&gt;, or bravery.&lt;/p&gt;

&lt;p&gt;ciphertext: ROEFICFEENEBZDLFPY&lt;/p&gt;

&lt;p&gt;key: UNPROBLEMATICDFGHKQSVWXYZ&lt;/p&gt;

&lt;p&gt;Flag format is tjctf{plaintext}&lt;/p&gt;

&lt;h3 id=&quot;details-6&quot;&gt;Details&lt;/h3&gt;

&lt;dl&gt;
  &lt;dt&gt;Points&lt;/dt&gt;
  &lt;dd&gt;10&lt;/dd&gt;
  &lt;dt&gt;Genre&lt;/dt&gt;
  &lt;dd&gt;Cryptography&lt;/dd&gt;
  &lt;dt&gt;Author&lt;/dt&gt;
  &lt;dd&gt;rj9&lt;/dd&gt;
  &lt;dt&gt;Solves&lt;/dt&gt;
  &lt;dd&gt;294&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3 id=&quot;method-6&quot;&gt;Method&lt;/h3&gt;

&lt;p&gt;太字で&lt;strong&gt;fair play&lt;/strong&gt;ってあるので、Playfair暗号っぽいです。
デコードしたんですが、なぜかフラグが合わずよくわかりません。&lt;/p&gt;

&lt;p&gt;tjctf{PRACTICALPLAYFAIR}もしくはtjctf{PRACTICALPLAYFAIRX}だと思ったんだけど正解は何だったんでしょうか？&lt;/p&gt;

&lt;h3 id=&quot;flag-6&quot;&gt;Flag&lt;/h3&gt;

&lt;p&gt;-&lt;/p&gt;

&lt;h2 id=&quot;guess-my-hashword&quot;&gt;Guess My Hashword&lt;/h2&gt;

&lt;h3 id=&quot;description-7&quot;&gt;Description&lt;/h3&gt;

&lt;p&gt;I bet you’ll never guess my password!&lt;/p&gt;

&lt;p&gt;I hashed tjctf{[word]} - my word has a captial letter, two lowercase letters, a digit, and an underscore. ex: hash(‘tjctf{o_0Bo}’) or hash(‘tjctf{Aaa0_}’)&lt;/p&gt;

&lt;p&gt;Here’s the md5 hash: 31f40dc5308fa2a311d2e2ba8955df6c&lt;/p&gt;

&lt;h3 id=&quot;details-7&quot;&gt;Details&lt;/h3&gt;

&lt;dl&gt;
  &lt;dt&gt;Points&lt;/dt&gt;
  &lt;dd&gt;10&lt;/dd&gt;
  &lt;dt&gt;Genre&lt;/dt&gt;
  &lt;dd&gt;Cryptography&lt;/dd&gt;
  &lt;dt&gt;Author&lt;/dt&gt;
  &lt;dd&gt;boomo&lt;/dd&gt;
  &lt;dt&gt;Solves&lt;/dt&gt;
  &lt;dd&gt;193&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3 id=&quot;method-7&quot;&gt;Method&lt;/h3&gt;

&lt;p&gt;tjctf{o_0Bo}みたいなやつをmd5したから元のやつを当ててねって問題です。&lt;/p&gt;

&lt;p&gt;大文字が1つ、小文字が2つ、数字が1つ、アンダースコアが1つと限られているので全探索すればよさそうです。&lt;/p&gt;

&lt;p&gt;そういうわけでプログラムを書いて全探索します。&lt;/p&gt;

&lt;p&gt;guess_my_hashword.c&lt;/p&gt;

&lt;div class=&quot;language-c highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;#include&lt;/span&gt; &lt;span class=&quot;cpf&quot;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class=&quot;cp&quot;&gt;
#include&lt;/span&gt; &lt;span class=&quot;cpf&quot;&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;span class=&quot;cp&quot;&gt;
#include&lt;/span&gt; &lt;span class=&quot;cpf&quot;&gt;&amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;span class=&quot;cp&quot;&gt;
#include&lt;/span&gt; &lt;span class=&quot;cpf&quot;&gt;&amp;lt;sys/types.h&amp;gt;&lt;/span&gt;&lt;span class=&quot;cp&quot;&gt;
#include&lt;/span&gt; &lt;span class=&quot;cpf&quot;&gt;&amp;lt;ctype.h&amp;gt;&lt;/span&gt;&lt;span class=&quot;cp&quot;&gt;
#include&lt;/span&gt; &lt;span class=&quot;cpf&quot;&gt;&amp;lt;md5.h&amp;gt;&lt;/span&gt;&lt;span class=&quot;cp&quot;&gt;
&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;31f40dc5308fa2a311d2e2ba8955df6c&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;flag&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Aaa0_&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;used&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;

&lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;checkMD5&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;MD5_CTX&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;md5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;33&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;sprintf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;flag&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;tjctf{%s}&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;MD5Init&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;MD5Update&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;flag&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;strlen&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;flag&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;));&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;MD5End&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;md5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;md5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hash&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;puts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;flag&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;EXIT_SUCCESS&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;round_robin&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sc&quot;&gt;&apos;\0&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;checkMD5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;isnumber&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sc&quot;&gt;&apos;0&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;sc&quot;&gt;&apos;9&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;round_robin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;isupper&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sc&quot;&gt;&apos;A&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;sc&quot;&gt;&apos;Z&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;round_robin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;islower&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sc&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;sc&quot;&gt;&apos;z&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;round_robin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sc&quot;&gt;&apos;_&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;round_robin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;permutation&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;round_robin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;used&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;used&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;word&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;permutation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;used&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;main&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;permutation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;pre&gt;&lt;samp&gt;$ &lt;kbd&gt;cc -lmd guess_my_hashword.c&lt;/kbd&gt;
$ &lt;kbd&gt;./a.out&lt;/kbd&gt;
tjctf{w0w_E}
&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;ところで、このプログラムは小文字2つが重複してしまっているのですが、このような順列を列挙するプログラムってどう書けばいいのか分からなかったので、誰か教えてください。
ググってみたのですが、理解できず…&lt;/p&gt;

&lt;h3 id=&quot;flag-7&quot;&gt;Flag&lt;/h3&gt;

&lt;p&gt;tjctf{w0w_E}&lt;/p&gt;

&lt;h2 id=&quot;easy-as-rsa&quot;&gt;Easy as RSA&lt;/h2&gt;

&lt;h3 id=&quot;description-8&quot;&gt;Description&lt;/h3&gt;

&lt;p&gt;Decrypt this for a quick flag!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://static.tjctf.org/rsa.txt&quot;&gt;rsa&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;details-8&quot;&gt;Details&lt;/h3&gt;

&lt;dl&gt;
  &lt;dt&gt;Points&lt;/dt&gt;
  &lt;dd&gt;243&lt;/dd&gt;
  &lt;dt&gt;Genre&lt;/dt&gt;
  &lt;dd&gt;Cryptography&lt;/dd&gt;
  &lt;dt&gt;Author&lt;/dt&gt;
  &lt;dd&gt;rj9&lt;/dd&gt;
  &lt;dt&gt;Solves&lt;/dt&gt;
  &lt;dd&gt;243&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3 id=&quot;method-8&quot;&gt;Method&lt;/h3&gt;

&lt;p&gt;N:素数の積（公開鍵）、E:公開鍵のもう一方、C:暗号文 が提示されています。&lt;/p&gt;

&lt;p&gt;msieveというツールでNを素因数分解します。すると、素数のペアp, qが出てくるので、それを使って秘密鍵Dを生成します。秘密鍵Dで暗号文Cを複合したらフラグが出てきます。&lt;/p&gt;

&lt;h3 id=&quot;flag-8&quot;&gt;Flag&lt;/h3&gt;

&lt;p&gt;tjctf{RSA_2_3asy}&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;簡単な問題が多かったので、スラスラ解けて面白かったです。
つぎはもっと難しい問題ができるようにしないと！&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Harekaze CTF 2018 write-up</title>
    <link href="https://blog.m7u.net/writeup/harekazectf2018.html" />
    <updated>2018-03-15T14:05:00+09:00</updated>
    <id>https://blog.m7u.net/writeup/harekazectf2018</id>
    <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;2月10日から行われたHarekaze CTF 2018に参加しました。いろいろとあってあまり解くのに時間が取れませんでしたが、3つだけ解いたので記録に残しておきます。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/harekazectf2018.png&quot; alt=&quot;Questions&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;welcome-flag&quot;&gt;welcome flag&lt;/h2&gt;

&lt;h3 id=&quot;description&quot;&gt;Description&lt;/h3&gt;

&lt;p&gt;The flag is HarekazeCTF{Welcome to the Harekaze CTF!}. Enjoy!&lt;/p&gt;

&lt;h3 id=&quot;details&quot;&gt;Details&lt;/h3&gt;

&lt;dl&gt;
  &lt;dt&gt;Points&lt;/dt&gt;
  &lt;dd&gt;10&lt;/dd&gt;
  &lt;dt&gt;Genre&lt;/dt&gt;
  &lt;dd&gt;WarmUp&lt;/dd&gt;
  &lt;dt&gt;Author&lt;/dt&gt;
  &lt;dd&gt;isoroku&lt;/dd&gt;
  &lt;dt&gt;Solves&lt;/dt&gt;
  &lt;dd&gt;440&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3 id=&quot;method&quot;&gt;Method&lt;/h3&gt;

&lt;p&gt;CTFで初めの問題に必ずあるやつです。問題文をコピーアンドペーストして送信すれば点がもらえました。なお、コピーするときに文字列の前後に空白が含まれていると、Incorrectってなって初回から非常に萎えますので、気をつけてコピーします。&lt;/p&gt;

&lt;p&gt;ちゃんとフラグの送信ができるか確認するだけの問題ですが、点数付くし☆もらえるとうれしいですね。モチベーションアップできます。
なぜかこの手のは解答しない人もいますが、なぜなんでしょうか…？&lt;/p&gt;

&lt;h3 id=&quot;flag&quot;&gt;Flag&lt;/h3&gt;

&lt;p&gt;HarekazeCTF{Welcome to the Harekaze CTF!}&lt;/p&gt;

&lt;h2 id=&quot;easy-probrem&quot;&gt;easy probrem&lt;/h2&gt;

&lt;p&gt;Do you know ROT13? Can you decode this text?
UnerxnmrPGS{Uryyb, jbeyq!}&lt;/p&gt;

&lt;h3 id=&quot;details-1&quot;&gt;Details&lt;/h3&gt;

&lt;dl&gt;
  &lt;dt&gt;Points&lt;/dt&gt;
  &lt;dd&gt;30&lt;/dd&gt;
  &lt;dt&gt;Genere&lt;/dt&gt;
  &lt;dd&gt;WarmUp&lt;/dd&gt;
  &lt;dt&gt;Author&lt;/dt&gt;
  &lt;dd&gt;kimiyuki&lt;/dd&gt;
  &lt;dt&gt;Solves&lt;/dt&gt;
  &lt;dd&gt;426&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3 id=&quot;method-1&quot;&gt;Method&lt;/h3&gt;

&lt;p&gt;問題文にROT13と書いてあるので、&lt;a href=&quot;https://ja.wikipedia.org/wiki/ROT13&quot;&gt;ROT13&lt;/a&gt;暗号だと予想できます。
ぐぐるとオンラインでROT13をデコードするサイトが見つかりますので、そのサイトに入力しました。&lt;/p&gt;

&lt;h3 id=&quot;flag-1&quot;&gt;Flag&lt;/h3&gt;

&lt;p&gt;HarekazeCTF{Hello, world!}&lt;/p&gt;

&lt;h2 id=&quot;obfuscated-password-checker&quot;&gt;Obfuscated Password Checker&lt;/h2&gt;

&lt;p&gt;パスワードを手に入れてください!
Get the password!
src.zip&lt;/p&gt;

&lt;h3 id=&quot;details-2&quot;&gt;Details&lt;/h3&gt;

&lt;dl&gt;
  &lt;dt&gt;Points&lt;/dt&gt;
  &lt;dd&gt;50&lt;/dd&gt;
  &lt;dt&gt;Genere&lt;/dt&gt;
  &lt;dd&gt;Web&lt;/dd&gt;
  &lt;dt&gt;Author&lt;/dt&gt;
  &lt;dd&gt;st98&lt;/dd&gt;
  &lt;dt&gt;Solves&lt;/dt&gt;
  &lt;dd&gt;112&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3 id=&quot;method-2&quot;&gt;Method&lt;/h3&gt;

&lt;p&gt;示されたsrc.zipをダウンロードすると、htmlファイルとjsファイルがありました。htmlファイルをブラウザで開いて、フォームに何かを入力すると難読化されたjsが処理して出力をくれるようです。&lt;/p&gt;

&lt;p&gt;難読化されたjsファイルを読むわけにはいかないので、ブラウザのデバッガで動作を追おうと思ったのですが、デバッガを使ったことなかったので使い方がわからず解くのは断念しました。&lt;/p&gt;

&lt;h3 id=&quot;flag-2&quot;&gt;Flag&lt;/h3&gt;

&lt;p&gt;-&lt;/p&gt;

&lt;h2 id=&quot;div-n&quot;&gt;div N&lt;/h2&gt;

&lt;pre&gt;&lt;samp&gt;$ &lt;kbd&gt;cat foo.c&lt;/kbd&gt;
long long div(long long x) {
    return x / N;
}
$ &lt;kbd&gt;gcc -DN=$N -c -O2 foo.c&lt;/kbd&gt;
$ &lt;kbd&gt;objdump -d foo.o&lt;/kbd&gt;

foo.o:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000
:
    0:	48 89 f8             	mov    %rdi,%rax
    3:	48 ba 01 0d 1a 82 9a 	movabs $0x49ea309a821a0d01,%rdx
    a:	30 ea 49
    d:	48 c1 ff 3f          	sar    $0x3f,%rdi
    11:	48 f7 ea             	imul   %rdx
    14:	48 c1 fa 30          	sar    $0x30,%rdx
    18:	48 89 d0             	mov    %rdx,%rax
    1b:	48 29 f8             	sub    %rdi,%rax
    1e:	c3                   	retq
$ &lt;kbd&gt;echo “HarekazeCTF{$N}” &amp;gt; /dev/null&lt;/kbd&gt;
&lt;/samp&gt;&lt;/pre&gt;

&lt;h3 id=&quot;details-3&quot;&gt;Details&lt;/h3&gt;

&lt;dl&gt;
  &lt;dt&gt;Points&lt;/dt&gt;
  &lt;dd&gt;100&lt;/dd&gt;
  &lt;dt&gt;Genere&lt;/dt&gt;
  &lt;dd&gt;Rev&lt;/dd&gt;
  &lt;dt&gt;Author&lt;/dt&gt;
  &lt;dd&gt;kimiyuki&lt;/dd&gt;
  &lt;dt&gt;Solves&lt;/dt&gt;
  &lt;dd&gt;90&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3 id=&quot;method-3&quot;&gt;Method&lt;/h3&gt;

&lt;p&gt;div関数の逆アセンブラの出力があり、これを見てdiv関数はなんの数で割ってるかを示せばそれがフラグのようです。&lt;/p&gt;

&lt;p&gt;アセンブリを直接見て解いてもいいですが静的解析よりも動的解析の方が圧倒的に楽なので、せっかくアセンブリがわかってるのでそれを実行してみました。
ABIがわかんないですがCTFではLinuxがほとんどなのでLinux上で実行しました。
マイコンプログラミングする人は、アセンブリ関数をよく書くと思いますが、それと同じ方法でやりました。&lt;/p&gt;

&lt;p&gt;まずは、問題文の逆アセンブラの出力をコピーして、アセンブリファイルを用意しました。&lt;/p&gt;

&lt;p&gt;foo.s&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;.global div

div:
    mov    %rdi,%rax
    movabs $0x49ea309a821a0d01,%rdx
    sar    $0x3f,%rdi
    imul   %rdx
    sar    $0x30,%rdx
    mov    %rdx,%rax
    sub    %rdi,%rax
    retq
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;次に、このdiv関数を使うためのCプログラムを用意しました。&lt;/p&gt;

&lt;p&gt;test.c&lt;/p&gt;

&lt;div class=&quot;language-c highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;#include&lt;/span&gt; &lt;span class=&quot;cpf&quot;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class=&quot;cp&quot;&gt;
&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;main&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;%lld&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;%lld&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;));&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;コンパイルしました。&lt;/p&gt;

&lt;pre&gt;&lt;samp&gt;$ &lt;kbd&gt;gcc -c foo.s&lt;/kbd&gt;
$ &lt;kbd&gt;gcc -c test.c&lt;/kbd&gt;
$ &lt;kbd&gt;gcc -0 foo.elf foo.o test.o&lt;/kbd&gt;
&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;実行ファイルfoo.elfができたので、適当に大きな数を入力して実行してみました。&lt;/p&gt;

&lt;pre&gt;&lt;samp&gt;$ &lt;kbd&gt;./foo.elf&lt;/kbd&gt;
10000000000
0
&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;実行できました。Linux環境で間違いなかったようです。
こんなに大きい数を入力しても割ったら0とは当てずっぽうで当たるわけがないので、素直にプログラムで探索することにしました。
（といいつつ、1になったやつを何度か当てずっぽうで入れたのは内緒）&lt;/p&gt;

&lt;p&gt;test.c&lt;/p&gt;

&lt;div class=&quot;language-c highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;cp&quot;&gt;#include&lt;/span&gt; &lt;span class=&quot;cpf&quot;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class=&quot;cp&quot;&gt;
#include&lt;/span&gt; &lt;span class=&quot;cpf&quot;&gt;&amp;lt;stdint.h&amp;gt;&lt;/span&gt;&lt;span class=&quot;cp&quot;&gt;
&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;main&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;min&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;max&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;INT64_MAX&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;max&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;min&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;min&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;max&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;max&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;min&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
     &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;%lld&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;たぶん二分探索ってやつです。ループを終えると、minに割って0になる時の最大値、maxに割って1になる時の最小値＝割る数が導かれます。
プログラムを書き換えたので、再度コンパイルして実行しました。&lt;/p&gt;

&lt;pre&gt;&lt;samp&gt;$ &lt;kbd&gt;gcc -c test.c&lt;/kbd&gt;
$ &lt;kbd&gt;gcc -o foo.elf foo.o test.o&lt;/kbd&gt;
$ &lt;kbd&gt;./foo.elf&lt;/kbd&gt;
974873638438446
&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;はい。一瞬で答えが出ました。&lt;/p&gt;

&lt;h3 id=&quot;flag-3&quot;&gt;Flag&lt;/h3&gt;

&lt;p&gt;HarekazeCTF{974873638438446}&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;時間が取れずほとんど解けなかったのが心残りでしたが、少しの間でも楽しめたので良かったです。&lt;/p&gt;
</content>
  </entry>
  

</feed>