查看: 17824|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , ^+ g0 V9 H# M4 [' B
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig1 I7 [0 T. z7 a& t4 L7 h) l
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
/ L, Q; {9 N3 D- |2 j/ `' B( uusage: himr <address> <value>. sample: himr 0x80040000 0x0- v; J) m1 i+ ?* k" C7 r
' M- [3 L5 Q7 J1 H, Y( V9 B) \; R
7 b4 m# S7 w% a( P2 D. @' l
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- m6 N; h: e0 V5 t: L% E: L* p) u0 b6 }: N( E
补充内容 (2012-3-8 09:42):
. \0 f, D- N3 Lhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 a) n9 g( F6 b4 _) U( s这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
1 b! {$ A' D) G4 R4 J
5 c! @+ |; j6 thimr <address> <value>. sample: himr 0x80040000 0x0
1 ~, d8 z# ^  h3 f; n. f7 l# c% }' P$ ^% C* Q
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& J) G3 N. ~/ T! s( [! Bhimr 0x80040000 0x001 M) K5 v' y3 M
himr 0x80040001 0x11) \" E9 r) N) m& c7 A6 T  v
himr 0x80040002 0x220 i9 r. Q/ l& F+ m9 Q# P. {
himr 0x80040003 0x33' p# b$ \" N5 Y
himr 0x80040004 0x44
9 _  v8 X1 k9 n) F/ |6 Thimr 0x80040005 0x55
; o" E" q! e8 }* A$ g, `& {$ L# e- I* Q
SN也是类似。$ O- P  b; H( U+ O: l  v2 L

! r% `9 Z) D$ D3 m% {现在主要是,谁告诉我们MAC和SN的地址?
9 `" t+ C8 n8 B. P6 E8 k0 m
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 3 e1 ?& L5 }* K* N/ R% t
一直想找到运程修改MAC和SN的办法,苦于无解啊
( R5 @6 r) n* i) P7 @* T1 l' w* X: z; F
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; x4 [7 H* c* i( D, o5 {- S. x( S* m# w3 K: {) o9 y
修改的代码早有了。到今天不会编译。
$ e* o5 @- @0 s' B$ h$ H7 C需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    . a4 ^/ ]+ J& ]5 s6 u- v# ~7 p3 R
  2. #include <malloc.h>+ V* w' D8 |. G' R. L) P, s
  3. #include <sys/types.h>( N7 h$ M) @9 z! p7 m4 X
  4. #include <sys/stat.h>
    4 e, @3 N2 x; c1 t2 P! Y
  5. #include <sys/ioctl.h>
    . Q, \" W' O  X6 e6 d& _
  6. #include <stdio.h>  K/ l: u, E( S8 A
  7. #include <string.h>( K3 q0 B7 ]% H& V  @' [
  8. ' A! F9 I; ]5 y, ]
  9. typedef struct {
    $ q6 h* j2 b/ D0 d+ {' F! a9 w
  10.         unsigned int        e2prom_cmd_sub_addr;6 ]# f8 L) j9 `1 i7 |" k
  11.         unsigned int        sub_addr_count;0 |. G9 D+ I0 R2 U$ {9 O$ P+ w( w
  12.         unsigned char*        e2prom_cmd_data;
    3 n* I1 Q/ n! P
  13.         unsigned int        data_count;; j# c5 ^9 V- q
  14. } e2prom_s_cmd;
    4 v6 G, ^" E6 T" Z( w

  15. 1 V% S% B' N2 x( g$ u! A
  16. #define E2PROM_CMD_READ 1
      L, ?  x9 P. _. l$ R3 O6 X$ f
  17. #define E2PROM_CMD_WRITE 2
    " ~8 G2 b, S, Q0 [* K, m: r7 b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 p' q1 U% @3 l: g

  19. 2 @2 e* ~1 P& P  ^2 m* s) l
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ( ^" H# t6 z3 f( I6 M% K" t
  21. {
    ( {/ Q0 E7 H/ _7 h, ~
  22.         int fd, ret;! C  i& t! w) W# S1 \% j( W4 t; }
  23.         e2prom_s_cmd arg;
    6 u4 u: w# |/ }* b7 U2 K. ?
  24.         unsigned char buf[0x18];6 x9 W) ~: {  b/ q

  25. - |. _8 z: ~! j  S# H/ X1 Z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# h; F# p9 @4 V8 j" M
  27.         if (fd  < 0) {; O% G$ K8 C' ?3 _) p6 V: [1 y* c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - g8 h, U/ A1 v. K' F6 L
  29.                 return -1;( ^) u( r2 f' [: Q& a
  30.         }
    " {' A' s: q) Q6 |. q+ G) ^
  31.         arg.sub_addr_count      = 2;. c0 \5 F) I. z" z, h* m- O
  32.         arg.data_count          = 0x18;
    ) n( w! u$ D% W
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    * n+ O/ ^# ]7 Y/ n+ J' i4 l: z1 X% i
  34.         arg.e2prom_cmd_data     = buf;9 a! K& a$ M. h: [' ?' `
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    & e3 }9 Q3 }1 \* m" W
  36.         if (ret != 0) {& _  n& i+ u1 [1 m% u. i6 W+ T1 P5 c2 K
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    4 A3 J8 r/ I8 p' v4 R, y2 o( _
  38.                 return -1;
    ! R+ H4 x( R0 u
  39.         }3 \, V5 j1 Q- h! W/ J0 D1 g
  40.         memcpy(mac, buf, 6);
    6 o6 S$ ]! v; b, U: z; [* I& U
  41.         memcpy(stbid, &buf[6], 18);
    1 G( z9 o: w! D' }5 D3 m! n) i
  42.         stbid[18] = '\0';
    / B* H, `- [9 Z& {

  43. 0 p& ^" e  _9 a1 |% h; |' ^4 f# |
  44.         return 0;8 {: B  S  p5 \$ s* h
  45. }' a4 Y, I3 Q" M5 h
  46. 1 t$ s' G* Q2 b5 R6 O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): D/ z0 d( a% r1 v4 y
  48. {" c2 G5 }! u* Z) m- ]
  49.         int fd, ret;
    ' G6 ]/ \( H1 u& g3 ]8 g
  50.         e2prom_s_cmd arg;
    ) L6 p2 y7 }% s3 X% f
  51.         unsigned char buf[0x18];* P4 F4 W7 S. T& \
  52. $ I) T4 Y7 _% z6 o( [8 {- H+ q  R
  53.         memcpy(buf, mac, 6);
    # d* S0 p; h# @. r& t
  54.         memcpy(&buf[6], stbid, 18);
    8 O( o# y, h. q  Y% q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 g- y) M9 g" L6 D7 u6 y6 u, n
  56.         if (fd  < 0) {$ B& X; x4 @3 A5 _" ~+ }
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 I3 N: X* K5 a. G# l
  58.                 return -1;
    4 [0 X: c' F+ @% D  ?* ^* h# t
  59.         }5 R$ c. M- N( w+ P: k
  60.         arg.sub_addr_count      = 2;. N4 X4 t3 V1 V4 ^
  61.         arg.data_count          = 0x18;, V  P+ i- v# S
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    0 a8 C1 M7 B( A4 K" x* R' c
  63.         arg.e2prom_cmd_data     = buf;/ V4 K" m; m( h. A+ ]2 t
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    1 s1 X* w' `, o/ H: ]
  65.         if (ret != 0) {( z" d+ c0 x+ R- ~
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
      A. Y3 v+ l" b7 j4 z
  67.                 return -1;
    3 n4 J4 X2 O3 w! I
  68.         }
    3 @4 h# M" G( a4 ~! k  t0 j; Q
  69. 7 I% a6 ~* `' E8 \! I
  70.         return 0;
    ; E: a& Z' j9 |. y
  71. }
    9 j; g! d: J) K; x4 ]
  72. + `8 n7 x, ~: W9 C  {2 A
  73. int main()5 h# L# L% F3 d6 Y
  74. {
    # }' r1 x2 Z7 V+ _- b( N
  75.         char c;  `" f; s- S% W' }& u7 z
  76.         int i, macs[6];
    + V$ \2 c9 d# O; Y7 q
  77.         unsigned char mac[6];7 C. g" d3 T) o, {, l5 y" \
  78.         unsigned char stbid[256];
    " _3 E7 y2 f/ Q5 a
  79. . F; I9 S* J* Q1 o, p3 W* ^
  80.         if (readparam(mac, stbid) < 0)
    1 K' i; V# E# t: @* j: U4 Y
  81.                 return 1;5 b/ D. K  m1 S6 \& S- e4 n

  82. / L1 U: O1 {) r( Q
  83.         printf("Current parameters: \n");
    ! Y7 r0 ?. Y3 \# E
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / e. P* [  n/ m% _! B
  85.         printf("  STBID: %s\n", stbid);0 w, {4 l; |# k8 H; D2 u4 O- p
  86.        
    , Q2 S2 k- `; P9 [
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# H& k& k" `% s4 F- u
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    # N/ A" Z# A9 K; n6 S5 N2 d( ]
  89.                 printf("Input MAC error\n");
    1 k- d: s% x1 K2 _0 f9 S' Z
  90.                 return 1;( ~# D5 q1 m7 M) |4 E& s0 q
  91.         }& E' h% x( w: @6 M, C; S: ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: \. y. }( w' T
  93.         printf("\nPlease input new STBID: ");
    + ~5 l0 m' }+ i1 y
  94.         scanf("%s", stbid);
    , H7 l. K. V; w; G6 K
  95.         if (strlen(stbid) != 18) {7 P1 G7 R5 M8 n5 @
  96.                 printf("Invalid stbid\n");  o. {$ ^! ]5 _) D
  97.                 return 1;; ]  m; A8 H' ~2 _
  98.         }
    6 v) n0 w: @! V6 H+ p
  99.         printf("\nNew parameters: \n");* k' L; A/ S5 v& H8 T0 u2 N0 S8 |
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( b! v6 o- M" B% x, [
  101.         printf("  STBID: %s\n", stbid);
    # o1 l# o( b7 A3 u; i

  102. 9 ^4 j' j) V0 b
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 i5 d: m% t0 G; T# l7 o
  104.         for (;;) {/ e6 v9 a9 j6 ]8 N( |
  105.                 c = getchar();
    5 `. v' J$ `. R4 ~
  106.                 if (c == 'y' || c == 'Y')
    ' A) z( N! L: x  u' P" f" j
  107.                         break;& v% Z5 T+ W. c2 P- W
  108.                 if (c == 'n' || c == 'N') {
    + ^' f( S) j# |% _: g2 A" x& ]
  109.                         printf("\nAborted.\n");
      Z. w' \! q7 p3 e
  110.                         return 1;
    4 @; i, R7 \: I4 p' b
  111.                 }
    5 B, ^* ^) ^. U, r
  112.         }; A# f, s7 f! c1 i% T# p
  113.         if (writeparam(mac, stbid) == 0) 7 j/ l) s$ }4 i4 |; N" E3 a
  114.                 printf("Parameters changed.\n");$ j" J/ t" ~- }9 {

  115. ( |2 ]  |- R. q
  116.         return 0;
    & p3 C. v; t6 ~
  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 . w1 b$ V  X* P& q# l3 N
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 U, X& j4 J1 t4 R你用的编译命令行格式是什么?! P7 b; ?2 X, ~9 q- \& H
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖返回顶部