找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15152|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr) \  x$ @+ t3 l# D! |
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig$ A4 q$ J; C7 |/ ?2 k/ j; U
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# f" F7 Q! l4 B; z  [, }8 S1 U" tusage: himr <address> <value>. sample: himr 0x80040000 0x06 T) z3 F$ G& H+ @+ }- ?% Z# N
' O% y; _! y, d- y
7 f* I: S: e8 @, ?1 [4 n: @! d
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 I/ m/ B) z% I% T( H

- Y' ]; Y2 y. [7 G* X. W补充内容 (2012-3-8 09:42):! J' R9 R; \% E% |
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 x1 d' b2 K) ^+ F% t' J$ ^# i. h, b
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
3 c  t4 ?+ z' z0 q
4 N) A5 T! A* R2 [; @& zhimr <address> <value>. sample: himr 0x80040000 0x00 t* x- O. I, f, m

! F5 E$ l  G& x0 g例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。, ]; W1 y' B6 S; ~& O
himr 0x80040000 0x008 g- E" Q, E# a5 n0 `8 {
himr 0x80040001 0x11
7 G" h4 S  x, V' j) a( S& @himr 0x80040002 0x227 I6 }% n9 w2 _8 L$ }  \' ]
himr 0x80040003 0x33
# W. A5 H4 m, _2 k/ u4 bhimr 0x80040004 0x44: `+ m& J. @3 H7 a7 i) t
himr 0x80040005 0x558 H8 @7 A! F( M. t  f

/ I7 Y0 g  x3 Z  f" m# jSN也是类似。8 r/ G, B7 v$ R- Z

$ g$ v. u, }9 b" n1 U8 D现在主要是,谁告诉我们MAC和SN的地址?" r4 v2 S& ^6 q0 U
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ; c& k# C7 P; B1 d- M6 j: _
一直想找到运程修改MAC和SN的办法,苦于无解啊
; z7 ]3 h: Z6 r& \$ d# `4 l* P' {* Z
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& a9 E( _: ], L+ N# t* [9 ?
) P( g9 ~4 S) h  s* T修改的代码早有了。到今天不会编译。: K0 ~% d# Q8 J
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    3 n/ V7 ~, s( e1 E* g9 _. v: t
  2. #include <malloc.h>
    ; M& R' p# t* f/ C
  3. #include <sys/types.h>
    " Y1 D' b1 ?' z( z0 H  U5 I1 e
  4. #include <sys/stat.h>
    * f" z1 b' E9 h; H1 x$ r
  5. #include <sys/ioctl.h>
    / _+ _7 ]$ I' u4 r
  6. #include <stdio.h>
      l0 [( u4 v5 n: A# U
  7. #include <string.h>% l  `% e$ x3 ^2 C4 L% x; i

  8. ; Q# x# {: b$ j9 z6 e
  9. typedef struct {. t$ q3 N% I9 L& B5 W1 M: N
  10.         unsigned int        e2prom_cmd_sub_addr;
    ' _9 g' V$ s% e
  11.         unsigned int        sub_addr_count;. t$ k1 B; V" s5 B- v- B
  12.         unsigned char*        e2prom_cmd_data;
    2 \+ c6 g4 ]# v9 i- Y, d
  13.         unsigned int        data_count;
    , r: k( H- `8 w! t
  14. } e2prom_s_cmd;
    # @$ f* p6 p% ]7 G
  15. 3 f  S2 ]" [2 u' I+ U' R
  16. #define E2PROM_CMD_READ 1' O9 C: B, Q  v7 U! L6 ]  \* g
  17. #define E2PROM_CMD_WRITE 2; v. J) {7 w0 p" E* p5 l4 _. }
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ) Z. D: D0 N' c! J' i
  19. ! Z, {7 S. i+ _5 ~1 a4 l* W
  20. static int readparam(unsigned char *mac, unsigned char *stbid)* ^5 u: \! n7 ~3 c7 P" z' B. d' ]( N
  21. {/ {0 ]" S8 `  k9 [/ F0 t5 D" V
  22.         int fd, ret;- Z, p) B1 y; q$ M: Z3 |8 ?
  23.         e2prom_s_cmd arg;3 z( o$ p, S6 `6 R9 q
  24.         unsigned char buf[0x18];
    $ s1 E  \  h! U5 j5 D

  25. + B# X* H" l# d  t" O% Y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 P- a& H" t7 y7 m
  27.         if (fd  < 0) {
    $ O4 c* V0 ]( H- {* n9 t& f+ }
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);* O: ]" L1 E7 H) j( g- i" @0 h
  29.                 return -1;
    & U1 V  p+ K& l9 @
  30.         }6 F& o/ }1 q! v9 D9 _0 V
  31.         arg.sub_addr_count      = 2;9 m- T4 P. f) z7 D, o4 J
  32.         arg.data_count          = 0x18;. [, s& z2 I* ]5 n- \. n$ m
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 F( R) @" Y" Y0 ?
  34.         arg.e2prom_cmd_data     = buf;
    ) ^. U# H; S) W: M$ J
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    : ~9 v1 B/ {$ _9 \
  36.         if (ret != 0) {% M2 O( ]/ b  Z. D- _% f  G# P, j
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);$ [- l8 l( V; S1 Q
  38.                 return -1;- R7 o. {/ `- @7 w4 W+ ]) l
  39.         }
    8 P! U  U0 s0 s, T+ H! i) K9 r7 [6 A
  40.         memcpy(mac, buf, 6);; Z+ y2 G" w, ~6 f4 T9 m
  41.         memcpy(stbid, &buf[6], 18);
    7 o6 l* \% I( u+ I, R1 L! I
  42.         stbid[18] = '\0';
    # H& w; {  {8 K

  43. , X/ |. k8 b$ g( t$ O8 p
  44.         return 0;5 m3 @5 H4 o. z7 m- }
  45. }
    ! E1 y* v; _6 D# e  h) S
  46. * ^9 Z' R8 W3 E4 ]3 s- S1 ]  r
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    & x8 U: \7 S, i% ]. g1 Z) U
  48. {
    $ I2 C; S* F2 L
  49.         int fd, ret;% Q1 R. z* R1 V7 G
  50.         e2prom_s_cmd arg;
    % k* H) V: L7 g5 U- W8 O
  51.         unsigned char buf[0x18];
    % [! ~$ y. W& o% U1 U3 I

  52. * h( `: S, X0 o7 q4 `
  53.         memcpy(buf, mac, 6);7 {: Q2 T  p! z' e" ?6 n
  54.         memcpy(&buf[6], stbid, 18);( j, h5 j7 t* A! a
  55.         fd = open(E2PROM_DEVICE, O_RDWR);+ N; ?8 A- A6 I3 |" W( ~3 I
  56.         if (fd  < 0) {
    ! A) m7 N' ^1 p" `
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ l7 y0 B5 C7 j. z' Z
  58.                 return -1;- C5 D: J6 I0 v/ V
  59.         }: ?! D8 L; H+ l( v( A5 ]
  60.         arg.sub_addr_count      = 2;
    ; o9 V$ ]* {2 E& `( b
  61.         arg.data_count          = 0x18;) O) x  ^( l4 `
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! d! Y  v% z. n8 ]
  63.         arg.e2prom_cmd_data     = buf;
    1 c& I6 h0 @3 L% p4 r' E
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ; u  o5 k  J1 D$ {% v  T8 d* Q
  65.         if (ret != 0) {) w5 e; P: S* B7 c2 }" u1 k5 @( P
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % @: R2 F- Y6 i; {' \
  67.                 return -1;+ y( e+ S" ~$ Z* K
  68.         }
    9 V$ d- f; W* p/ s1 y$ x( F

  69. " r6 R& g+ g* d7 ^% p( }- B( F
  70.         return 0;1 z3 U  u  k! @* l" c4 x" I& P0 Y
  71. }# o% a+ j3 L  S# f

  72.   v" ]# b3 z! f0 F* d4 I
  73. int main()
    / A* d3 W9 X8 U& s) b
  74. {9 S4 e3 f4 Z0 J+ U3 z( K" V% V
  75.         char c;9 m( R+ \. h3 C
  76.         int i, macs[6];5 u/ R+ |! n/ p6 @9 b
  77.         unsigned char mac[6];# g( ~  C, c" B; i
  78.         unsigned char stbid[256];. y8 k0 L$ f/ H8 ~0 ]1 z
  79. # t4 N" M! P0 S  J: }6 h# N
  80.         if (readparam(mac, stbid) < 0)
    2 Y+ b1 p& G6 J5 y5 k: L* y
  81.                 return 1;
    : g. s/ b* S4 X. @- \. `" Y

  82. - \, g  }2 |0 ^( f
  83.         printf("Current parameters: \n");: @8 P) \2 m: d2 D  Q) K; ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 t# H. f8 Q/ Q0 ~  t/ m% Y/ E
  85.         printf("  STBID: %s\n", stbid);
    3 l( V7 V4 f( M$ e3 d( p
  86.         ' g# R5 K3 K- q& e6 i. X: \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");1 d( g8 E0 L/ N3 U& K  e; \4 Q6 g
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    9 h& j$ e+ C' x- C0 O+ a' {
  89.                 printf("Input MAC error\n");9 P) J% i6 T6 F: y. R7 g( _, \
  90.                 return 1;
    ( W) n# N" Q+ q8 Z
  91.         }# C' G5 G! J. q3 ]! b% [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];8 O- Q( m% }! K1 z
  93.         printf("\nPlease input new STBID: ");1 ], \- @; ^; |4 P5 i
  94.         scanf("%s", stbid);. m* s% Q* M7 f" B9 C) {* p+ H$ p0 _
  95.         if (strlen(stbid) != 18) {1 K+ \* p- r8 z6 U9 X
  96.                 printf("Invalid stbid\n");
    5 D4 s: e4 |  K. I( b
  97.                 return 1;9 v% q, o( o5 D  }
  98.         }
    # h9 o0 x& W. a( b2 j
  99.         printf("\nNew parameters: \n");
    ; j/ }8 x3 C$ h4 f
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' m7 j  S$ h( w* l* |
  101.         printf("  STBID: %s\n", stbid);
    3 l! f) J- h3 i% ?+ C
  102. 5 ~7 ]4 g: |$ I* c. u- A* x
  103.         printf("\nDo you want to change paramemters? (y/N) ");3 P; b* Z! D0 M# H, W
  104.         for (;;) {
    " o5 }( |% O- E
  105.                 c = getchar();
    , e! ~! Y3 c+ A
  106.                 if (c == 'y' || c == 'Y'): I* N/ V1 q& Y7 X
  107.                         break;
    9 X+ t* f0 \: I3 v; G
  108.                 if (c == 'n' || c == 'N') {% @. f9 P2 n% x) }: X0 G( J" t
  109.                         printf("\nAborted.\n");0 K+ n: s1 |- U
  110.                         return 1;( M5 S5 b: k$ W. P
  111.                 }
    6 Q& g( H9 w# h6 P* [" X' [2 R
  112.         }2 z: ^# {1 m7 d( ]) I
  113.         if (writeparam(mac, stbid) == 0) 9 g; v/ r: d3 ~& g- J# N; `
  114.                 printf("Parameters changed.\n");) h" j" c# [- r$ N2 `+ i
  115. 8 f; \1 X. a' w. x. ~
  116.         return 0;
    1 v. o: p0 S; w! s- k7 k, `
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24
. ^$ J* N  D" g0 _+ C在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

1 ^* B# {5 a  a) Y* g  i2 Q你用的编译命令行格式是什么?) x& r  M) V! g
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2025-12-30 05:43 , Processed in 0.038313 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表