소켓 데이터를 포워딩 하는데에 질문이 있습니다.

donaberkeley의 이미지

안녕하십니까,

SSL 패킷을 처음 client hello 부터 server certificate까지 모니터 하면서 데이터를 저장하고,
그 이후에 접속을 계속 유지하려 합니다.

연구용으로 하는 것이라 포트 443을 iptable에서 제가 직접 제작한 서버의 포트로 redirect 해서 접속을 받아와서,
브라우져에서 서버로 가는 데이터를 제가 relay해 주며
거기서 패킷을 읽어가며 server certificate까지 메세지를 저장하는 것 까진 좋은데,

그 이후에는 모니터링을 하지 않을 것이라 서버로 뚫린 소켓과 브라우져로 뚫린 소켓을 연결 해 주고 싶은데요,

1. 두 thread의 while(1) 안에서 recv, send를 각각 서버 -> 브라우져, 브라우져 -> 서버 로 하는 무식한 방법이 제일 먼저 생각이 나구요,

2. 좀 더 괜찮은걸론 select를 해서 데이터 온 fd에 대해 짝지를 array에 지정해두어서 보내는 방식이 있을텐데요

아예 소켓 두개를 연결시켜서 "니 알아서 해라" 라고 하는 방법은 없는지 해서 여쭈어 봅니다.

위의 두 경우에 언제 thread를 종료 시켜야 하는지, 언제 fd를 close 해 주고 자원을 ( 짝지은 테이블 ) 을 반환해야 하는지 잘 감이 안오네요

bushi의 이미지

소켓을 바로 연결해주는 방법은 모르겠고,
뒷북이나 좀 울리고 가겠습니다.

연구목적으로 패킷을 가로챈다면 NF_QUEUE 가 더 좋았을겁니다.
중계 서버를 만드는게 아니라 스니핑 어플을 만들면 되고,
필요없게 되면 iptable rule 에서 빼버리면 끝이니까요.
소켓 같은 것도 직접 다룰 필요가 없고, 패킷 유실이나 오염 같은 것도 걱정할 필요 없고요.

donaberkeley의 이미지

iptable에선 src, dest port 지정해서 DROP하고 바로 다시 허용하면 되는건가요?
바로 제 로컬 포트를 쓰진 않겟지만 다음에 그 포트를 이용할 접속을 위해...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.