为了更好地理解网络概念并提高我的python技能,我试图用python实现一个数据包嗅探器.我刚开始学习python,所以代码当然可以优化;)
我已经实现了一个数据包嗅探器,它解压缩以太网帧和arp头.我想用原始套接字制作它,因为我想了解这些标题中的每个字节,所以请不要scapy帮助:)
问题是,我不会得到任何arp回复数据包.它始终是操作码1和我
这是我的源代码:
import socket
import struct
import binascii
rawSocket = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.htons(0x0806))
while True:
packet = rawSocket.recvfrom(2048)
ethernet_header = packet[0][0:14]
ethernet_detailed = struct.unpack("!6s6s2s", ethernet_header)
arp_header = packet[0][14:42]
arp_detailed = struct.unpack("2s2s1s1s2s6s4s6s4s", arp_header)
print "****************_ETHERNET_FRAME_****************"
print "Dest MAC: ", binascii.hexlify(ethernet_detailed[0])
print "Source MAC: ", binascii.hexlify(ethernet_detailed[1])
print "Type: ", binascii.hexlify(ethernet_detailed[2])
print "************************************************"
print "******************_ARP_HEADER_******************"
print "Hardware type: ", binascii.hexlify(arp_detailed[0])
print "Protocol type: ", binascii.hexlify(arp_detailed[1])
print "Hardware size: ", binascii.hexlify(arp_detailed[2])
print "Protocol size: ", binascii.hexlify(arp_detailed[3])
print "Opcode: ", binascii.hexlify(arp_detailed[4])
print "Source …Run Code Online (Sandbox Code Playgroud) 我正在尝试导入我自己的BKS文件,其中包含我的自签名证书,但我遇到了okHTTP的问题.我想用bks文件做这个,我也通过sha512 /得到它.
我从几个教程中得到了这个代码,我知道问题在于,但无法修复它.
import android.content.Context;
import android.util.Log;
import java.io.InputStream;
import java.security.KeyStore;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManagerFactory;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class Pinning
{
Context context;
public static String TRUST_STORE_PASSWORD = "your_secret";
private static final String ENDPOINT = "https://api.yourdomain.com/";
public Pinning(Context c) {
this.context = c;
}
private SSLSocketFactory getPinnedCertSslSocketFactory(Context context) {
try {
KeyStore trusted = KeyStore.getInstance("BKS");
InputStream in = context.getResources().openRawResource(R.raw.mytruststore);
trusted.load(in, "mypass".toCharArray());
SSLContext sslContext = SSLContext.getInstance("TLS");
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(
TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(trusted);
sslContext.init(null, trustManagerFactory.getTrustManagers(), null); …Run Code Online (Sandbox Code Playgroud) android client-certificates pinning sslsocketfactory okhttp3
我在gdb中使用find命令时遇到问题.我想要做的是,在进程的内存中找到特定值,例如(964).我已经成功了,但我的解决方案需要很长时间!
我做了什么:
cat /proc/16617/maps
Run Code Online (Sandbox Code Playgroud)
比得到libc_malloc部分,我知道值是在那些.
7e43c000-7e451000 rw-p 00000000 00:00 0 [anon:libc_malloc]
7e452000-7e45b000 rw-p 00000000 00:00 0 [anon:libc_malloc]
7e470000-7e47c000 rw-p 00000000 00:00 0 [anon:libc_malloc]
7e47d000-7e490000 rw-p 00000000 00:00 0 [anon:libc_malloc]
7e4cc000-7e4dc000 rw-p 00000000 00:00 0 [anon:libc_malloc]
Run Code Online (Sandbox Code Playgroud)
我可以使用examine命令来调查每个值.这个工作正在进行,但需要花费很多时间.我想gdb中的find命令可以更快地执行此操作.
0x78b0e070: 0 829055599 57 59
0x78b0e080: 2 2024857820 2024857860 2024857900
0x78b0e090: 1970810756 4587520 71 0
0x78b0e0a0: 0 2024857756 2024857756 0
0x78b0e0b0: 0 27 1970675312 1
0x78b0e0c0: 1 2024857728 0 43
0x78b0e0d0: 23 23 0 1936029041
Run Code Online (Sandbox Code Playgroud)
由于几次运行,地址不匹配,但它正在工作:)
x/dw 0x78B0E19c --> Result 964
Run Code Online (Sandbox Code Playgroud)
我的find命令是这样的:
find 0x419a1000, …Run Code Online (Sandbox Code Playgroud) 我遇到了一个问题,直到现在还找不到解决方案!我已经实现了一个带有多个键的自定义键盘。每个键都有一个背景图像。我想更改按键本身的背景颜色,如下面的原始键盘所示:
我不想预览,我想在按下键时更改键本身的背景颜色。这是我的文件:
键盘文件
<?xml version="1.0" encoding="UTF-8"?>
<android.inputmethodservice.KeyboardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/keyboard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:keyPreviewOffset="10dp"
android:keyPreviewLayout ="@layout/preview"
android:keyTextColor="@color/colorAccent"
android:keyBackground="@drawable/keybackground"
android:background="#881f2023"
/>
Run Code Online (Sandbox Code Playgroud)
密钥背景.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/cleanbuttonnormal" />
<item
android:state_pressed="true"
android:drawable="@drawable/cleandeactivate" />
<item
android:state_checkable="true"
android:drawable="@drawable/cleanbuttonnormal" />
<item
android:state_checkable="true"
android:state_pressed="true"
android:drawable="@drawable/cleandeactivate" />
<item
android:state_checkable="true"
android:state_checked="true"
android:drawable="@drawable/cleanbuttonnormal" />
<item
android:state_checkable="true"
android:state_checked="true"
android:state_pressed="true"
android:drawable="@drawable/keybackground" />
</selector>
Run Code Online (Sandbox Code Playgroud)
背景颜色将更改为我的可绘制对象,但是当我按下键时,它不会更改为按下 - 状态。背景保持不变。请你帮助我好吗?
这是我的自定义键盘布局,启用预览以显示按钮被点击。
带有 8 的黑色按钮应该变成黄色。预览用于调试目的。