user82411: I want to extract output addresses from tx messages in any bitcoin pcap.
currently, i extract tx messages which it's output script starts with "0x76" or "0xA9", but i don't know how can i extract the other types of op_codes which is introduced here:
https://en.bitcoin.it/wiki/Script

user90837: Most of the output addresses follow one of the following 'standard outputs':
Legacy Outputs

P2PK: scriptPubKey: <public_key> OP_CHECKSIG. Output pays the public key directly and hence does not have a direct address.
P2PKH: scriptPubKey: OP_DUP OP_HASH160 <hash160 of pubkey> OP_EQUALVERIFY OP_CHECKSIG. For this kind of output you just need to base58check the hash160 of pubkey with version 0x00 and you will get the addresses that starts with 1.
P2SH: scriptPubKey: OP_HASH160 <redeem_script> OP_EQUAL. You again need to just base58check the redeem_script with version 0x05 and you will get an address starting with 3.
Multisig: scriptPubKey: M <public_key1>...<public_keyN> N OP_CHECKMULTISIG. In this case, you cannot get the addresses as the output pays the public keys directly.

Segwit Outputs

P2WPKH: scriptPubKey: <0x00 (version)> <hash160 of pubkey>. You will need to create a bech32 address using the version and 20-byte redeem script and you will get an address starting with bc1. You can find the python script for bech32 encoding here.
P2SH: scriptPubKey <version: 0x00> <sha256 of redeem_script>. Again a bech32 address starting bc1 but the redeem_script is 32 bytes rather than 20 bytes for P2WPKH.
P2SH(P2WPKH): scriptPubKey: OP_HASH160 <redeem_script > OP_EQUAL. The encoding is same as legacy P2SH. Base58check with 0x05 version. For a more detailed overview on how the 'redeem_script` and addresses are generated for P2SH(P2WPKH) see my other answer here.

OP_RETURN
Many times people like to encode some data in the Bitcoin blockchain. For that, you use a OP_RETURN opcode. The scriptPubKey:<OP_RETURN><OP_PUSHDATA1><bytes to push><script>.

82411: <p>I want to extract output addresses from tx messages in any bitcoin pcap.</p>

<p>currently, i extract tx messages which it's output script starts with "0x76" or "0xA9", but i don't know how can i extract the other types of op_codes which is introduced here:</p>

<p><a href="https://en.bitcoin.it/wiki/Script" rel="nofollow noreferrer">https://en.bitcoin.it/wiki/Script</a></p>
 90837: <p>Most of the output addresses follow one of the following 'standard outputs':</p>

<p><strong>Legacy Outputs</strong></p>

<ol>
<li><p>P2PK: <code>scriptPubKey: &lt;public_key&gt; OP_CHECKSIG</code>. Output pays the public key directly and hence does not have a direct address.</p></li>
<li><p>P2PKH: <code>scriptPubKey: OP_DUP OP_HASH160 &lt;hash160 of pubkey&gt; OP_EQUALVERIFY OP_CHECKSIG</code>. For this kind of output you just need to base58check the <code>hash160 of pubkey</code> with version <code>0x00</code> and you will get the addresses that starts with 1.</p></li>
<li><p>P2SH: <code>scriptPubKey: OP_HASH160 &lt;redeem_script&gt; OP_EQUAL</code>. You again need to just base58check the <code>redeem_script</code> with version <code>0x05</code> and you will get an address starting with 3.</p></li>
<li><p>Multisig: <code>scriptPubKey: M &lt;public_key1&gt;...&lt;public_keyN&gt; N OP_CHECKMULTISIG</code>. In this case, you cannot get the addresses as the output pays the public keys directly.</p></li>
</ol>

<p><strong>Segwit Outputs</strong></p>

<ol>
<li>P2WPKH: <code>scriptPubKey: &lt;0x00 (version)&gt; &lt;hash160 of pubkey&gt;</code>. You will need to create a bech32 address using the version and 20-byte redeem script and you will get an address starting with bc1. You can find the python script for bech32 encoding <a href="https://github.com/sipa/bech32/blob/master/ref/python/segwit_addr.py" rel="nofollow noreferrer">here</a>.</li>
<li>P2SH: <code>scriptPubKey &lt;version: 0x00&gt; &lt;sha256 of redeem_script&gt;</code>. Again a bech32 address starting bc1 but the redeem_script is 32 bytes rather than 20 bytes for P2WPKH.</li>
<li>P2SH(P2WPKH): <code>scriptPubKey: OP_HASH160 &lt;redeem_script &gt; OP_EQUAL</code>. The encoding is same as legacy P2SH. Base58check with <code>0x05</code> version. For a more detailed overview on how the 'redeem_script` and addresses are generated for P2SH(P2WPKH) see my other answer <a href="https://bitcoin.stackexchange.com/questions/55391/p2wsh-witness-v0-scripthash-how-to-derive-an-address/83423#83423">here</a>.</li>
</ol>

<p><strong>OP_RETURN</strong></p>

<p>Many times people like to encode some data in the Bitcoin blockchain. For that, you use a OP_RETURN opcode. The <code>scriptPubKey:&lt;OP_RETURN&gt;&lt;OP_PUSHDATA1&gt;&lt;bytes to push&gt;&lt;script&gt;</code>.</p>
